Yapılandırılmış programlamaya bir örnek. Yapılandırılmış programlama. Programların netliği ve okunabilirliği

  • 31.10.2019

Bilgi aşaması başlangıcı

İnsanlığın gelişimi, en büyük zihinleri bazı süreçlerin otomasyonu hakkında düşünmeye giderek daha fazla teşvik etti. Programlama aşamasının başlangıcı, çeşitli kaynaklar tarafından 19. yüzyılın başlarından 20. yüzyılın ortalarına kadar olan aralıktaki çeşitli dönemlere atfedilir. On yıllar boyunca, kaynak kodu yazmak için birçok teknik ortaya çıktı. Her biri ilke ve fikirlerinde temelde farklıdır. Geçen yüzyılın 70'lerinde ortaya çıkan yapılandırılmış programlamayı düşünün.

biraz tarih

Bu tekniğin ortaya çıkmasından önce, montajcı çok yaygındı - en basit komutlarla çalışan ve daha sonra bir bilgisayar tarafından doğrudan anlaşılabilen makine koduna çevrilen bir dil. Bu yaklaşım yalnızca nispeten küçük programlar yazmak için kullanılmıştır. Ayrıca bir başkasının kodunu anlamak imkansız değilse de son derece zordu. Ancak yeni metodolojinin ortaya çıkmasıyla birlikte geliştirme süreci çok daha hızlı ilerledi.

Yapılandırılmış programlamanın temel ilkeleri

Yapısal yaklaşımın ana noktalarını ayrıntılı olarak ele alalım.

1. Kaynak kodu modüler bir yapıya sahiptir. Bu, programın aslında daha küçük birimlere - işlevler ve prosedürlere - bölündüğü anlamına gelir. Bu rutinler geliştirmenin herhangi bir yerinden çağrılabilir. Prosedürler, bir ada sahip olan ve algoritma tarafından belirtilen belirli eylemleri gerçekleştiren vurgulanmış kod bölümleridir. Fonksiyonlar, bu yeteneklere ek olarak, bazı değişkenlerin hesaplanmasını gerçekleştirir ve ayrıca programın ana bölümünde kullanılabilecek bir dönüş değerine sahiptir. Ek olarak, bazı diller özyinelemeyi destekler - "kendisinden" bir çağrı. Bu, problem çözme için etkili olabilir, ancak genellikle bir döngüye yol açar.

2. Yukarıdan aşağıya veya aşağıdan yukarıya. Yapılandırılmış programlama birkaç yönü destekler. Kaynak kodu aracılığıyla amaçların, hedeflerin ve bunların uygulanmasının sıralı tanımı - yukarıdan aşağıya bir yaklaşım. Bu teknik, yazılı programı incelemek ve darboğazları tespit etmek açısından en anlaşılırdır. Ancak, başka bir taraf daha var - aşağıdan yukarıya yaklaşım. Genellikle programın tam algoritması henüz geliştirilmediğinde kullanılır, ancak belirli eylemleri uygulayan ayrı alt rutinler yazmak zaten mümkündür.

3. Kontrol elemanları. Yapılandırılmış programlama, bazı "montaj" yaklaşımlarından kurtulmuştur. Düşük seviyeli dillerde, izlemesi ve kontrolü oldukça zor olan koşulsuz bir atlama (goto) sıklıkla kullanılır. Programlamaya yönelik yapılandırılmış yaklaşım, bunun yerine şu öğeleri kullanır: döngü, koşul ve sıra.

Programlama dilleri

Bu metodolojinin gelişmesiyle birlikte programlama dilleri de ortaya çıkmaya ve gelişmeye başlamıştır. Yapısal yaklaşım, Pascal (Pascal), C (C) ve daha eski olan Algol (Algol) gibi iyi bilinenler tarafından uygulanır.

sonsöz

Bir zamanlar, bilgi teknolojisi ortamında yapılandırılmış programlama oldukça yaygındı ve o zamanlar en zor görevlerin çözülmesine yardımcı oldu. Ancak hayat durmuyor ve teknik ilerleme yeni fikirler gerektiriyor.

Yapılandırılmış programlama - bir programı belirli kurallara sıkı sıkıya bağlı kalarak tasarlamak, yazmak ve test etmektir.

Yapılandırılmış programlamanın temel amacı, programcıların üretkenliğini artırmaktır. Diğer hedefler şunlardır:

- programın kötü yapısından kurtulmak;

- yazarların katılımı olmadan anlaşılabilecek, korunabilecek ve değiştirilebilecek programlar ve belgeler oluşturun (kural olarak bakım ve değişiklik maliyeti, geliştirme maliyetinden 3-5 kat daha fazladır).

Yapılandırılmış programlama (veya adım adım detaylandırma yöntemi) şunları içerir:

1. Yukarıdan aşağıya tasarım yöntemi. Aynı zamanda "yukarıdan aşağıya" veya "genelden özele" yöntemi olarak da adlandırılır. Bir görevi birkaç basit parçaya veya alt görevlere bölmeyi içerir. Alt görevlerin tasarımı bağımsız olacak şekilde ayırt edilirler. Aynı zamanda, noktaları vurgulanan kısımlar olan tüm sorunu çözmek için bir plan hazırlanır. Plan, baş ve alt alt görevlerin ve bunlar arasındaki bağlantıların belirlendiği işlevsel bir diyagram (hiyerarşi diyagramı, alt sıralama) biçiminde grafiksel olarak yazılır, yani. arayüz. Ayrıca, her bir alt görevin düzgün çalışması için hangi ilk verileri (veya değerleri) aldığını ve hangi sonuçları ürettiğini belirler. Ardından, her bir alt görev detaylandırılır. Ayrıntı adımlarının sayısı isteğe bağlı olabilir. Detaylandırma, algoritmanın bu parçasının nasıl programlanacağı netleşene kadar devam eder.

2. Yapılandırılmış programlama. Yapılandırılmış programlama fikrinin uygulanması, herhangi bir karmaşıklığın doğru bir programının, veri işleme kurallarını belirleyen üç temel (mantıksal veya kontrol) yapının bir bileşimi olan mantıksal bir yapı ile temsil edilebileceği gerçeğine dayanmaktadır. : art arda (doğrusal), dallanma (koşullu atlama) ve tekrar (döngü).

3. Uçtan uca yapısal kontrol. Çeşitli yapıların programcıları olan uygulayıcıların çalışmalarının sonuçlarının düzenli olarak kontrol edilmesi ve onaylanmasıdır. İhtiyacı, geliştiricilerin geliştirilen programların maliyetini düşürme arzusuyla belirlenir. Bunun için bir ön koşul, ortaya çıkan hataların ve uyumsuzlukların erken tespiti ve düzeltilmesidir.

Bu nedenle, "yukarıdan aşağıya" veya "genelden özele" olarak adlandırılan bir algoritma ve programı derleme yöntemi, formüle edilmiş sorunu, bir bütün olarak orijinal programdan ayrı olarak işlenmesi daha kolay olan daha basit bir alt görev dizisine indirgemekten oluşur. Orijinal problemden giderek daha fazla basit alt problemin sıralı seçimi, orijinal problemi çözmek için algoritmanın, seçkin alt problemlerin algoritmalarının bir bileşimi olarak temsil edilmesini sağlar.



Birlikte ele alınan (seçilen) alt görevlerin algoritmaları, kontrolünün bir gönderici algoritması tarafından devralınması gereken bir sistem oluşturur. O ana (veya baş) olarak adlandırılır ve diğerleri astlardır. Seviyeyi ve ilişkiyi, hem baş hem de astlar olan algoritmaların etkileşimini gösteren bir diyagrama işlevsel bir diyagram denir - bu, algoritmaların hiyerarşisinin bir diyagramıdır.

Slave algoritmasının bir girişi ve bir çıkışı olmalıdır. Bunun için bir hedef belirlemek ve izin verilen giriş değerleri (resmi parametreler-değerler), olası öz (yerel, dahili) nesneler ve olası yan (dalga) etkileri (izin verilen aralığın ötesine geçen parametreler) belirlemek gerekir. değerleri, parametre değerlerinin değiştirilmesi, özellikle sonuçların alınması ve/veya veri çıkışı). Bu nedenle, bir alt algoritma, bir bağımsız alt görevi uygulayan bir algoritmanın işlevsel diyagramının bir öğesidir.

Basit bir eylem olarak düzenlenen algoritmanın bir parçası, yani. bir giriş ve bir çıkış ile bir fonksiyon bloğu olarak adlandırılır.


Bir giriş, belirli bir parçanın yürütülmesinin her zaman aynı eylemle başladığı anlamına gelir. Bir çıkış, algoritmanın bu bölümünün tamamlanmasından sonra her zaman aynı eylemin başladığı anlamına gelir.

Bir algoritma fonksiyon bloğu, basit bir blok türüdür.

Algoritma, veri işleme sırasını belirlediğinden, bir yandan işleme eylemlerini, diğer yandan kontrol akışı adı verilen sıralarını içermelidir. Bir kontrol akışı aşağıdaki özelliklere sahip olabilir:

1) her blok yürütülür;

2) her blok bir defadan fazla yürütülmez.

Algoritmanın yapısal organizasyonu ile üç tip kontrol akışı ayırt edilebilir.

Bu özelliklerin her ikisinin de yürütüldüğü bir kontrol akışına doğrusal denir.


Doğrusal bir akışla birbirine bağlanan birkaç bloğun tek bir işlevsel blokta birleştirilebileceği açıktır.

2. Kontrol akışının dallanması. Bu tipte özellik (2) sağlanır, ancak özellik (1) tatmin edilmez.

Bu tür kontrol akışı, kontrol edilen mantıksal koşula bağlı olarak iki işlevsel bloktan birinin yürütülmesini düzenler.

3. Döngüsel kontrol akışı. Yürütülmesinin mantıksal koşulu doğru kaldığı sürece, işlevsel bloğun çoklu tekrarlarını düzenler.

Bu tür kontrol akışında, özellik (1) yürütülür, ancak özellik (2) yürütülmez.


Bir algoritma, dikkate alınan üç tür kontrol akışının (temel algoritmik yapılar) bir kombinasyonuysa, buna yapısal algoritma denir.

Yapısal algoritmaların yapısal olmayan algoritmalara göre bir takım avantajları vardır:

1. Algoritmanın anlaşılırlığı ve kolay algılanması;

2. doğrulanabilirlik (ana yapılardan herhangi birini kontrol etmek için, içerdiği fonksiyonel blokların doğru olduğundan emin olmak yeterlidir);

3. değiştirilebilirlik.

yapısal teorem: herhangi bir algoritma, yapılandırılmış bir algoritmaya indirgenebilir.

Yapı teoreminin programlama pratiği için önemi, yapılandırılmış bir programlama yönteminin bu temelde geliştirilmiş ve yaygın olarak kullanılması gerçeğinde yatmaktadır. Yöntem, karmaşık programların yapımında modülerlik ilkesine dayanmaktadır. Ayrıca, her bir yazılım modülü standart bir işlevsel blok (üç temel yapıdan oluşur) şeklinde düzenlenir ve veri işleme için yalnızca bir işlevi yerine getirir. Modüller, programın geri kalanından bağımsız olarak hata ayıklamaya (hataları bulma ve ortadan kaldırma) izin veren ve hem ayrı bir modülün hem de bir bütün olarak programın nispeten basit değiştirilebilirliğini sağlayan belirli bir özerkliğe sahiptir. Yapılandırılmış programlamanın etkinliği özellikle karmaşık programların geliştirilmesinde fark edilir - modüler ilke, genel bir görevi, her biri bağımsız olarak oluşturulabilen ve hata ayıklanabilen bileşen ve nispeten özerk parçalara ayırmanıza olanak tanır. Elbette böyle bir bölümleme, modüllerin giriş ve çıkış parametrelerinin eşleştirilmesini gerektirir.

Algoritma geliştirmeye yönelik yapısal bir yaklaşıma dayalı olarak, bu süreçteki tipik adımlar şunlardır:

1. Algoritmanın genel tasarımının tanımı;

2. Görevin resmileştirilmesi;

3. Algoritmanın genelleştirilmiş bir şemasının geliştirilmesi;

4. Algoritmanın bireysel bloklarının geliştirilmesi;

5. Blokların yerleştirilmesi;

6. Yapı bloklarını kullanma olasılığının belirlenmesi;

7. Mantıksal kontrol bloklarının geliştirilmesi;

8. Algoritma şemasının optimizasyonu;

9. Parametrelerin netleştirilmesi;

10. Makine ömrünün tahmini.

Programlama paradigmaları

yapısal programlama- Programın hiyerarşik bir blok yapısı şeklinde sunulmasına dayanan yazılım geliştirme metodolojisi. 1970'lerde E. Dijkstroy ve diğerleri tarafından önerildi.

Bu metodolojiye uygun olarak, herhangi bir program, goto operatörü kullanılmadan üç temel kontrol yapısından oluşturulur: sıra, dal, döngü; ek olarak, alt programlar kullanılır. Bu durumda programın geliştirilmesi "yukarıdan aşağıya" yöntemiyle adım adım gerçekleştirilir.

Yapılandırılmış programlama metodolojisi, bilgisayarlarda çözülen görevlerin artan karmaşıklığının ve buna bağlı olarak yazılımın karmaşıklığının bir sonucu olarak ortaya çıktı. 1970'lerde, programların hacmi ve karmaşıklığı öyle bir düzeye ulaştı ki, geleneksel (yapılandırılmamış) yazılım geliştirme, uygulama ihtiyaçlarını karşılamayı bıraktı. Programlar düzgün bir şekilde sürdürülemeyecek kadar karmaşık hale geldi. Bu nedenle, geliştirme sürecini ve program yapısını sistematize etmek gerekiyordu.

Yapılandırılmış yazılım geliştirme metodolojisi, "70'lerin en güçlü resmileştirmesi" olarak kabul edildi.

Bertrand Meyer'e göre, "Dijkstroy'un öncülük ettiği programlama devrimi, program tasarımına sistematik, rasyonel bir yaklaşım sunan yapılandırılmış programlama olarak bilinen bir harekete yol açtı. Yapılandırılmış programlama, nesne programlama da dahil olmak üzere programlama metodolojisinde yapılan her şeyin temeli haline geldi."

Üniversite YouTube'u

    1 / 5

    ✪ Yapılandırılmış programlama. Temel prensipler

    ✪ Sıfırdan Pascal [h1]. İlk program.

    ✪ Ders 7. Yazma / yazma çıkış operatörleri. Basit program. Pascal Programlama / Pascal

    ✪ Programlama Temelleri - # 5 - Aritmetik ve Boole İfadeleri

    ✪ 003. Mantıksal sınıflandırma algoritmaları - K.V. Vorontsov

    Altyazılar

Tarih

Başlangıçta, yapılandırılmış programlama fikri goto operatörü ile bağlantılı olarak doğdu ve kullanımının uygunluğu konusunda şüpheler vardı. Bu tür şüpheler ilk kez 1959 başlarında Kopenhag'da Algol dili üzerine bir toplantıda Heinz Zemanek tarafından dile getirildi. Ancak bu performans dikkat çekmedi ve hiçbir sonucu olmadı. Edsger Dijkstra şöyle hatırlıyor: "Bir dereceye kadar, o zaman bu fikrin önemini takdir edemediğim için kendimi suçluyorum."

On yıl sonra, Dijkstra'nın Mart 1968'de ünlü "Zararlı Olarak Kabul Edilen Açıklamaya Git" mektubunu yayınlamasıyla durum çarpıcı bir şekilde değişti. Bu, programlamanın daha da geliştirilmesi üzerinde gözle görülür bir etkisi olan gerçekten tarihi bir belgedir.

Belgenin kaderi çok ilginç. Gerçek şu ki, Dijkstra makaleye tamamen farklı bir başlık verdi: "GO TO açıklamasına karşı argümanlar" (GO TO Açıklamasına Karşı Bir Dava).

Bununla birlikte, yayın sırasında anlaşılmaz bir şey oldu - makale bir nedenden dolayı gizemli bir şekilde "Editöre Mektup" a dönüştü ve önceki isim gizemli bir şekilde ortadan kayboldu. Gerçekten ne oldu? Dijkstra, makalenin gizemli bir şekilde bir mektuba dönüşmesini uzun yıllar sonra, 2001'de, ölümünden bir yıl önceye kadar açıklamadı.

Hedef

Yapılandırılmış programlamanın amacı, büyük ve karmaşık yazılım sistemlerinin geliştirilmesi de dahil olmak üzere programcıların üretkenliğini artırmak, hata sayısını azaltmak ve yazılımların hata ayıklamasını, değiştirilmesini ve bakımını basitleştirmektir.

Bu hedef, programların artan karmaşıklığı ve büyük yazılım projelerinin geliştiricilerinin ve yöneticilerinin 1960'larda ve 1970'lerde yazılım araçlarının geliştirilmesiyle bağlantılı olarak ortaya çıkan sorunlarla başa çıkamaması nedeniyle belirlendi.

spagetti kodu

Yapılandırılmış programlama, özellikle, kodun okunmasındaki zorluklardan kaynaklanan programlardaki dağınıklığı ve hataları, algı ve analiz için uygun olmayan programın sistematik olmayan kaynak kodunu ortadan kaldırmak için tasarlanmıştır. Bu tür metinler genellikle "spagetti kodu" olarak tanımlanır.

Spagetti kodunda hata ayıklanabilir ve doğru ve yüksek performansla çalıştırılabilir, ancak bakımı ve geliştirilmesi son derece zordur. Spagetti kodunu yeni işlevler eklemek için hassaslaştırmak bazen yeni hatalar için önemli bir potansiyel taşır. Bu nedenle, spagetti için ana tedavi olan kodu yeniden düzenleme, neredeyse kaçınılmaz hale geliyor.

deyime git

1970'lerden beri, goto operatörü sistematik ve büyüyen bir eleştirinin merkezinde yer almaktadır. Bir programın kaynak kodundaki goto ifadesinin yanlış ve düşüncesiz kullanımı kafa karıştırıcı, okunamayan bir "spagetti kodu"na yol açar. Böyle bir kodun metninden, yürütme sırasını ve parçaların birbirine bağımlılığını anlamak neredeyse imkansızdır.

Bu bakış açısı ilk olarak Edsger Dijkstra'nın "Operatöre Gitmek Zararlı Olarak Kabul Edilir" başlıklı makalesine yansıdı. Dijkstra, bir program kodunun kalitesinin, içindeki goto ifadelerinin sayısıyla ters orantılı olduğunu fark etti. Makale yaygın olarak tanındı ve bunun sonucunda goto operatörünün kullanımına ilişkin görüşler önemli ölçüde revize edildi. Yapılandırılmış Programlama Üzerine Notlar'da Dijkstra, goto içermeyen kodlar için biçimsel doğruluğu doğrulamanın çok daha kolay olduğu gerçeğini doğruladı.

Yürütme hiyerarşisini (yapılandırılmış programlama paradigması) ihlal edebileceğinden ve bu nedenle programın yapısını yansıtmak için tasarlanan girinti her zaman doğru ayarlanamayacağından, goto kodunu biçimlendirmek zordur. Ayrıca, goto ifadesi, derleyiciler tarafından kontrol yapılarının optimizasyonuna müdahale eder.

Bazı goto kullanımları, program yürütme mantığında sorunlar yaratabilir:

  • Bir değişken bir yerde başlatılırsa (bir değer alırsa) ve daha sonra kullanılırsa, başlatmadan sonra, ancak kullanımdan önce bir noktaya geçiş, daha önce değişken için ayrılan bellekte bulunan değerin olmasına yol açacaktır. tahsis anı (ve genellikle keyfi ve rastgele olan).
  • Kontrolün döngü gövdesi içinden geçirilmesi, döngü başlatma kodunun veya ilk koşul kontrolünün atlanmasına neden olur.
  • Benzer şekilde, kontrolün bir prosedüre veya işleve aktarılması, başlatmanın gerçekleştirildiği ilk bölümünün (yerel değişkenler için bellek tahsisi) atlanmasına yol açar.

Goto ifadesine karşı argümanlar o kadar güçlü çıktı ki, yapılandırılmış programlamada oldukça istenmeyen olarak görüldü. Bu, yeni programlama dillerinin tasarımına yansır. Örneğin, Java ve Ruby'de git yasaktır. Bir dizi modern dilde, yine de, goto kullanımının haklı olduğu bu nadir durumlarda verimlilik nedenleriyle bırakılmıştır. Böylece goto, tarihin mimari açıdan en çok düşünülmüş dillerinden biri olan Ada'da varlığını sürdürmüştür.

Bununla birlikte, bu operatörün korunduğu üst düzey dillerde, kullanımına genellikle katı kısıtlamalar getirilerek, kullanımının en tehlikeli yöntemlerinin kullanılması engellenir: örneğin, kontrolü bir döngü dışından aktarmak yasaktır. , prosedür veya işlev içinde. C++ standardı, değişken başlatmanın geçişe geçişini yasaklar.

Yapılandırılmış programlama teoremi

Teorem, İtalyan matematikçiler Corrado Böhm ve Giuseppe Jacopini tarafından formüle edildi ve kanıtlandı. 1965'te İtalyanca ve 1966'da İngilizce olarak yayınladılar. Teoremle birlikte, Boehm ve Yakopini'nin makalesi, Boehm tarafından oluşturulan P ′ ′ programlama dili örneğini kullanarak yapısal olmayan algoritmaları yapısal algoritmalara dönüştürmek için yöntemler tanımladı. P ′ ′ dili, goto ifadesi olmayan ilk Turing tam programlama dilidir.

Boehm-Jacopini teoremi, karmaşık bir dilde ve alışılmadık bir gösterimle yazılmıştır. Modern terminoloji ve gösterimi kullanırsak, şu şekli alacaktır:

Blok diyagram şeklinde verilen herhangi bir program, üç kontrol yapısı kullanılarak gösterilebilir:

  • sıra - ile belirtilir: f SONRA g,
  • dallanma - ile belirtilir: EĞER p SONRA f ELSE g,
  • Çevrim - ile belirtilir: p DO f EKEN,

burada f, g - bir giriş ve bir çıkış içeren blok diyagramlar,

P - koşul, THEN, IF, ELSE, WHILE, DO - anahtar kelimeler.

Açıklama. f THEN g formülü, önce f programının yürütüldüğü, ardından g programının yürütüldüğü anlamına gelir.

Boehm ve Jacopini, yapılandırılmış programlama terimini kullanmadılar. Bununla birlikte, onlar tarafından kanıtlanan teorem (ve farklı yazarlar tarafından müteakip varyasyonları) daha sonra "Yapılandırılmış programlama teoremi", "Yapı teoremi", "Yapılandırma teoremi" olarak adlandırıldı.

Yapılandırılmış programlamanın ilkeleri

Yapılandırılmış programlamanın oluşumu ve gelişimi Edsger Dijkstra adıyla ilişkilidir.

İlke 1. goto operatörünü kullanmaktan kaçınmalısınız.

İlke 2. Herhangi bir program üç temel kontrol yapısından oluşur: sıra, dal, döngü.

İlke 3. Bir programda, temel kontrol yapıları keyfi bir şekilde iç içe yerleştirilebilir. Başka bir akış kontrolü sağlanmaz.

İlke 4. Yinelenen program parçaları şu şekilde biçimlendirilebilir: alt programlar(prosedürler ve işlevler). Aynı şekilde (alt rutinler şeklinde), tekrarlanmasalar bile mantıksal olarak bütünleşik program parçaları tasarlayabilirsiniz.

İlke 5. Mantıksal olarak eksiksiz her talimat grubu bir blok olarak biçimlendirilmelidir. Bloklar, yapılandırılmış programlamanın temelidir.

Bir blok, mantıksal olarak gruplandırılmış bir kaynak kodu parçasıdır; örneğin, bir programın kaynak kodunda arka arkaya yazılmış bir dizi talimat. konsept engellemek talimat bloğunun tek bir talimat olarak ele alınması gerektiği anlamına gelir. Bloklar, değişkenlerin ve fonksiyonların kapsamını sınırlamaya yarar. Bloklar boş veya iç içe olabilir. Blok sınırları kesin olarak tanımlanmıştır. Örneğin, bir if ifadesinde, bir blok BEGIN..END (Pascal'da) veya kaşlı ayraçlar (...) (C'de) veya girinti (Python'da) ile sınırlandırılır.

İlke 6. Yukarıdaki yapıların hepsinin bir girişi ve bir çıkışı olmalıdır.

Keyfi kontrol yapıları (örneğin bir spagetti tabağındaki gibi) isteğe bağlı sayıda girdi ve çıktıya sahip olabilir. Kendimizi bir girdi ve bir çıktı ile kontrol yapıları ile sınırlayarak, basit ve güvenilir mekanizmalar kullanarak herhangi bir karmaşıklıkta keyfi algoritmalar oluşturma fırsatını elde ederiz.

İlke 7. Programın geliştirilmesi "yukarıdan aşağıya" yöntemiyle adım adım gerçekleştirilir. (yukarıdan aşağıya yöntemi) .

Yukarıdan aşağıya yöntemi

İlk olarak, her bir tutarlı mantıksal metin parçası yerine, bu parçayı yürütecek bir alt programa bir çağrının eklendiği ana programın metni yazılır. Gerçek, çalışan alt programlar yerine, programa sahte parçalar eklenir - fişler ki, basitçe söylemek gerekirse, hiçbir şey yapmayın.

Daha kesin olarak, saplama, değiştirilen parçanın (modülün) arayüz gereksinimlerini karşılar, ancak işlevlerini yerine getirmez veya yalnızca kısmen yerine getirir. Daha sonra saplamalar, programlama planına uygun olarak gerçek tamamen işlevsel parçalara (modüller) değiştirilir veya değiştirilir. Uygulama sürecinin her aşamasında, önceden oluşturulmuş programın alt seviyeye göre doğru çalışması gerekir. Ortaya çıkan program kontrol edilir ve hata ayıklanır.

Ayrıca, Yapılandırılmış Programlamaya Önsöz'de Tony Hoare'nin yapılandırılmış programlama ilkelerinin hem yukarıdan aşağıya hem de aşağıdan yukarıya programlamaya eşit olarak uygulanabileceğini belirttiğine dikkat edilmelidir.

alt program

Bir alt program, yapılandırılmış programlamanın temel bir unsurudur. Başlangıçta, alt programlar, programları işgal edilen bellek miktarı açısından optimize etmenin bir yolu olarak ortaya çıktı - bir programda aynı kod bloklarını tekrarlamayı değil, onları bir kez tanımlamayı ve gerektiğinde çağırmayı mümkün kıldı. Şimdiye kadar, alt programların bu işlevi yardımcı hale geldi, ana amaçları programı anlamayı ve sürdürmeyi kolaylaştırmak için yapılandırmaktır.

Bir eylem kümesini bir alt yordama tahsis etmek ve onu gerektiği gibi çağırmak, tipik bir çözümü olan bir integral alt görevi mantıksal olarak seçmenize olanak tanır. Bu eylemin (bellek tasarrufunun yanı sıra) aynı türdeki yinelenen eylemlere göre bir avantajı daha vardır. Bir alt programda yapılan herhangi bir değişiklik (hata düzeltme, optimizasyon, işlevsellik geliştirme) otomatik olarak tüm çağrılarına yansıtılırken, yineleme durumunda her değişiklik, değiştirilen kodun her oluşumunda yapılmalıdır.

Bir alt programa gerçekleştirilen tek bir eylem dizisinin tahsis edildiği durumlarda bile, bu haklıdır, çünkü programı oluşturan integral kod bloklarının boyutunu küçültmeye, yani programı daha anlaşılır hale getirmeye ve gözlemlenebilir.

Yapılandırılmış Programlamanın Faydaları

Yapılandırılmış programlama ilkelerini takip etmek, programların metinlerini, hatta oldukça büyük olanları normal olarak okunabilir hale getirdi. Programların anlaşılması çok daha kolay hale geldi, program sadece yazarı tarafından değil, aynı zamanda diğer programcılar tarafından da kolayca anlaşılabildiğinde, normal bir endüstriyel modda programlar geliştirmek mümkün hale geldi. Bu da geliştirme ekiplerinin çabalarıyla o dönem için yeterince büyük olan yazılım sistemlerinin geliştirilmesini ve kaçınılmaz kadro değişiklikleri karşısında bile bu komplekslere uzun yıllar eşlik etmesini mümkün kılmıştır.

  1. Yapılandırılmış programlama, aynı spesifikasyona göre bir program oluşturma seçeneklerinin sayısını önemli ölçüde azaltmanıza olanak tanır, bu da programın karmaşıklığını önemli ölçüde azaltır ve daha da önemlisi, diğer geliştiricilerin onu anlamasını kolaylaştırır.
  2. Yapılandırılmış programlarda, mantıksal olarak bağlı operatörler görsel olarak daha yakındır ve zayıf bağlantılı olanlar daha uzaktadır, bu da blok diyagramlar ve diğer grafiksel görüntüleme algoritmaları olmadan yapmayı mümkün kılar (aslında, programın kendisi kendi blok diyagramıdır).
  3. Yapılandırılmış programları test etme ve hata ayıklama süreci büyük ölçüde basitleştirilmiştir.

Programların netliği ve okunabilirliği

Yapılandırılmış programlama, programların netliğini ve okunabilirliğini büyük ölçüde artırır. Edward Yourdon şöyle açıklıyor:

Yapısal olmayan birçok programın davranışı, genellikle herhangi bir organize süreçten çok Brown hareketine daha yakındır. Listeyi okumaya yönelik herhangi bir girişim, bir kişinin böyle bir programda genellikle birkaç ifadenin yürütüldüğü ve ardından kontrolün birkaç sayfa aşağıdaki bir noktaya aktarıldığı konusunda umutsuzluğa neden olur. Orada birkaç operatör daha yürütülür ve kontrol yine rastgele bir noktaya aktarılır. Burada diğer bazı operatörler gerçekleştirilir, vb. Bu tür birkaç programdan sonra okuyucu her şeyin nasıl başladığını unutur. Ve düşünce trenini kaybeder.

Yapısal programlar, aksine, tutarlı bir şekilde organize edilme ve yürütülme eğilimindedir.

Yapılandırılmış programların okunabilirliğindeki gelişme, bir goto ifadesinin bulunmamasının, programın kontrol transferlerinden kaynaklanan kesintiler olmadan yukarıdan aşağıya okunmasına izin vermesi gerçeğiyle açıklanmaktadır. Sonuç olarak, bu veya bu program parçasını değiştirmek için gerekli koşulları hemen (bir bakışta) keşfedebilirsiniz.

2B yapılandırılmış programlama

Programların üretimi için R-teknolojisi veya "iki boyutlu programlama teknolojisi" de yaratıldı. R-programlama teknolojisinin grafik sistemi GOST 19.005-85, GOST R ISO / IEC 8631-94 ve uluslararası ISO 8631H standartlarında sabitlenmiştir.

R-teknoloji programlamanın yazarı, Fizik ve Matematik Bilimleri Doktoru, Profesör Igor Velbitsky, "program yapısı" kavramını gözden geçirmeyi önerdi. Ona göre “yapı çok boyutlu bir kavramdır. Bu nedenle, doğrusal metinler (operatör dizileri) kullanılarak bu kavramın eşlenmesi, yapılandırılmış yaklaşımın avantajlarını pratik olarak ortadan kaldırır. Görsel aygıtın ve insan düşünme aygıtının muazzam ilişkilendirme yetenekleri, yapısal görüntülerin tek tip bir sembol dizisi biçiminde tanınması için pratik olarak boşuna kullanılır.

İki boyutlu yapılandırılmış programlamanın metodolojisi, klasik tek boyutlu (metin) yapılandırılmış programlamadan önemli ölçüde farklıdır.

Yapılandırılmış programlama fikirleri, bilgisayar grafikleri henüz mevcut olmadığında ve algoritmacı ve programcının ana aracı tek boyutlu (doğrusal veya kademeli) metin olduğunda geliştirildi. Bilgisayar grafiklerinin ortaya çıkmasından önce, klasik yapılandırılmış programlama metodolojisi vardı. en iyisi karar.

Bilgisayar grafiklerinin ortaya çıkmasıyla durum değişti. Etkileyici grafik araçlarını kullanarak, üç tür temel (metin) kontrol yapısal yapısını değiştirmek, geliştirmek ve tamamlamak ve ayrıca anahtar kelimeleri tamamen terk etmek, sonra, başka, durum, anahtar, ara, süre, yap, tekrar etmek mümkün oldu. , e kadar, foreach, devam, döngü, çıkış, ne zaman, son vb. ve bunları kontrol grafikleriyle değiştirin, yani iki boyutlu yapılandırılmış programlama kullanın.

Önemli bir sorun, modern programlamanın karmaşıklığı ve bunun üstesinden gelmenin yollarını aramaktır. Teknik bilimler adayı doçent Evgeny Pyshkin'e göre, yapılandırılmış programlamanın yalnızca ana "yapısal üçlüye" (doğrusal dizi, dallanma ve döngü) dayalı program metinleri geliştirmek için bir araç olarak incelenmesi yetersizdir ve aslında, avantajları yapısal yaklaşım analizi. Yazılımın temel karmaşıklığının üstesinden gelme sürecinde en önemli araç tasarım ve programlamanın görselleştirilmesidir.

Ayrıca bakınız

Notlar (düzenle)

  1. Meyer B. Sınıfı hissedin. Nesneler ve sözleşmelerle iyi programlamayı öğrenin. - Per. İngilizceden - M.: Ulusal Açık Üniversite INTUIT: BINOM. Bilgi laboratuvarı, 2011. - 775p. - S. 208 .-- ISBN 978-5-9963-0573-5
  2. E. Dijkstra. Goto ifadesi zararlı olarak kabul edilir
  3. Dijkstra E. Zararlı Olarak Kabul Edilen Açıklamaya Git // ACM İletişimleri, Cilt 11, No. 3, Mart 1968, s. 147-148. - Bilgisayar Makineleri Derneği, Inc.
  4. Ayrıca Dijkstra Arşivlerinden materyallere bakın. E.W. Dijkstra Arşivi. Edsger W. Dijkstra'nın el yazmaları. - Bilgisayar Bilimleri Bölümü The University of Texas at Austin
  5. Dijkstra Arşivlerinden El Yazması EWD1308.
  6. Dijkstra Arşivlerinden EWD1308 el yazmasının transkript. "Yapılandırılmış Programlama Üzerine Notlar"a yol açan şey - Nuenen, 10 Haziran 2001. - Bilgisayar Bilimleri Bölümü. Austin, ABD'deki Texas Üniversitesi
  7. Linger R., Mills H., Witt B. Yapılandırılmış programlama teorisi ve pratiği. - Per. İngilizceden - M.: Mir, 1982 .-- 406s. - S. 7.
  8. John Vlissides, Kyle Brown, Gerard Meszaros AntiPatterns: Hayatta Kalma Rehberi. ...
  • Yapısal
    • Sorumluluğun ayrılması:
  • Şablon: Programın hiyerarşik bir blok yapısı şeklinde sunumuna dayalı yazılım. XX yüzyılın 70'lerinde E. Dijkstroy tarafından önerildi, N. Virt tarafından geliştirildi ve desteklendi.

    Bu metodolojiye göre

    1. Herhangi bir program, üç tür temel yapıdan oluşturulmuş bir yapıdır:
      • sıralı yürütme- program metninde yazıldığı sırayla işlemlerin tek bir şekilde yürütülmesi;
      • dallanma- belirli bir koşulun yerine getirilmesine bağlı olarak, iki veya daha fazla işlemden birinin bir kerelik yürütülmesi;
      • Çevrim- belirli bir koşul yerine getirildiği sürece aynı işlemin birden fazla yürütülmesi (döngüyü devam ettirme koşulu).
      Bir programda, temel yapılar keyfi bir şekilde iç içe yerleştirilebilir, ancak işlem sırasını kontrol etmek için başka hiçbir araç sağlanmaz.
    2. Yinelenen program parçaları (veya tekrar etmeyen, ancak mantıksal olarak integral hesaplama bloklarını temsil eden) sözde şeklinde oluşturulabilir. alt rutinler (prosedürler veya işlevler). Bu durumda, ana programın metninde, alt programa yerleştirilen parça yerine talimat eklenir. alt program çağrısı... Böyle bir talimat yürütüldüğünde, çağrılan alt program yürütülür, ardından program yürütme, alt program çağırma komutunu izleyen talimatla devam eder.
    3. Programın geliştirilmesi "yukarıdan aşağıya" yöntemiyle adım adım gerçekleştirilir.

    İlk olarak, her bir tutarlı mantıksal metin parçası yerine, bu parçayı yürütecek bir alt programa bir çağrının eklendiği ana programın metni yazılır. Gerçek, çalışan alt programlar yerine, programa hiçbir şey yapmayan "saplamalar" eklenir. Ortaya çıkan program kontrol edilir ve hata ayıklanır. Programcı, alt rutinlerin doğru sırayla çağrıldığına (yani, programın genel yapısının doğru olduğuna) ikna olduktan sonra, saplama alt rutinleri sırayla fiilen çalışan alt rutinlerle değiştirilir ve her bir alt rutinin geliştirilmesi, ana programla aynı şekilde. Kaldırılmayacak tek bir "fiş" kalmadığında geliştirme sona erer. Bu sıralama, geliştirmenin her aşamasında, programcının kendisi tarafından görülebilen ve anlaşılabilen çok sayıda parçayla aynı anda ilgilenmesini ve programın tüm yüksek seviyelerinin genel yapısının doğru olduğundan emin olmasını sağlar. Programı sürdürürken ve değişiklik yaparken, hangi prosedürlerin değiştirilmesi gerektiği netleşir ve bunlar programın doğrudan bunlarla ilgili olmayan kısımlarını etkilemeden yapılır. Bu, değişiklik yaptığınızda ve hataları düzelttiğinizde, programın şu anda programcının dikkatinin dışında kalan bir kısmının bozulmamasını sağlamanıza olanak tanır.

    Yapılandırılmış programlama teoremi:

    Ana makale: Bohm-Jacopini teoremi

    Algoritmanın herhangi bir şeması, iç içe geçmiş başlangıç ​​ve bitiş bloklarının bir bileşimi olarak temsil edilebilir, koşullu ifadeler if, o zaman, else, bir önkoşullu döngüler (while) ve ek mantıksal değişkenler (bayraklar) olabilir.
    Bu teorem, 1966'da İtalyan matematikçiler C. Bohm ve J. Jacopini tarafından formüle edildi ve bize goto operatörünü kullanmaktan nasıl kaçınacağımızı anlatıyor.

    Tarih

    Yapılandırılmış programlama metodolojisi, bilgisayarlarda çözülen görevlerin artan karmaşıklığının ve buna karşılık gelen yazılımın karmaşıklığının bir sonucu olarak ortaya çıktı. 1970'lerde, programların hacmi ve karmaşıklığı öyle bir düzeye ulaştı ki, daha önceki zamanlarda norm olan programların "sezgisel" (yapılandırılmamış veya "refleks") gelişimi artık uygulama ihtiyaçlarını karşılamıyor. Programlar düzgün bir şekilde sürdürülemeyecek kadar karmaşık hale geldi, bu nedenle geliştirme sürecinin ve programların yapısının bir tür sistemleştirilmesi gerekliydi.

    Yapılandırılmış programlama yaklaşımının geliştiricilerinden gelen en güçlü eleştiri, o zamanlar neredeyse tüm programlama dillerinde mevcut olan GOTO operatörü (koşulsuz atlama operatörü) idi. Program metninde rastgele geçişlerin yanlış ve düşüncesiz kullanımı, metinden yürütme sırasını ve parçaların birbirine bağımlılığını anlamak neredeyse imkansız olan kafa karıştırıcı, zayıf yapılandırılmış programlara (spagetti kodu denir) yol açar.

    Yapılandırılmış programlama ilkelerini takip etmek, programların metinlerini, hatta oldukça büyük olanları normal olarak okunabilir hale getirdi. Programların anlaşılması çok daha kolay hale geldi, program sadece yazarı tarafından değil, aynı zamanda diğer programcılar tarafından da kolayca anlaşılabildiğinde, normal bir endüstriyel modda programlar geliştirmek mümkün hale geldi. Bu da geliştirme ekiplerinin çabalarıyla o dönem için yeterince büyük olan yazılım sistemlerinin geliştirilmesini ve kaçınılmaz kadro değişiklikleri karşısında bile bu komplekslere uzun yıllar eşlik etmesini mümkün kılmıştır.

    Yapılandırılmış yazılım geliştirme metodolojisi, "70'lerin en güçlü resmileştirmesi" olarak kabul edildi. O zamandan beri "yapısal" kelimesi sektörde moda haline geldi ve gerekli olan ve olmayan her yerde kullanılmaya başlandı. “Yapısal tasarım”, “yapısal test”, “yapısal tasarım” vb. konularda çalışmalar yapıldı. Genel olarak, 90'larda olan ve şimdi "nesne", "nesne yönelimli" ve "elektronik" terimleriyle gerçekleşen aynı şey oldu.

    Yapılandırılmış programlamanın faydalarından bazıları şunlardır:

    1. Yapılandırılmış programlama, aynı spesifikasyona göre bir program oluşturma seçeneklerinin sayısını önemli ölçüde azaltmanıza olanak tanır, bu da programın karmaşıklığını önemli ölçüde azaltır ve daha da önemlisi, diğer geliştiricilerin onu anlamasını kolaylaştırır.
    2. Yapılandırılmış programlarda, mantıksal olarak bağlı operatörler görsel olarak daha yakındır ve zayıf bağlantılı olanlar daha uzaktadır, bu da blok diyagramlar ve diğer grafiksel görüntüleme algoritmaları olmadan yapmayı mümkün kılar (aslında, programın kendisi kendi blok diyagramıdır).
    3. Yapılandırılmış programları test etme ve hata ayıklama süreci büyük ölçüde basitleştirilmiştir.

    Ayrıca bakınız

    Bağlantılar


    Wikimedia Vakfı. 2010.

    • Mahajanapada
    • Deve

    Diğer sözlüklerde "Yapılandırılmış programlama"nın ne olduğunu görün:

      Yapılandırılmış programlama- aşağıdaki ilkelere dayalı yazılım sistemlerinin geliştirilmesi için metodoloji ve teknoloji: yukarıdan aşağıya programlama; modüler programlama Bu durumda algoritma ve programların mantığı üç ana yapıyı kullanmalıdır: sıralı ... ... finansal kelime hazinesi

      yapılandırılmış programlama- struktūrinis programavimas durumları T sritis automatika atitikmenys: angl. yapılandırılmış kodlama; yapılandırılmış programlama vok. strukturelle Programmierung, f rus. yapılandırılmış programlama, n; yapılandırılmış programlama, pranc.…… Automatikos terminų žodynas

      Yapılandırılmış programlama- 46. Yapılandırılmış programlama Yapılandırılmış programlama Kaynak: GOST 19781 90: Bilgi işleme sistemleri için yazılım. Terimler ve tanımlar … Normatif ve teknik dokümantasyon terimlerinin sözlük referans kitabı

      Programlama- Bu makalenin tamamen yeniden yazılması gerekiyor. Tartışma sayfasında açıklamalar olabilir. Bu terimin başka anlamları vardır, bkz. Programlar ... Wikipedia

      PROGRAMLAMA- 1) bir program, bir eylem planı hazırlama süreci. 2) Programlama yöntem ve tekniklerini inceleyen bilişim bölümü. Biraz alışma ile, bir disiplin olarak P. ikiye ayrılır: teorik, çalışma matı. programların soyutlamaları (nesneler olarak ... ... Fiziksel ansiklopedi

      Prototip tabanlı programlama- Prototipik programlama, bir sınıf kavramının olmadığı ve yeniden kullanımının (kalıtım) bir prototip nesnesinin mevcut bir örneğini klonlayarak yapıldığı bir nesne yönelimli programlama stilidir. ... ... Wikipedia

      Paradigma (programlama)- Programlama paradigması, program yazma stilini belirleyen bir fikir ve kavramlar topluluğudur. Paradigma öncelikle temel program birimi ve programın modülerliğini sağlama ilkesi tarafından belirlenir. Bu birim olarak ... Wikipedia

      Bilgisayar Programlama- Yazılım Geliştirme Yazılım Geliştirme Süreç Adımları Analizi | Tasarım | Uygulama | Test | Uygulama | Çevik Modellerin / Yöntemlerin Bakımı | temiz oda | yinelemeli | Scrum | RUP | MSF | sarmal | ... Vikipedi

      yapılandırılmamış programlama- Programın hiyerarşik bir blok yapısı şeklinde sunulmasına dayanan yapısal programlama yazılım geliştirme metodolojisi. XX yüzyılın 70'lerinde E. Dijkstroy tarafından önerildi, N. Virt tarafından geliştirildi ve desteklendi. ... Vikipedi'de

      Bileşen Odaklı Programlama- Programlama paradigmaları Ajan yönelimli Bileşen yönelimli Birleştirici Bildirimsel (Zorunlu ile zıttır) Kısıtlamalar İşlevsel Veri akışı Tablo yönelimli (elektronik tablolar) Reaktif ... Wikipedia

    Kitabın

    • Programlama disiplini Dijkstra E., Kitap, Sovyet okuyucusunun kitaplarını Rusça'ya çevirdiği bilinen programlama alanındaki en büyük yabancı uzmanlardan biri tarafından yazılmıştır (örneğin, "Yapısal ... Kategori: Matematik ve Fen Bilimleri Dizi: Yayıncı: YoYo Medya, 2177 ovmak için satın alın
    • Programlama. Algoritma ve Programlamanın Temelleri. Ders Kitabı, A. N. Pylkin, B. G. Trusov, N. I. Parfilova, Ders kitabı, 230100 'Bilişim ve Bilgisayar Mühendisliği' (nitelik 'lisans') eğitimi alanında Federal Devlet Eğitim Standardına uygun olarak oluşturulmuştur. ... Kategori:

    İNCELEME DERSİNİN ÖZETİ

    uzmanlık öğrencileri için
    T1002 "Bilgi teknolojisi yazılımı"

    (A.M. Kadan, Ph.D., doçent)

    Soru numarası 34.
    Yazılım geliştirmenin ana metodolojilerinin karakterizasyonu

    1. Programlama metodolojisi ve teknolojisi.

    2. Zorunlu programlama.

    2.1. Modüler programlama.

    2.2. Yapılandırılmış programlama.

    3. Nesne yönelimli programlama yöntemi.

    Programlama metodolojisi ve teknolojisi

    İşte ana tanımlar.

    programı - yazarı tarafından piyasaya sürülmeye uygun tamamlanmış ürünüzerinde geliştirildiği sistem üzerinde.

    Yazılım - herkesin çalıştırabileceği bir programtest edin, test edin, düzeltin ve geliştirin. Böyle bir program olmalıgenel bir üslupla yazılmış, baştan sona test edilmiş ve eşlik edilmişayrıntılı belgeler. (Şu anda moda olan telif hakkı kavramını dikkate alarak, burada açıklığa kavuşturmak gerekir - herhangi bir kişi, bir kez sahip olmak programların kaynak kodlarıyla çalışma kararı)

    Yazılım paketi - işlev ve format, iyi tanımlanmış arayüzler ve birlikte tutarlı bir birlikte çalışabilir program setibüyük problemleri çözmek için eksiksiz bir araç oluşturur.

    Yaşam döngüsü yazılım, konsept oluşturma anından ve kullanımının sona ermesiyle biten tüm geliştirme ve operasyon dönemidir.

    metodoloji programlama - yazılımın yaşam döngüsünde uygulanabilir ve ortak bir felsefi yaklaşımla birleştirilmiş bir dizi yöntem.

    Şu anda yaygın olarak bilinen dört programlama metodolojisinden - zorunlu, nesne yönelimli, mantıksal, işlevsel - size ne öğretildiğini düşünün - zorunlu ve nesne yönelimli programlama metodolojileri.

    teknoloji programlama çalışmaları teknolojik süreçler ve geçişlerinin sırası - aşamalar(bilgi, yöntem ve araçları kullanma).

    Teknolojileri iki boyutta karakterize etmek uygundur - dikey (temsil eden süreçler) ve yatay (temsil eden aşamalar).

    İşlem - bazı girdi verilerini çıktıya dönüştüren birbiriyle ilişkili bir dizi eylem. Süreçler bir dizi eylemden oluşur ve her eylem bir dizi görevden oluşur. Dikey boyut, süreçlerin statik yönlerini yansıtır ve iş süreçleri, eylemler, görevler, performans sonuçları ve icracılar gibi kavramlarla çalışır.

    Sahne - bu aşama için belirlenen gereksinimler tarafından belirlenen, belirli bir ürünün piyasaya sürülmesiyle sona eren ve belirli bir zaman çerçevesiyle sınırlı olan yazılım geliştirme faaliyetlerinin bir parçası. Aşamalar, genellikle yinelemeli olan aşamalardan oluşur. Bazen aşamalar, aşama adı verilen daha büyük zaman dilimlerinde gruplandırılır. Dolayısıyla yatay boyut zamanı temsil eder, süreçlerin dinamik yönlerini yansıtır ve aşamalar, aşamalar, aşamalar, yinelemeler ve kontrol noktaları gibi kavramlarla çalışır.

    teknolojik yaklaşım farklı yazılım sınıflarına ve geliştirme ekibinin özelliklerine odaklanan aşamaların ve süreçlerin birleşiminin özellikleriyle belirlenir.

    Tekrar şekle dönersek, bu durumda her aşamada tek bir işlem gerçekleştirilir. Tabii ki, büyük programlar geliştirirken ve oluştururken, böyle bir şema yeterince doğru değildir (ve basitçe gerçekçi değildir). Ancak, yaşam döngüsünün yönetimine yönelik diğer birçok teknolojik yaklaşımın temeli olarak alınabilir.

    Zorunlu programlama

    Zorunlu programlama, tarihsel olarak, tarafından kullanılan ilk programlama metodolojisidir. her biri "Ana akım" programlama dillerinden herhangi birinde programlayan bir programcı - Temel, paskal, C.

    Uzun süredir tek donanım mimarisi olarak kalan klasik von Neumann modeline dayanmaktadır. Zorunlu programlama metodolojisi şu prensiple karakterize edilir: hesap makinesinin durumunun adım adım sıralı değişimi... Aynı zamanda, değişiklik yönetimi tamamen tanımlanmış ve tamamen kontrol edilebilir.

    Yöntemler ve kavramlar

    · Yöntem durum değişiklikleri- sos'ta sıralı bir değişiklikten oluşurtoyaniy. Yöntem, konsept tarafından desteklenmektedir. algoritma.

    · Yöntem akış kontrolü- adım adım kontrolden oluşuryönetmek. Yöntem, konsept tarafından desteklenmektedir. yürütme akışı.

    Hesaplamalı model. Bir hesap makinesi modern bir bilgisayar olarak anlaşılırsa, durumu tüm bellek hücrelerinin değerleri, işlemcinin durumu (geçerli komutun işaretçisi dahil) ve tüm eşleştirilmiş aygıtlar olacaktır. Tek veri yapısı, doğrusal olarak sıralanmış adresleri olan bir hücre dizisidir ("adres" - "değer" çiftleri).

    Olarak matematiksel model Zorunlu programlama, algoritmaları tanımlamak için bilgisayar çağının başlangıcında önerilen soyut bir hesaplama cihazı olan Turing-Post makinesini kullanır.

    Sözdizimi ve anlambilim. Bu hesaplama modelini destekleyen diller, bir hesap makinesinin durumları arasındaki geçişlerin işlevini tanımlamanın bir yoludur. Ana sözdizimsel kavramları Şebeke... İlk grup, hiçbirinin bağımsız bir operatör olmadığı basit operatörlerden oluşur (örneğin, atama operatörü, koşulsuz atlama operatörü, prosedür çağrısı vb.). İkinci grup, diğer operatörleri yeni, daha büyük bir operatörde birleştiren yapılandırılmış operatörlerdir (örneğin, bileşik operatör, seçme operatörleri, döngü operatörleri vb.).

    Geleneksel yapılandırma aracı- alt program (prosedür veya fonksiyon). Alt programların parametreleri ve yerel tanımları vardır ve yinelemeli olarak çağrılabilirler. Fonksiyonlar, çalışmalarının sonucu olarak değerler döndürür.

    Belirli bir metodoloji, sonuçlarını bir sonraki problemin çözümünde kullanmak için bir problemin çözülmesini gerektiriyorsa, tipik yaklaşım aşağıdaki gibi olacaktır. İlk olarak, ilk problemi çözen algoritma çalıştırılır. Çalışmasının sonuçları, aşağıdaki algoritma tarafından bilinen ve onun tarafından kullanılan özel bir bellek konumunda saklanır.

    Zorunlu programlama dilleri. Zorunlu Programlama dilleri Sıralı yönergeleri kullanarak verileri adım adım işleyin ve bunları çeşitli verilere uygulayın. İlk algoritmik programlama dilinin 1945-1946'da Konrad Zuse tarafından geliştirilen Plankalkuel (plan hesabından) olduğuna inanılmaktadır.

    Çoğu 50'lerin sonlarında - XX yüzyılın 70'lerinin ortalarında oluşturulan en ünlü ve yaygın zorunlu programlama dilleri şekilde gösterilmiştir. Geçen yüzyılın 80'li ve 90'lı yıllarına karşılık gelen şekildeki boş alana dikkat edin. Bu, yeni paradigmalara hayranlık duyma dönemidir ve zorunlu diller pratik olarak o zaman ortaya çıkmamıştır.

    Görevler sınıfı.Zorunlu programlama, herhangi bir talimatın sıralı yürütülmesinin doğal olduğu sorunları çözmek için en uygundur. Buna bir örnek modern donanım yönetimidir. Hemen hemen tüm modern bilgisayarlar zorunlu olduğundan, bu metodoloji makul ölçüde verimli yürütülebilir kod üretilmesine izin verir. Sorunun karmaşıklığı arttıkça, zorunlu programlar daha az okunabilir hale gelir.

    Yalnızca zorunlu programlama metodolojisi temelinde yazılmış gerçekten büyük programların (örneğin derleyiciler) programlanması ve hatalarının ayıklanması uzun yıllar alabilir.

    Literatür önerileri. Zorunlu programlamanın özellikleri çok sayıda kitapta açıklanmıştır. Bunlar en sistematik olarak "Evrensel programlama dilleri. Semantik yaklaşım" [Kalinin, Matskevich 1991] çalışmasında sunulmaktadır.

    Modüler programlama

    Modüler programlama - tüm programın bir grup bileşene bölündüğü bir programlama yöntemidir.modüller ve her birinin kendi kontrollü boyutu vardır, hattabir amaç ve dış çevre ile ayrıntılı bir arayüz. Modülerliğe tek alternatif, monolitik bir programdır, ancakrahatsız, rahatsız. Böylece, okurken en ilginç sorunii modülerlik - modüllere bölünme kriterinin belirlenmesi.

    Modüler programlama kavramları. Kalbinde Modüler programlamanın arkasında üç ana kavram vardır:

    Bilgi saklama ilkesi Parnassus. Her bileşen gizlenir tek tasarım çözümü, yani modül bilgileri gizlemeye yarar oluşumlar. Yazılım geliştirme yaklaşımı, ilk önce özellikle yapılması zor veya değişmesi muhtemel tasarım kararlarının bir listesi oluşturulur. Daha sonra belirlenirher biri belirtilenlerden birini uygulayan ayrı modüller shenii.

    modülerlik aksiyomu Cowen. Modül - bağımsız bir yazılım birimibelirli bir işlevi yerine getirmek için hizmet veren niş program ve programın geri kalanıyla iletişim için. Yazılımünite aşağıdaki koşulları karşılamalıdır:

    blokaj organizasyonlar,yani bir program birimini çağırma yeteneğiherhangi bir yuvalama derecesine sahip bloklardan tsu;

    sözdizimsel izolasyon, yani, syn metninde modülün vurgulanmasıtaksi unsurları;

    anlamsal bağımsızlık, yani, bulunduğu yerden bağımsızlıkgram birimi denir;

    veri topluluğu, yani kendi verilerinizin saklanmasıher aramada;

    tanımın eksiksizliği, yani, program biriminin bağımsızlığı.

    Montaj programlama Tseitin. Modüller yazılımsaldır programın oluşturulduğu pici. Üç ana önmodüler programlama için tesisler:

    bağımsız bir program bilgisi biriminin tahsisi için çabalamak.İdeal olarak, herhangi bir fikir (algoritma) çerçevelenmelidir. modül olarak;

    büyük gelişmelerin örgütsel olarak parçalanması ihtiyacı;

    modüllerin paralel yürütülmesi olasılığı (paralel bağlamındakişisel programlama).

    Modül tanımları ve örnekler. İşte bir modülün bazı ek tanımları.

    • Modültarafından erişilebilen bir komutlar topluluğudur. isim.

    · Modül -sınır öğeleri ve bir tanımlayıcı (muhtemelen toplu) olan bir program ifadeleri topluluğudur.

    Modülün işlevsel özellikleri şunları içermelidir:

    • izin vermesi gereken girdilerinin sözdizimsel bir özelliği kullanılan programlama dilinde sözdizimsel olarak inşaona doğru itiraz;

    · modül tarafından her biri için gerçekleştirilen işlevlerin anlambiliminin bir açıklaması girdiler.

    Modül çeşitleri. Üç ana modül türü vardır:

    1) "Küçük" (işlevsel) kural olarak, bir tane uygulayan modüllerherhangi bir özel işlev. Hemen hemen tüm programlama dillerindeki temel ve en basit modül, bir prosedür veya işlev.

    2) "Ortalama" (bilgi amaçlı) kural olarak, birkaç uygulayan modüllerbu modülün dışında bilinmeyen olarak kabul edilen aynı veri yapısı (bilgi nesnesi) üzerindeki işlemlere veya işlevlere. Programlama dillerinde "ortalama" modül örnekleri:

    a)programlama dilinde görevlerAda;

    B)programlama dilinde küme CLU;

    C)C++ programlama dillerinde sınıflar ve Java.

    3) "Büyük" (mantıksal) bir dizi "orta" veya"küçük" modüller. Programlama dillerinde "büyük" modül örnekleri karne:

    a)Modula-2 programlama dilinde modül;

    B)programlama dillerinde paketlerAda ve Java.

    Kit modül özellikleri Myers [Myers 1980] tarafından önerildi. Aşağıdakilerden oluşurtasarım özellikleri:

    1) modül boyutu;

    Modül 7 (+/- 2) yapıya sahip olmalıdır (örneğin,paket için işlevler veya işlevler).Bu sayı, psikologların ortalama operatör hakkındaki fikirlerine dayanarak alınmıştır.insan hafızasının nom tamponu. İnsan beynindeki sembolik görüntüler "parçalar" halinde birleştirilir - bunlar arasındaki gerçekler ve bağlantılar, ezberlenir ve bir bütün olarak geri kazanılabilir. Herhangi bir zamanda, bir kişi olabilir En fazla 7 parçayı terk edin.

    Modül (fonksiyon) 60 satırı geçmemelidir. Sonuç olarak, olabilirancak bir çıktı sayfasına sığdırın veya bir monitör ekranında kolayca görüntüleyin.

    2) modülün gücü (bağlanabilirliği);

    Küresel veriler hakkında küresel olduğunu belirten bir hipotez var.veriler zararlı ve tehlikelidir. Küresel veri fikri kendini böyle itibarsızlaştırıyor koşulsuz atlama operatörü fikri ile aynıgit... Verinin yerimodüllerin okunmasını ve anlaşılmasını ve çıkarılmasını kolaylaştırır programdan.

    Bağlantı (güç) modül (uyum ) parçalarının bağımsızlığının bir ölçüsüdür.Modülün bağlanabilirliği ne kadar yüksek olursa, o kadar iyi, daha fazla bağlantıprogramın geri kalanı için kendi içinde saklanır. Türler ayırt edilebiliraşağıdaki bağlantılar.

    fonksiyonelbağlantı. Gerçek işlevsel bağlantılı modül herhangi bir belirli işlevi çağırır ve aynı tip bağlantılarla 2 modüle bölünemez.

    Tutarlı bağlantı. Böyle bir bağlantıya sahip bir modül bağımsız işlevler gerçekleştiren ardışık parçalara bitler, ancakortaklaşa tek bir işlevi gerçekleştirmek. Örneğin aynı modül önce değerlendirme, sonra revizyon için kullanılabilir. veri işleme.

    Bilgi(iletişimsel) bağlantı. Bilgi içeren modül Noah bağlantısı, birkaç işlemi gerçekleştiren bir modüldür. veya aynı veri yapısı üzerindeki işlevler (bilgi nesne) bu modülün dışında bilinmeyen olarak kabul edilir. Bu bilgisoyut türleri uygulamak için iletişim bağlantısı kullanılır veri.

    Bilgi açısından kararlı hale getirme araçlarınınmodüller erken programlama dillerinde eksikti (örneğin, FORTRAN ve hatta dilin orijinal versiyonunda paskal ). Ve ancak daha sonra, program dilinde mutabakat Ada, bir paket ortaya çıktı - bilgi kararlı bir modül belirtmenin bir yolu.

    3) modülü diğer modüllerle birleştirmek;

    El çantası(kaplin ) modülün diğer modüllerden göreceli bağımsızlığının bir ölçüsüdür.modüller. Bağımsız modüller yeniden çalışma olmadan değiştirilebilir diğer modüller. Modülün yapışması ne kadar zayıfsa, o kadar iyidir. Bir kez düşününkişisel debriyaj türleri.

    Bağımsızmodüller idealdir. Modüller hiçbir şey bilmiyorbirbirimiz hakkında. Bunları bilerek bu tür modüllerin etkileşimini düzenleyebilirsiniz.arayüz ve çıktıyı buna göre yönlendirmek bir modül diğerinin girişine. Bunu başarmak için Yapışma zordur ve verilere göre yapışma nedeniyle gerekli değildir.(parametrik bağlantı) yeterince iyi.

    El çantası buna göre(parametrik) veri olduğunda bir birleştirmedirmodüle parametrelerinin değerleri olarak veya bunun bir sonucu olarak iletilir.bazı işlevleri hesaplamak için başka bir modülü çağırmak. Buzincirleme türü, erişildiğinde programlama dillerinde uygulanırişlevlere (prosedürlere). Bu kavramanın iki çeşidi tanımlanmıştırverilerin doğasıdır.

    · El çantası basit veri öğeleriyle.

    · El çantası veri yapısı tarafından. Bu durumda, her iki modül dedahili veri yapısının farkında olun.

    4) rutin (bağımsızlık, önceki isteklerden bağımsızlık nii) modülü.

    Rutin- bu, modülün önceki çağrılardan bağımsızlığıdır(arka plandan). Sonuç ise, bir modül rutin olarak adlandırılacaktır. botlar yalnızca iletilen parametre sayısına bağlıdır (istek sayısına değil).

    Modül çoğu durumda rutin olmalıdır, ancak şu durumlarda da vardır:modülün geçmişi kaydetmesi gerektiğinde. Rutinin derecesini seçerken Dulia üç öneri kullanır.

    · Çoğu durumda, modül rutinini, yani modülden bağımsız hale getiririz.önceki aramalar

    · Geçmişe bağlı modüller yalnızca bu modüllerde kullanılmalıdır.veri birleştirmenin gerekli olduğu durumlar.

    · Geçmişe bağlı modül spesifikasyonu açıkçabu bağımlılık, kullanıcılarınböyle bir modülün davranışını tahmin etme yeteneği.

    Yapılandırılmış programlama.

    Yapılandırılmış programlama (SP) bir seçenek olarak ortaya çıktı yazılım geliştirmenin ZORLUĞUNU azaltma problemini çözme.

    Programlama çağının başlangıcında, bir programcının işi hiçbir şey tarafından düzenlenmiyordu. Çözülmesi gereken görevler kapsam ve ölçek olarak farklılık göstermedi, ağırlıklı olarak makine odaklı diller ve Assembler gibi benzer diller kullanıldı, geliştirilen programlar nadiren önemli bir boyuta ulaştı ve zaman konusunda katı kısıtlamalar getirilmedi. onların gelişimi.

    Programlamanın gelişmesiyle birlikte, çözümü için programcı gruplarının katılımıyla giderek daha karmaşık sorunların sınırlı zaman dilimlerinin belirlendiği sorunlar ortaya çıktı. Sonuç olarak, geliştiriciler, büyük projelerin geliştirilmesinde küçük problemlerin geliştirilmesine uygun yöntemlerin, ikincisinin karmaşıklığı nedeniyle kullanılamayacağı gerçeğiyle karşı karşıya kaldılar.

    Bu nedenle, yapılandırılmış programlamanın amacı, güvenilirlik programlar, yazılım bakım ve modifikasyon, rahatlama ve hızlanma gelişim.

    Yapılandırılmış Zorunlu Programlama Metodolojisi - yaklaşmak için Bu, global veri ve koşulsuz atlama operatörü kullanımından kaçınmak da dahil olmak üzere zorunlu programlar için iyi bir topoloji oluşturmayı, güçlü bağlantıya sahip modüller geliştirmeyi ve bunların kullanılmamasını sağlamayı içerir.diğer modüllere bağlı olarak.

    Yaklaşım iki ana ilkeye dayanmaktadır. kasık:

    • Problemi yukarıdan aşağıya çözmek için algoritmanın sıralı ayrıştırılması.
    • Yapılandırılmış kodlama kullanma.

    Bu metodolojinin imparatorluğun en önemli gelişimi olduğunu hatırlayın.metodoloji.

    Köken, tarih ve evrim. Edsger Dijkstra, yapılandırılmış yaklaşımın yaratıcısı olarak kabul edilir. O dateşebbüse aittir (ne yazık ki, tamamen uygulanamaztoplu programlama) yapılandırılmış programlamayı, oluşturulan programların doğruluğunu kanıtlama yöntemleriyle birleştirmek. H. Mills, D.E. Knuth, S. Hoor.

    Yapılandırılmış programlamanın arkasındaki yöntemler ve kavramlar. Üç vardır

    Yöntem algoritmik yukarıdan aşağıya ayrıştırma - adım adımen genel problemden başlayarak problemin ifadesini detaylandırma. NSyöntem iyi bir yapısallık sağlar. Desteklenen yöntemkavram algoritma.

    Yöntem program bölümlerinin modüler organizasyonu- bölmeden oluşurprogramları modül adı verilen özel bileşenlere dönüştürür. Yöntemkonsept tarafından desteklenen modül.

    Yöntem yapısal kodlama - ne zaman kodi kullanmaktırüç ana kontrol yapısının geliştirilmesi. Etiketler ve operatör olmadankoşullu atlama, izlenmesi zor bağlantılar olup, bunlar olmadan geçinmek istiyoruz. Yöntem, konsept tarafından desteklenmektedir. yönetmek

    Yapısal programlama dilleri. Klasik zorunlu programlama metodolojisinden temel fark, operadan reddetmedir (daha doğrusu, bir veya başka bir reddetme derecesi). koşulsuz atlama üreteci.

    [Pratt T., 1979] "Programcı için sözdiziminin önemli bir özelliği, program yapısına temel algoritmanın yapısını yansıtır ... olarak bilinen yöntemi kullanırken yapılandırılmış programlama , program hiyerarşik olarak oluşturulur - yukarıdan aşağıya (ana programdan en düşük seviyenin alt programlarına kadar), her seviyede sadece sınırlı bir dizi kontrol yapısı kullanılarak: basit talimat dizileri, döngüler ve bazı koşullu dallanma Bu yöntemin tutarlı bir şekilde uygulanmasıyla, elde edilen algoritmaların yapısının anlaşılması, hatalarının ayıklanması ve değiştirilmesi kolaydır. İdeal olarak, bu şekilde oluşturulan program şemasını doğrudan algoritmanın yapısını yansıtan ilgili program talimatlarına çevirebilmeliyiz. "

    Yapılandırma teoremi (Boehma-Jacopini ( boem - jakopini )): Herhangi bir doğru program (yani, döngüleri ve erişilemeyen dalları olmayan bir girişi ve bir çıkışı olan bir program) aşağıdaki mantıksal yapılar kullanılarak yazılabilir - sıra, seçim ve döngü tekrarı

    Sonuç 1: Herhangi bir program, bir goto ifadesi olmadan bir forma indirgenebilir.

    Sonuç 2: Herhangi bir algoritma, üç kontrol yapısına dayalı bir dilde uygulanabilir - sıra, döngü, tekrarlama.

    Sonuç 3: Boyutları sınırsız olsa bile, yapılandırılmış programların karmaşıklığı sınırlıdır.

    Yapılandırılmış programlama kendi içinde bir son değildir. Ana amacı iyi ("doğru") bir program elde etmektir, ancak en iyi programda bile atlama ifadelerigitbazen gerekli: örneğin - birçok iç içe döngüden çıkış.

    Zorunlu metodolojiyi destekleyen hemen hemen tüm dillerde,bu metodolojiye göre programlar geliştirmek mümkündür. Döngüleri yönetmeyi kolaylaştırmak için bir dizi dil, goto ifadesinin özel ikamelerini tanıttı (örneğin, C'de Break ve Continue).

    Görevler sınıfı.Bu metodoloji için görev sınıfı, im için görev sınıfına karşılık gelir.etkili metodoloji. Bu durumda daha fazla geliştirmenin mümkün olduğunu unutmayın.karmaşık programlar, çünkü anlaşılması ve analiz edilmesi kolaydır.

    Literatür önerileri. Bu alandaki en ünlü eserlerden biri "Notlar" makalesidir.yapılandırılmış programlama üzerine "[Dijkstra 1975]. Yapılandırılmış yöntemlerProgramlama, "Teori ve Uygulama" kitabında ayrıntılı olarak tartışılmaktadır.yapısal programlama"[Linger, Mills, Witt 1982]. Uygulamayapılandırılmış programlama "Algoritmalar +veri yapıları = programlar "[Wirth 1985]. Felsefe görsel yapısalprogramlama [Parondzhanov 1999]'da ayrıntılı olarak açıklanmıştır.

    Nesne yönelimli programlama yöntemi.

    Yapılandırılmış programlama yönteminin "sınırlı karmaşıklıkta" programlar yazarken etkili olduğu kanıtlanmıştır. Ancak, uygulanan yazılım projelerinin karmaşıklığının ve buna bağlı olarak oluşturulan programların kod hacminin artmasıyla birlikte, yapılandırılmış programlama yönteminin yeteneklerinin yetersiz olduğu ortaya çıktı.

    Ortaya çıkan sorunların temel nedeni, programın gerçek dünyadaki fenomenlerin ve kavramların yapısını ve aralarındaki bağlantıları doğrudan yansıtmaması olarak düşünülebilir. Programın metnini analiz etmeye ve değiştirmeye çalışırken, programcı yapay kategorilerle çalışmak zorunda kaldı.

    Gittikçe daha karmaşık programlar yazmak, programlamaya yeni bir yaklaşım gerektiriyordu. Sonuç olarak, Nesne Yönelimli Programlama ilkeleri geliştirildi. OOP, yapılandırılmış programlamadan en iyi fikirleri alır ve programlarınızı yeniden düzenlemek için bunları güçlü yeni kavramlarla birleştirir.

    OOP'nin teorik temellerinin geçen yüzyılın 70'lerinde atıldığı söylenmelidir, ancak pratik uygulamaları ancak uygun teknik araçların ortaya çıkmasıyla 80'lerin ortalarında mümkün olmuştur.

    OOP metodolojisi kullanır nesne ayrıştırma yöntemi, buna göre sistemin yapısı (statik bileşen) açısından açıklanmaktadır. nesneler ve bağlantılar aralarında ve sistemin davranışı (dinamik bileşen) - değişim açısından mesajlar nesneler arasında. Mesajlar, dış etkenlerin neden olduğu olaylara bir tepki olabilir veya nesnelerin kendileri tarafından üretilebilir.

    Nesne yönelimli programlar, "veri güdümlü programlar" olarak adlandırılan geleneksel programların aksine "olay güdümlü programlar" olarak adlandırılır.

    Ana OOP yöntemleri ve kavramları

    · Yöntem nesne yönelimli ayrıştırma- nesnelerin ve aralarındaki bağlantıların seçiminden oluşur. Yöntem, kapsülleme, kalıtım ve polimorfizm kavramlarıyla desteklenir.

    · Yöntem soyut veri türleri- kapsüllemenin altında yatan yöntem. Soyut veri türleri kavramıyla desteklenir.

    · Yöntem mesaj yönlendirme- nesneler arasındaki mesaj alışverişi açısından sistemin davranışını tanımlamayı içerir. Mesaj konsepti tarafından desteklenir.

    hesaplama modeli saf OOP yalnızca bir işlemi destekler - bir nesneye mesaj göndermek... Mesajlar, nesne olan parametrelere sahip olabilir. Mesajın kendisi de bir nesnedir.

    Nesnenin bir dizi mesaj işleyicisi (bir dizi yöntem) vardır. Nesnenin alanları vardır - değerleri diğer nesnelere referans olan bu nesnenin kişisel değişkenleri. Nesnenin alanlarından biri hakkında, bu nesne tarafından işlenmemiş tüm mesajların iletildiği ana nesneye bir başvuru depolanır. İletilerin işlenmesini ve iletilmesini tanımlayan yapılar genellikle bu nesnenin sınıfı adı verilen ayrı bir nesneye tahsis edilir. Nesnenin kendisine belirtilen sınıfın bir örneği denir.

    Sözdizimi ve anlambilim

    Saf nesne yönelimli dillerin sözdiziminde her şey olabilir.nesnelere mesaj gönderme şeklinde yazılır. Nesneden işarete sınıfdiller, bir kümenin yapısını ve işleyişini tanımlar.benzer özelliklere, niteliklere ve davranışlara sahip nesneler. Nesne belirli bir sınıfa aittir ve kendikendi iç durumu. Yöntemler - fonksiyonel özellikleretkinleştirilebilir va.

    Nesne yönelimli programlama, üç anaözellikler:

    kapsülleme. Bilgileri saklıyor ve verileri birleştiriyor venesnenin içindeki işlevler (yöntemler).

    Miras. Olasılıkla oluşturulan nesnelerin bir hiyerarşisini oluşturma bu tür kalıtsal erişim nesnelerinin her biri içintüm üst ana nesnelerin koduna ve verilerine.Hiyerarşiler oluşturmak yeterlidir zor bir iştir, çünkü bir sınıflandırma gerektirir.

    Çevremizdeki nesnelerin çoğu kitapta tartışılan kategorilere aittir [Schleer, Mellor 1993]:

    · Gerçek nesneler, fiziksel dünyada var olan nesnelerin soyutlamalarıdır;

    · Roller, bir kişinin, ekipmanın veya organizasyonun amacının veya amacının soyutlarıdır;

    · Olaylar, olmuş veya olmuş bir şeyin soyutlarıdır;

    · Etkileşimler, diğer nesneler arasındaki ilişkilerden kaynaklanan nesnelerdir.

    polimorfizm (içerme polimorfizmi) - bir eyleme atama ad, daha sonra nesne hiyerarşisinde yukarı ve aşağı bölünürtov ve hiyerarşinin her nesnesi bu eylemi şu şekilde gerçekleştirir:onun için uygun.

    Her nesnenin ait olduğu sınıfa bir referansı vardır. NSbir mesaj alındığında, nesne verilen mesajı işlemek için sınıfa başvurur.iletişim. Mesaj, kalıtım hiyerarşisinden geçirilebilir.sınıfın kendisi onu işlemek için bir yönteme sahip değilse. eğer görüntü mesajın olay işleyicisi dinamik olarak seçilir, ardından uygulanan yöntemler bu çağrı olay işleyicilerine sanal denir.

    Bu metodolojide yapılandırmanın doğal yolları şunlardır:sınıflar. Sınıflar, hangi alanlara ve örnek yöntemlerine erişilebileceğini tanımlar dışarı, bireysel mesajların nasıl ele alınacağı, vb. Saf nesne tabanlıodaklı diller, yalnızca dışarıdan yöntemler mevcuttur veBir nesnenin verilerine erişim ancak onun yöntemleriyle mümkündür.

    Bu metodolojideki görevlerin etkileşimi kullanılarak gerçekleştirilir. Bu görevleri uygulayan nesneler arasında mesaj alışverişi.

    Bazı özetlerde bir açıklama örneği paskal Koordinatlar sınıfının mirasçısı olan "nokta" sınıfının -benzeri nesne yönelimli dili şöyle görünebilir:

    Tip TKoordinatlar = sınıf (TObject)

    x, y: tam sayı;
    Yapıcı Başlatma (_x, _y: tamsayı);
    GetX işlevi: tamsayı;
    GetY işlevi: tamsayı;
    Prosedür SetX (_x: tamsayı);
    Prosedür SetY (_y: tamsayı);
    Prosedür Taşı (dx, dy: tamsayı);
    Yıkıcı Yapıldı; gerçek;

    Yapıcı Başlat ();
    x: = _x; y: = _y
    son;
    GetX işlevi: tamsayı;
    başlamak
    GetX: = x
    son;
    . . . . . . . . . . . . .
    Son;

    TPoint = sınıf (TCordinatlar)
    Renk: tamsayı;
    Yapıcı Başlatma (_x, _y, _Color: tamsayı);
    İşlev SetColor (_Color: tamsayı);
    İşlev GetColor: tamsayı;

    Yapıcı Başlatma (_x, _y, _Color: tamsayı);
    Devralınan Başlangıç ​​(_x, _y);
    Renk: = _Renk
    son;
    . . . . . . . . . . . . .

    Son ;

    Gelecekte sınıfın örneklerini kullanmak istersekTP Noktası, yapıcı yöntemi çağrılarak oluşturulmaları gerekecek.

    Var P1: Nokta;

    P 1. Başlat (0 ,0 , 14); P 1. Taşı (+2, -2);

    OER konseptini desteklemek için özel nesne odaklı Diller programlama. Tüm OOP dilleri üç gruba ayrılabilir.

    saf diller, nesne yönelimli metodolojiyi destekleyen en klasik biçimde. Bu tür diller, küçük bir dil bölümü ve önemli bir kitaplığın yanı sıra bir dizi çalışma zamanı destek aracı içerir.

    hibrit dillerpopüler zorunlu programlama dillerine nesne yönelimli yapıların getirilmesinin bir sonucu olarak ortaya çıktı.

    Kesilmiş dillerOOP açısından en tehlikeli ve gereksiz yapıların hibrit dillerden çıkarılması sonucu ortaya çıkan .

    Edebiyat

    ISO/IEC 12207: 1995 Bilgi Teknolojisi - Yazılım Yaşam Döngüsü Süreçleri.

    [Wirth 1985] - Wirth N. Algoritmalar + veri yapıları = programlar. - M.: Mir, 1985

    [Dijkstra 1975] - Dijkstra E. Yapılandırılmış programlama üzerine notlar // Dahl U., Dijkstra E., Hoare K. Yapılandırılmış programlama. - M.: Mir, 1975

    [Kalinin, Matskevich 1991] - Kalinin A.G., Matskevich I.V. Evrensel programlama dilleri. Semantik yaklaşım. - M.: Radyo ve iletişim, 1991

    [Linger, Mills, Witt 1982] - Linger R., Mills H., Witt B. Yapılandırılmış programlama teorisi ve pratiği. - E.: Nauka, 1990

    [Myers 1980] - Myers G. Yazılım Güvenilirliği. - M.: Mir, 1980

    [Parondzhanov 1999] - Paranodzhanov V.D. Zihnin çalışması nasıl geliştirilir. - M.: Radyo ve iletişim, 1999

    [Pratt T., 1979] - Pratt T. Programlama dilleri: tasarım ve uygulama. - m.: Dünya, 1979

    [Schleer, Mellor 1993] - Schleer S., Mellor S. Nesneye Dayalı Analiz: Devletlerde Dünyayı Modelleme. - Kiev: Diyalektik, 1993.