internet pencereler Android
Genişletmek

Programın blok yapısı. Programın yapısının geliştirilmesi ve modüler programlama

61.1k.

Sitelerin ayrıca kendi iskeleti de var. Ancak, doktorlara sormak için özellikleri hakkında işe yaramaz. Evet ve veterinerler de site binasının farkında değildir. Sadece velochegers tartışıldı. Onlardan gelecekteki kaynağın iskeletinin yapısının bağlı olduğu. Ve onun iskeletinin kemikleri yaratmanın ana yolu bir blok düzenidir.

Site düzeni - adanmış için zanaat

Site düzeninde gizemli bir şey var. Ama bu zanaat daha yakından haberdar olana kadar. İtademimize başlıyoruz:


Yerleşimini oluşturduktan sonra site geliştirme bir sonraki aşaması bir düzen. Vestovel'in görevi, HTML kodu ve CSS tabloları gelecekteki sitenin iskeleti kullanılarak aktarılır. sanal mir. Basitçe koyun, kaynağın boyutunu ve oranlarını tarayıcı için anlaşılabilir olan formda hareket ettirin.

Düzen sürecinde, HTML kodu, kısmen bir "iskelet" sitesi gerçekleştirir. AC. cSS'yi kullanma. (basamaklı Stil Şablonu) "Kemiklerin", renk ve konumun boyutu ayarlanmıştır.

Birkaç çeşit düzen vardır:

I. Tablar - daha önce ana düzen yoluydu. Sitenin yapısını ayarlamak için tablo düzeninde etiket

Ve iştirakleri etiketleri. Tabloları kullanan düzen, tüm tasarım öğelerini birbirine göre orantılı olarak konumlandırmanıza olanak sağlar. Ancak aynı zamanda, böyle bir kod çok hacimli elde edilir:


Ayrıca, tablo kodunun ana dezavantajları, uzun yükleme ve kötü indeksleme içeriğini arama motorları tarafından içerir.

Sayfanın içeriği, takdir tabanlı tablo, tüm veriler yükleninceye kadar görüntülenmez. Blok düzeni, her yüklü öğeyi ayrı olarak görüntülemenizi sağlar.

Kötü indeksleme tablo sayfaları, tablonun farklı hücrelerinde bulunan metin blokları arasındaki büyük boşluklarla açıklanmaktadır.

Şimdi masa yeleği nadiren siteler oluşturmanın ana yöntemi olarak kullanılır. Şimdi sadece tablo verilerini ve grafik görüntülerin konumunu yapılandırmak için kullanılır.

II. Blok - şu anda ana düzenin ana yoludur. Tablo bloğu düzeninin aksine, bir dizi avantaj var:

  • Elementler ayrılması hTML Kodu ;
  • Bir katmanı bir başkasına kaplama yeteneği - bu olasılık, elementlerin konumlandırılmasını büyük ölçüde kolaylaştırır.
  • Arama motorları tarafından en iyi indeksleme;
  • Karşılıklı bağımsız elemanlardan oluşan yüksek hızlı indirme sayfası;
  • Yaratmak kolay görsel efektler (açılır menüler, Listeler, Pop-up İpuçları).

Blok düzeninin ana dezavantajı birazdır " belirsizlik»Kodunu Anlamak Çeşitli tarayıcılar. Bu nedenle, HTML sayfalarının genellikle özel hack kullanarak "getirmek" gerekir.

Blok düzeninin ortaya çıkmasıyla, böyle bir kavram "çapraz tarayıcı" olarak doğdu. Aynı öğenin ekranındaki fark nedeniyle farklı tarayıcılar Tüccarlar, tüm kod parçalarını ana HTML (haki) yerleştirmelidir.

Hack etkisi oldukça uzmanlaşmıştır ve yanlış ekran problemini yalnızca bir tarayıcıda çözer.

Blok düzeninde uygulanan ana eleman etikettir

. Bu etiketle ayrılan kodun kodu bir katman denir. Tüm stil çözümleri HTML kodunun sınırlarının ötesinde basamaklı stil sayfalarına yapılır. Onlara erişim tanımlayıcılar veya CSS sınıfları yoluyla gerçekleştirilir:

Blok düzeni nasıl?

Düzen hazır PSD Site Düzeni'ne başlamadan önce grafik editörü Blokları (katmanlar) kesin. Ayrı bir klasörde kesilir arka plan resimleriHer katmana ayrı ayrı eklenecektir:


Örneğin, Photoshop'ta oluşturulan sitenin bu düzenini alın. İlk B. metin düzeltici DIV'yi kullanarak, gelecekteki kaynağın yapısını belirtiriz ve aynı kimlik seçicinizi her katmana atayın. Böyle bir yapıyı ortaya çıkarır:

Sonra sitenin html dizesinde bitmiş yapısına CSS dosyasını ekleyin. Bundan sonra, içine her katmanın stilistik bir açıklaması ekleyin, diğer elemanlara göre ve boyutuna göre konumlandırma.

Dilin teknik belgelerinden daha ayrıntılı olarak tüm CSS özellikleriyle tanışabilirsiniz.

Bir örnek index.html dosyasının tam kodu:

Blok düzeni örneği

İçerik

Style.css dosyasının içeriği:

vücut (arka plan: # f3f2f3; renk: # 000000; yazı tipi yüzü: TREBUCHET MS, Arial, Times New. Roma; Yazı tipi boyutu: 12px; ) #Container (Marj: 30px Otomatik; Genişlik: 900px; yükseklik: 600px;) #header (arka plan: # 66cccc; yükseklik: 100px; genişlik: 900px;) #Navigation (arka plan: # FF9999; genişlik: 900px; yükseklik: 20px ;) #Menu (arka plan: # 99cc99; yüzdürme: sol; genişlik: 200px; yükseklik: 400px;) #Content (arka plan: # D2D0D2; Float: Sağ; Genişlik: 700px; yükseklik: 400px;) Temizle (Net: Her ikisi de; ) #footer (arka plan: # 0066ff; yükseklik: 80px; genişlik: 900px;)

Böylece sitenin bir blok düzeni örneğimizi tarayıcı penceresine bakar.

Prosedürler ve fonksiyonlar. Blok Yapısı programlar. Parametreler.

Misal

Misal

Misal

Bir (10) bir dizi gerçek sayılara verilir. Düzenlemek bu dizi Unsurlarını artırarak ᴛ.ᴇ. Dizinin her bir sonraki unsurunun bir öncekinden daha fazlası olacak şekilde yapın.

En çok birini düşünün basit algoritmaBu türün görevleri için geliştirilmiştir (Şekil 5).

Bu algoritmanın fikri, esas olarak, başlangıç \u200b\u200bdizisinin elemanlarının, ilk önce 1 C A 2, daha sonra 2 C A 3, 3 C A 4, vb. İle karşılaştırıldığıdır. Çiftteki ilk element ikincinden fazlaysa, sayısal değerleri değişir, böylece ilk eleman ikinci ve ikincisinin değerini alır. Aksi takdirde, bir çiftte hiçbir değiştirme yapılmaz ve ikinci çiftin elemanlarını karşılaştırmaya geçin.

ᴀᴋᴎᴍᴀᴋᴎᴍ ᴏϭᴩᴀᴈᴏᴍ, dizinin sonundaki en büyük elemanın kademeli bir "itme" vardır ve algoritmadaki "çekme" işlevi iç çevrimi gerçekleştirir. Dizinin en büyük elemanı son 10. sıraya götürülüz en kısa sürede, açıklanan prosedür, kalan elemanın en büyüğü, dizi en büyüğü, vb.

İstenilen bir sonucu elde etmek için, böyle bir prosedür dokuz kez yapılması gerekir, her seferinde dahili döngünün tekrarları 1 ile düşmesi gerektiği.

Bu görev harici döngü ile çözülür. Tekrartan 9.8.7 değerinin tekrarlanmasına kadar olan parametresi, ..., 1, yalnızca yapılan, ancak aynı zamanda, aynı zamanda, aynı anda ve iç çevrim parametresinin en yüksek değeri sayısına göre hizmet vermektedir.

program Çeşit;

var.

ben, k: İntege. r;

b: gerçek ;

bir: dizi. rahmetli ;

başla.

yaz ('bir dizi girin -');

İçin İ: \u003d 1 için. 10 yapmak. ReadLn (A [i]);

writeln ("Kaynak Array");

İçin İ: \u003d 1 için. 10 yapmak. Writeln (a [i]: 5: 2);

İçin I: \u003d 9 aşağı. 1 yapmak.

İçin K: \u003d 1 için. BEN. yapabiliyorsan Bir [k]\u003e a sonra.

başla.

b: \u003d a [k]; A [k]: \u003d a; A: \u003d B

son.

writeln ("sıralı");

İçin İ: \u003d 1 için. 10 yapmak. Yaz (A [i]: 5: 2)

son. .

Dana matrisi (20 * 20). Her bir eleman, her bir eleman, ana çapraz köşegen üzerindeki eleman hariç, matrisin kolonunun elemanlarının ürünü olan bir vektör (20) oluşturmak için. Orijinal matrisin satırları ve sütunlarını indeksleme, 10 ile vektör öğelerini indeksleme sıfırdan başlar.

Yeni bir dizinin oluşumu (vektör), elemanlarının değerlerinin onlar için ayrılan bellek hücrelerine kaydıdır. Vektör C'nin her bir elemanının sayısal değeri, algoritmanın iç döngüsünde oluşturulur ve hücreye kayıt, iç çevrim gövdesinin bir sonraki tekrarı tamamlandıktan sonra dışındadır.

program Masv;

b: dizi. rahmetli ;

c: dizi. rahmetli ;

p: gerçek ;

m, n: tamsayı ;

başla.

İçin M: \u003d 0 için. 19 yapmak.

İçin N: \u003d 0 için. 19 yapmak. ReadLn (b);

İçin N: \u003d 0 için. 19 yapmak.

başla.

p: \u003d 1; İçin M: \u003d 0 için. 19 yapmak.

eğer M.<>n. sonra. (Bir iş oluşturma)

p: \u003d p * b; (matrisin sütununun unsurları)

(köşegen hariç)

c: \u003d P; (Kayıt Oluşturulmuş)

(Hafıza hücresindeki vektör elemanı)

son. ;

İçin N: \u003d 10 için. 19 yapmak. Writeln (c [n]: 10: 3)

son. .

Gerçek elementlerden oluşan Dana Matrix Mat (5 * 5). Maksimum ve minimum elemanları içeren yerlerde matris dizesini değiştirin.

program En az en çok;

tip

m \u003d. dizi. rahmetli ;

var.

mAT: dizi. nın-nin. m;

maxi, Mini, I, J, I1, J1: tamsayı ;

başla.

yaz ('matrisi girin -');

İçin İ: \u003d 1 için. 5 bir şey için yapmak J: \u003d 1 için. 5 yapmak. Oku (mat);

i1: \u003d 1; J1: \u003d 1; (Minimum eleman endeksleri)

İ2: \u003d 1; j2: \u003d 1; (Maksimum eleman endeksleri)

İçin İ: \u003d 1 için. 5 yapmak.

İçin J: \u003d 1 için. 5 yapmak.

eğer Mat\u003e paspas.

sonra.

başla.

İ2: \u003d ben; J2: \u003d J (Yeni bir maksimumun dizinlerini hatırlayın)

son.

bAŞKA.

eğer Mat.

sonra.

başla.

i1: \u003d ben; J1: \u003d J; (Yeni minimumun endekslerini hatırlayın)

son. ;

str: \u003d mat; (MAT MATRIX ROCK'IN YAPMASI

mAT: \u003d mat; (Maksimum içeren)

mat: \u003d str; (Eleman, minimal- ile dize)

(İsim ve tam tersi)

İçin İ: \u003d 1 için. 5 yapmak.

başla.

İçin J: \u003d 1 için. 5 yapmak. Yaz (mat);

son.

Program iki ana görevi çözer: matrisin en büyük ve en küçük unsurlarının bulunduğu satırları arayın ve bu satırlarda yer alan veri alışverişi.

İlk görev bir tür tipik maksimum arama görevidir veya minimumdur.

Tipikteki fark, matrisin maksimum ve minimum unsurlarının belirlenmesi, ancak endeksleridir. Değişkenler dizinleri saklamak için kullanılır i1, J1. - Minimum eleman için ve i2, J2 - Maksimum için.

İkinci görevi çözmek için, matris satırlarının maksimum ve minimum elemanlarla ve bir yardımcı tek boyutlu dizi ile karıştığı üç atama operatörü kullanılır. str..

< Что такое подпрограмма и для чего она нужна >

Pascal'da, iki tür alt yordam vardır: prosedürler ve fonksiyonlar. Aralarındaki temel fark, fonksiyonun değeri döndürmesi ve örneğin ifadelerde kullanılabileceğidir.

İşlem bir veya daha fazla görevi gerçekleştirmek için çağrılırken:

Writeln ("bu kontrol");

Prosedürler ve fonksiyonlar, ana yazılım biriminde ek bloklar eklemenizi sağlar. Prosedürün veya fonksiyonun her bir açıklaması, bir yazılım bloğu izleyen bir başlık içerir.

Prosedürler ve fonksiyonlar, programın ana gövdesi için herhangi bir yerde görünebilir. Prosedürler için, aşağıdaki format kullanılır:

prosedür. Prosedür adı (parametreler);

Fonksiyonlar, başlıkla başladıkları dışında prosedürlerle aynı formata sahiptir. İşlevi.ve dönüş işlevi için bir veri türüyle biter:

İşlevi. FUNCTION_NAME (parametreler): veri türü;

Prosedürler ve fuchs kendi sabitleri, veri türleri, değişkenleri ve hatta kendi prosedürleri ve işlevleri olabilir. Ancak, tüm bu unsurlar ancak belirlendikleri prosedürlerde ve fonksiyonlarda kullanılabilir.

Prosedür işlem operatörü kullanılarak etkinleştirilir. İşlev, bir işlev çağrısı içeren bir ifadeyi hesaplarken etkinleştirilir ve geri dönen değeri bu ifadeye ikame edilir.

Prosedürler ve fonksiyonlar. Programın blok yapısı. Parametreler. - Konsept ve türler. Kategorinin sınıflandırılması ve özellikleri "Prosedürler ve fonksiyonlar. Program bloğu yapısı. Parametreler." 2017, 2018.

4.8. Blok yapısı.

Dil "C", blok yapısına sahip bir dil değildir.

le pl / 1 veya algola; Bazı fonksiyonlarda açıklanamaz.

başkalarının içinde.

Diğer yandan değişkenler, tarafından belirlenebilir

blok Yapılandırma Yöntemi. Değişken açıklamaları (dahil)

Çay başlatma) sol rakam braketini takip edebilir

herhangi bir operatörü açar, sadece bunun için değil

roy, fonksiyonun vücuduna başlar. Böyle bir şekilde tarif edilen değişkenler

aynı anda, herhangi bir değişkenin dış bloklardan değiştirilmesi

aynı isimler ve uygun olduğundan emin olun

sağ şekilli destek. Örneğin, içinde

İnt ben; / * Yeni bir i beyan eder * /

İçin (i \u003d 0; ben< N; I++)

Değişkenin eylem alanı "gerçek" şube

EĞER; Bu programdaki diğer herhangi bir I ile bağlantılı değilim.

Blok yapısı dışın kapsamını etkiler

değişkenler. Açıklamalar verilirse

Daha sonra, F işlevinin içindeki X'in görünümü, dahili yeniden ifade eder.

menna Çift tipve F - dış tüm değişkene.

resmi parametrelerin isimleri için geçerlidir:

F adı x'in içinde, resmi parametreyi ifade eder ve

harici değişkene değil.

4.9. Başlatma.

Hala başlatma işleminden birçok kez bahsettik, ancak

her zaman diğer konular arasında geçiyor. Şimdi, sonra

Çeşitli hafıza sınıflarını nasıl tartıştık, bu bölümdeyiz.

başlatma ile ilgili bazı kuralları özetliyoruz.

Açık bir başlatma yoksa, o zaman dış ve

değişken değişkenler sıfıra atanır; otomatik

ve kayıt değişkenleri bu durumda

bölünmüş değerler (çöp).

Basit Değişkenler (Diziler veya Yapılar Değil)

İsim işaretinden sonra ekleyerek açıklamalarıyla birlikte izleyin.

eşitlik ve sabit ifade:

Char squote \u003d "\\";

Uzun gün \u003d 60 * 24; / * Bir günde dakika * /

Dış ve statik değişkenler için başlatma

sadece bir kez, derleme aşamasında. Otomatik I.

kayıt değişkenleri her girdinin her girdisini başlattı

fonksiyon veya blokta.

Otomatik ve kayıt değişkenleri durumunda, başlatma

torus sabit olmak zorunda değil: aslında o olabilir

belirli bir ifade içerebilecek herhangi bir ifade

önceden değerler ve hatta özelliklere hitap eder. Örneğin,

bölüm 3'ten itibaren ikili arama programında başlatma

formda kaydedilirdi

İnt yüksek \u003d n - 1;

İnt düşük, yüksek, orta;

Sonucuna göre, otomatik değişimin başlatılması

atama operatörlerinin kısaltılmış kaydedilmesi var.

Tercih etmek için hangi form - temelde tadı vakası. Biz genellikle

açık ödevler kullanıyoruz, çünkü başlatma

açıklamalar daha az belirgindir.

Otomatik diziler başlatılamıyor. Harici

ve statik diziler yerleştirilerek başlatılabilir

açıklamanın ardından, Kıvırcık Parantez içine alınmış liste

virgülle ayrılmış temiz değerler. Örneğin, bir program

1 Bölüm 1'den gelen karakterleri sayma

İnt c, i, nwhite, noter;

Nwhite \u003d noter \u003d 0;

İçin (i \u003d 0; ben< 10; I++)

Formda yeniden yazılmaya gider

İnt ndigit \u003d (0, 0, 0, 0, 0, 0, 0, 0, 0, 0);

Ana () / * rakamları saymak, beyaz boşluk, diğerleri * /

Tüm ödevlerden bu yana bu başlatma aslında gerekli değildir.

değerler sıfır, ama iyi bir stil - onları yap

açık. İlk değerlerin sayısı daha azsa

dizinin boyutu, kalan elemanlar ile doldurulur.

aslanlar. De listeleme büyük sayı başlangıç \u200b\u200bdeğerleri

bir hata. Ne yazık ki, mümkün değil

bazı ilk anlamın tekrarlandığı talimatlar ve

dizinin ortasındaki elemanı olmadan başlatmak imkansızdır.

Önceki tümleri topraklayın.

Sembolik diziler için özel bir yol var

başlatma; Kıvırcık parantez ve virgüller yerine, kullanabilirsiniz.

dize kullanın:

Char pattern \u003d "";

Bu daha uzun kısalma, ancak eşdeğer bir kayıt:

Char pattern \u003d ("T", "H", "E", "\\ 0");

Herhangi bir türden bir dizinin boyutu ihmal edilirse, derleyici belirlenir

uzunluğunu çıkartarak, başlangıç \u200b\u200bdeğerlerinin sayısını sayar. İÇİNDE

bu özel durum dört (üç karaktere eşit)

artı sonlu \\ 0).


Gerekçesiyle. Aynı zamanda, dilin felsefi soyutlaması, bir bütün olarak felsefenin ana temaları ve hareketleri ile ayrılmaz bir şekilde bağlantılıdır. Daha spesifik olarak, geleneksel olarak sıradan bir dilin AF analizi çerçevesinde düşünülen ilk aşamalar, Je Mura'nın felsefesinden, özellikle de "adam", "barış", "," Ben "," Dış dünya "," ...

Ve diğer BDT ülkeleri, Rus ve dünya kültürüne ve bilimine erişimi kolaylaştırmanın yanı sıra. Böylece, araştırmamızın verileriyle yargılanırken, Rus dilinin talebi cumhuriyette yüksek kalmıştır. Modern Moldavyen gençliğinin birçok temsilcisi, babaları ve büyükbabalar olarak, Rusya kültürüne, Rusya'nın bilimsel ve teknik başarılarına ulaşıyor. Rus Dili dil kalıyor ...

Pitoresk sözlü hece mektubu). Orta elamik dönemin anıtları (14-12 yüzyıllar. BC) Akkadian Temiz ucu tarafından yapılır. Novoelamian döneminin anıtları 8-6 yüzyıllara atıfta bulunur. M.Ö. AHEMENIDOV'UN PERSONEL DEVLETİNDE 6-4 CENTERN'DA RESMİ DİLİ OLDU. Ortaçağın erken yaşlarına karşı korunmuş olan antik Parsida'dan etkilendiği varsayılmaktadır. 7. Burusa Dil Dili Buruski (...

... / lehçe), Scythian, Sogdysky, Orta Percidan, Tacik, Tajyrishi (Dil / Dilim), Talysh, Tatsky, Khorezmisian, Khotańsk, Shullo-Rushanskaya dilleri, Yagnobskiy, Yazgueam ve diğerleri. Indoran şubesine aitler. Hint-Avrupa dillerinden. Dağıtım Alanları: İran, Afganistan, Tacikistan, Irak, Türkiye, Pakistan, Hindistan, Gürcistan'ın bazı bölgeleri, Rusya Federasyonu. General ...

Modül, kimseyi uygulamak için tasarlanmış bir dizi birbirine bağlı değişken, sabit, fonksiyonlar ve prosedürler içeren bir programın işlevsel olarak bağımsız bir parçasıdır. fonksiyonellik. Modül, diğer program modüllerinden bağımsız olarak hata ayıklanabilir ve bu nedenle, aynı programın üzerinde çeşitli programcıların işbirliğini organize etmek için modüllere ayrılmıştır.

Modülleri kullanma, hem kaynak hem de nesne kodu biçiminde (ortak derleme için hazır olan kod ve diğer modüllerle birlikte) birleştirilebilecek bağlantı kitaplıkları oluşturabilirsiniz. Delphi'de, modülün derlenmiş nesne kodu, ".dpu" uzantılı dosyalarda depolanır.

Modülün yapısı, PASCAL'daki programın yapısına benzer. Modülün başlığı gerekir ve kelime birimi ile başlar (normal programda olduğu gibi program yerine):

Birim.<имя модуля>;

Modül adı, Pascal'daki dosya adıyla eşleşmelidir. Delphi otomatik olarak farklı modüller oluşturduğunda, modülün adının dosya adıyla çakışmasını sağlar.

Programın aksine, modülün gövdesi (operatörlerin bölümü) yok olabilir. Modül değişkenlerini başlatmak için kullanılır ve ana program operatörlerini gerçekleştirmeden önce gerçekleştirilir. Modül iki zorunlu parça içerir: arayüz ve yürütme.

Modülün arayüz kısmı da açık olarak adlandırılır ve yürütme kapatılır. Arayüz bölümündeki duyurular genellikle açık bir arayüz olarak adlandırılır ve uygulama bölümündeki reklamlar kapalı bir arayüzdür. Arabirim bölümünde ilan edilen tüm değişkenler ve fonksiyonlar, bu modülü bağlayan tüm modüller ve programlar için kullanılabilir. Uygulama bölümünde ilan edilen tüm değişkenler ve fonksiyonlar yalnızca bu modülde bulunur. Böyle bir ayrılık uygulama alanları Özel olarak, kullanıcısından, bilmeme ihtiyacı olmadığı ve ihmal edilmesi veya kasıtlı olarak bozulma olabileceği hesaplamaların orta aşamalarını gizlemek için yapılmıştır. Bu, her zaman uygun olmasa da, yalnızca iç kullanım için tasarlanan tüm fonksiyonların ve değişkenlerin güvenilir bir şekilde korunmasını sağlar ve yazmanız gerekir. ek fonksyonlar İç değişkenlere erişmek için.

Arayüz parçası, kelime arayüzü ile başlar. Arayüz yoluyla, ana program başka modüllerle bir modül veya modülle bağlanır. Arabirim kısmında, bu modülün herhangi bir kullanıcısına sunulan nesneler (prosedürler, işlevler, değişkenler, sabitler, tipler) belirtilir.

Modülün prosedürleri ve fonksiyonları arasında, modül geliştiricisinin arayüz açıklamasına dahil edilemeyeceği yardımcı olabilir, daha sonra kullanıcılardan gizleneceklerdir ve modülün dışında kullanılamaz.

Modül, çalışmalarında (prosedürler, işlevler, değişkenler) diğer modüllerin diğer modülleri kullanırsa, bu, kullanım tasarımını kullanarak modülün başında, daha sonra buna bağlı tüm modüllerin adlarını belirtilen, örneğin, örneğin, :

M1, M2 kullanır ...;

Sonra, arayüz kısmında, bu modülü ararken kullanılabilecek sabitler, sabitler, çeşitler, değişkenler, prosedürler ve fonksiyonlar tarif edilir ve prosedürler ve fonksiyonlar, bir vücut olmadan başlıklar olarak gösterilir. Vücut prosedürleri kendileri daha sonra, modülün kapalı - yürütme - bir kısmında açıklanmaktadır. Arayüzün, arayüz parçasının her bir elemanının, tüm parametrelerin, sabitlerin ve türlerin her bir elemanının, modül kullanıcılarının kolayca kullanabilmesi için tüm varış noktaları belgelendirdiği yorumların yardımı ile çok önemlidir.

Arayüz parçası, yürütme bölümünün başlangıcıyla sona erer. Yürütme kısmı, anahtar kelime uygulaması ile başlar. Arayüz kısmında açıklanan tüm prosedürlerin ve işlevlerin cesetlerini içerir. Yerel özelliklerin ve operatörlerin bölümlerini içerebilir. Kelime uygulamasından sonra, Word'ü, yürütme bölümünde kullanılan modüller listesiyle de izleyebilir. Aşağıdakiler etiketler, türler, sabitler, değişkenler, prosedürler ve (Modül Lubpics.

Yürütme bölümünden sonra, anahtar kelime başlatma işleminden başlayarak, verilerin başlatılmasının isteğe bağlı kısmını takip etmek gerekir. Modül'e ilk temyizde bir kez yapılan operatörleri içerir,

Modülün sonunda, tamamlamanın isteğe bağlı bir kısmı, modül işleminin tamamlanmasında gerçekleştirilen işlemcilerin yürütüldüğü sonuçlandırma anahtar sözcüğünden başlayarak gidebilir. Modül tamamlandı anahtar kelime "SON." Sonunda zorunlu bir nokta ile.

Modülün Kısaca Sözdizimi Açıklaması şöyle görünür:

Değişkenler farklı modüllerde kullanılıyorsa, bir değişken modülüne erişmek için önek kullanılmalıdır:

<имя модуля>. <имя переменной>.

Örnek 10.1. Modüllerin ara bağlantısı olasılığını düşünün. Modüllerin birbirlerinin iç elemanlarını kullanmasına izin verirseniz, program daha kısa sürebilir.

İşaretleme "\u003e Modüller (veya yüksek derecede birleştirme modülleri) arasındaki yakın ilişki ve bu durumda, modüler programlama ilkelerini ihlal eden bunları ayrı olarak kullanmak imkansız hale gelir.

Arabirim bölümlerinde çapraz bağlantı yaparsanız, derleyici hatayı düzeltir. Modüllerin çapraz bağlantısı sadece uygulama bölümlerinde yapılabilir, ancak modüllerin ortaya çıkan karşılıklı bağımlılığı nedeniyle önlemek için daha iyidir.

Genellikle, program tasarlarken, projenin modüller üzerindeki bölümlenmesi, gelişimin başında gerçekleşir. yazılım sistemi. Bu işlem modülerleştirme denir. Kural olarak, proje analisti ve grubu buna bağlı. Modülün boyutunun, kaynak metnin 30-300 sıra aralığında dalgalanması gerektiğine inanılmaktadır. Modülün netliği, yorum modülünün başlığında (başlangıç) kullanılmasıyla önemli ölçüde iyileştirilir. detaylı Açıklama Onun işlevleri. Brifing, neredeyse metnin geri kalanına dikkat etmeyen, başlık yorumlarını okumak yeterlidir.

Genellikle, modülerleşmenin sonucu, modüllerin ve (veya) alt sistemlerin ilişkilerinin bir grafiği olarak gösterilir. Bu grafiğin temeli ("kök") ana programdır. Grafiğin her bir köşesi modüllerdir ve köşeleri bağlayan ark, modüllerin kendi aralarında ilişkisini göstermektedir.

Grafiğin köşelerinin yakınında, arayüz elemanları öngörülmüştir: Modülün yorumlarında daha ayrıntılı olarak açıklanan modülün açık kısmında açıklanan prosedürlerin, işlevlerin, sabitlerin, değişkenlerin isimleri tam açıklama Arayüz parçası. Yukarıdaki yaylar, ilişkili (genellikle ebeveyn) modülünde kullanılan isimleri öngörür. Bu durumda, bağlantı çapraz olabilir, yani A modülü, modülün arayüz elemanlarını kullanır. Aksine, B modülü, A modülünün arabirim elemanlarını kullanır. Zaten belirtildiği gibi, bu tür istenmeyen, ancak belki dedir. Bu durumda, kullanılan arayüz elemanları, modülleri bağlayan arkın üstünde ve üstünde reçete edilir. Böyle bir grafiğe bir örnek veriyoruz (Şek. 10.1
).

Burada P ana programı, M1, M2, MW üç ana modülüne ayrılmıştır. Bu modüllerden, program A, B, C (ilk modülden), D (ikinci modülden), f, g, k, l (üçüncü modülden) arayüz elemanlarını kullanır. Bu modüllerin her biri daha küçük, örneğin, M2, M2.1, M2.2, M2.3, vb. Bölünmüştür. Bu şemadan, örneğin, M2 ve M3 modülleri arasındaki çapraz referanslar ve ayrıca M2.2 ve M2.3 arasında görünürdür.

Modülasyonu tamamladıktan sonra, her bir modül, bağımsız olarak kod yazmak ve hata ayıklamak için programcılar arasında kodlamaya dağıtılır. Bununla birlikte, bu gibi durumlarda, durum genellikle, ebeveyn modülünün çocuk modüllerinin prosedürlerini ve işlevlerini kullandığı varsayıldığında, ancak kız modülleri henüz diğer programcılar tarafından kodlanmaz. Örneğin, MZ modülünde çocuk modüllerinden K, L öğeleri kullanılmıştır, ancak bu modüller henüz hazır değildir. MZ Modül Kodunu Uygulayan Programcı Nasıl Olmalı? Bu durumdan gelen çıktı, ana modüldeki "fişler" prosedürlerini (veya fonksiyonlarını) yazarak, adı ve parametrelerinin elemanları ile tamamen çakıştığını, L. tapaları, programı hata ayıklama modunda derlemenizi ve yürütmenize olanak sağlar. .

"Plug" - Prosedür, doğru bir başlık belirtimi (isim ve parametreler) ve boş bir gövde ile sunulmuştur. "Plug" - İşlev tam başlık özellikleri (ad ve parametreler) ile gösterilir ve vücutta fonksiyonun değerini döndüren yalnızca bir operatöre sahiptir. Örneğin, vücut fişi işlevi l gibi olabilir:

formula "src \u003d" http://hi-du.ru/e-books/xbook691/files/ris-page173.gif "sınır \u003d" 0 "align \u003d" absmiddle "alt \u003d" (! Lang:

İyi modülasyonla, bir kural olarak, modüllerin ara bağlantısının bir ağacın grafiği bir ağaçtır ve arayüz elemanları, kolondan gelen kolona göre daha yüksek seviye düğümlere göre kullanılır. Ancak, bu her zaman mümkün değildir ve grafiği analiz etmek ve optimize etmek gerekir. Modülerleşmenin sonuçlarının kalitesini analiz etmek için, iki özellik kullanılır: modül bağlantısı ve aşağıda düşünülen modüllerin yapışması.

Bağlantı modülü olarak tanımlandı modül parçalarının bağımsızlık bileşenlerinin ölçülmesi. Modülün bağlantısı ne kadar yüksek olursa, tasarımın sonucu ne kadar iyi olur. Bağlantı türleri (parantez içinde bağlantı kuvveti katsayısı ile gösterilir):

  • İşlevsel (güçlü bağlı) - 10;
  • sıralı - 9;
  • İletişimsel - 7;
  • prosedür - 5;
  • geçici - 3;
  • mantıksal - 1;
  • tesadüf (Zayıf Bağlantı) - 0.

Modül C. fonksiyonel bağlılık Aynı türdeki diğer iki bağlantıya ayrılamaz. Modüldeki giriş çıkış akışlarını kontrol etmek için alt yordamlar varsa ve bu verilerin işlenmesinin büyük bir bölümüne sahipse, modül birleşik bir fonksiyonel görev gerçekleştirir. Kural olarak, böyle bir modül, tek bir döngü formundaki bir işlem dizisi ile uygulanır ve fonksiyonel bir bağlantıya sahiptir.

Modül sahip sürekli bağlantılı Bağımsız fonksiyonları gerçekleştiren, ancak tek bir işlevi ortak olarak uygulamak için sıralı parçalara ayrılabilir. Aynı modül değerlendirmek için kullanılırsa ve ardından veri işleme için kullanılırsa, tutarlı bir bağlantıya sahiptir. Seri bağlı bir modül, bir işlem sırası veya bir döngü dizisi olarak uygulanır.

Modül veri yapısını ayıran bağımsız modüllerden oluşursa, o zaman İletişimsel bağlılık. Genel veri yapısı, kuruluşunun tek bir modül olarak temelidir. Modül, çalışmayı karmaşık bir veri yapısıyla basitleştirmek için tasarlanmışsa, bu yapıyı izole edin, iletişimsel bir bağlantıya sahiptir. Bu modül, birkaç farklı ve bağımsız olarak kullanılan özellikleri (ezberleme ve veri araması) gerçekleştirmek için tasarlanmıştır. Modül algoritma seçimini izole etmek için tasarlanmışsa, bağlı bir işlevseldir. Böyle bir modül, verileri izole bir yapı ile işleyebilir, ancak arama tek işlevi gerçekleştirdiği düşünüldüğünde. Programın hiyerarşik yapısının en yüksek seviye modülleri fonksiyonel veya tutarlı bir tutarlılık olmalıdır. Bakım modülleri için (yardımcı), iletişimsel bağlılık tercih edilir. Modüllerin prosedürü, geçici, mantıksal veya yanlışlıkla bağlantısı varsa, bu, yeterince düşünceli planlamayı gösterir. Önceden var olan programın modifikasyonu genellikle bu tür bağlılıklara yol açar.

Prosedürel bağlılık Kontrol yapıları, programın yapısal şemasına gösterildiği gibi düzenlenen modülde bulunur. Modülün böyle bir yapısı, uzun süredir kısmen kontrol şanzımanlarına göre, ancak ayrılma noktalarını seçerken herhangi bir fonksiyonel olarak tanımlanmadan oluşurken ortaya çıkabilir. Bir modül, boyutları azaltmak için iki bağımsız modüle ayrılırsa (biri prosedür ve veri reklamlarını işlemek için tasarlanmıştır ve ikincisi kontrol yapılarını yapmaktır), her birinin prosedürel bir bağlantısı vardır. İlk modülün, her biri çeşitli fonksiyonlar gerçekleştirdiği, ilk modülün diğer birkaç modülü (bir kural olarak, bir kural olarak) atıfta bulunduğu düşünülmelidir.

Bölüm içeren modül işlevsel olarak tutarsızdır, ancak aynı zamanda gerekli işlem gereklidir. geçici bağlantı (sınıf bağlı). Giriş sırasında gerekli tüm ayar fonksiyonlarının bağımsız bir aktivasyon modülü tarafından gerçekleştirildiğinde vakalar vardır. Programın başında ve diğerinin programın sonunda pasif bir duruma aktarılması için bir bağımsız modülü kullanmak yerine, işlev farklı modüller arasında dağıtılmalıdır.

Operatörler modülde yalnızca işlevsel bir benzerlik temelinde tanımlanırsa (tüm operatörler veri okumak veya yazmak için tasarlanmışsa) ve anahtarlama algoritması modül parametrelerini yapılandırmak için kullanılır. Bu modül var mantıksal bağlılık Parçaları eşleşmediğinden, ancak kendileri arasında hafif bir benzerliğe sahip olduğundan, örneğin, hata işleme için çeşitli rutinlerden oluşan bir modül. Öte yandan, çeşitli hata mesajlarını kaydetmek için tasarlanan bir modül, tüm çıkış bilgileri onunla birlikte hata mesajlarından elde edilebilirse, iletişimsel bir bağlantıya sahiptir.

Modül operatörleri keyfi olarak birleştirilirse, örneğin, bellek alanına yerleştirilmelerini belirttiğinizde, böyle bir modül vardır. karışıklık tesadüf.

Gerçekleşen üç bağlantı türü, programın uygunsuz tasarımı sonucunda, bu nedenle, fonksiyonel, tutarlı, iletişimsel veya prosedürel bir bağlantı elde etmek için gereklidir.

Debriyaj modülleri olarak tanımlandı modüllerin göreceli bağımsızlığını ölçün. Bağımsız modüller, diğer modüllerin değiştirilmemesi olmadan değiştirilebilir. Zayıf debriyaj daha arzu edilir Bu, modülün yüksek düzeyde bir bağımsızlık anlamına gelir. Modüller, her biri diğeri hakkında bilgi içermezse tamamen bağımsız olarak kabul edilir. Diğer modüller hakkında daha fazla bilgi içinde kullanılıyorsa, daha az bağımsızlar ve daha bulutlu. Bu tür bilgiler, modüllerin isimlerinin, denilen dizileri, örtük olarak girdi ve çıkış kodlarını uygularken, ayrıca ortak bellek bölgelerinin yapıları tarafından tanımlanan verilerden de atanır. Görünüşe göre iki bağlı modülün etkileşimi, diğerlerinde üretilen değişikliklere bağlı olarak bir modülün gerekli ayarını belirlemek daha kolaydır. Modüllerin büyük yalıtımı ve doğrudan etkileşimi, diğerlerinde hataları ortadan kaldıracak olan bir modüldeki değişikliklerin sınırlarını belirlemede zorluklara yol açar. Aşağıda modüllerin örnek bağlantı ölçütleri (çeşitli debriyaj tahmini kaynaklarında) (Tablo 10.1).

Genellikle büyük programlarda, yardımcı algoritmaların uygulanması için alt yordamlar kullanılır. YA'da, alt yordamlar prosedürler şeklinde yapılır.

Prosedür Açıklama

(yüzde adı) Proc (parametre) (yüzde) (yüzde adı) Endp (yüzde adı) - iki kez tekrarlanması ve prosedüre hitap etmek için kullanılır; (parametre) iki değerden birini alabilir - (varsayılan) veya . (Dahili) prosedürü kapatmak için, yalnızca açıklandığı komutların segmentine de başvurabilirsiniz. Uzak (harici) prosedüre, açıklandığı yer de dahil olmak üzere herhangi bir program komut segmentine başvurabilirsiniz. Prosedürde açıklanan isimler ve etiketler içinde lokalize edilmez, bu nedenle programda benzersiz olmalıdırlar . Bir prosedürü diğerinin içinde tanımlamak mümkün olsa da, hiçbir fayda yoktur ve genellikle kullanılmaz.

Meydan okuma prosedürleri

YA'da, ana program ile prosedür arasındaki tüm geçişler kendileri tarafından organize edilmelidir. Bir DOS'a dönüş prosedüründen mümkünse, Arama Programına bir dönüşe ihtiyacınız olursa, çağrı komutuna olan aramayı kullanmak en kolay olanı, JMP Prosedür adına (yüzde adı) geçiş komutu olarak adlandırılabilir. ) Daha sonra prosedürün gövdesinde bir dönüş komutu olmalıdır Ret başka bir özelliğe sahiptir: Yığınını kullanarak geri dönüş adresini hatırlayın ve geçiş komutlarının geri dönüşünü düzenleyin. Bir prosedür çağırırken, iletilen işlem parametreleri dikkate alınmalı ve arama noktasına göre konumlandırılmalıdır, yani. Çağrı komutundaki geçiş türü otomatik olarak belirlenir, Örneğin (prosedür için). P Çağrı P Bu yakın bir çağrı (yakın) ise, aşağıdaki işlemler üretilir: Stack: \u003d ab, IP: \u003d Ofset p burada AV dönüş adresi, yani i.E. Mücadeleyi takip eden komutun etkili adresi; Uzak çağrı (FAR) eylemler sağlar: Yığın: \u003d CS, Yığın: \u003d AB, CS: \u003d SEG P, IP: \u003d Ofset P Prosedür açıklaması, arama komutunun altındaki segmentteyse, geçiş niteliğini belirtmelisiniz. PTR operatörü. Örneğin, Uzak ptr p çağırın; Uzak arayın P.

Segmentteki prosedürlerin yeri

    İç prosedürler Arayanla bir segmentte.
Aynı zamanda, 3 seçenek mümkündür: a) Tüm prosedürler, prosedür olarak da dekore edilebilen ana (neden olan) programdan daha erken yerleştirilir. Örneğin: Metin Segmenti 'Kod' Kodu CS: Metin, DS: Veri, SS: Yığın A1 Proc ... RET A1 Endp Ana Proc MOC Baltası, Veri MOV DS, AX ... A1 Call ... Ana Endp Metin veri segmenti. .. Veri Sonu Yığın Segmenti 'Yığın' ... Yığın Uçları Ana Ana B) Tüm Prosedürler Çağrı Noktasının altında. c) prosedürler - Ana prosedürün içinde, prosedürün başka bir prosedürün içinde olması bile mümkündür (faydalı olmasa da) Örneğin, ... Ana Proc ... A1'i arayın ... MOV AX, C400H INT 21H A1 Proc ... RET A1 Endp Ana Endp Metin Sonu 2) Dış prosedürlerdiğer segmentlerde veya diğer dosyalarda bulunur. Örneğinp, ana programın metni, P.ASMA Metin Segmenti halkının kodunun dosyasında bulunur; Modülleri sırayla birleştirin; KSS'nin genel segmentinde: Metin, DS: Veri, SS: Yığın Ekstru Durdurma: Proc; Harici İsminin Duyurusu Ana Proc ... Arama Durdur ... Ana Endp Metin Veri Segmentini Sonlandırıyor ... Veri Sonu Yığın Segmenti 'Stack' ... Yığın uçları ucu ana kaynak kodu prosedürü P1.asm metninde bulunur. KURUMSU KURUMSU KODU 'KODU' A.Ş. Dışarıda bulunan ismin duyurusu ...

STOP Endp Metin biter ucu; Dosyanın sonu giriş noktası olmadan, bu dosyaların kombinasyonu Layout adımında, yani. Gerekli yayın gerekli. Örneğin, MASM MASM / Zi PR MASM / ZI P1 için Zi, kaynak modülün (IM) sayıları ve sembolleri hakkında tam bilgi vermenizi sağlayan bir seçenektir. PR.OBJ ve P1.OBJ oluşumundan sonra, C0'ın CV hata ayıklayıcısının tam metni kendilerine göstermesini sağlayan bir seçenek olan tek önyüklenebilir bağlantı / C0 PR P1, COMPROZ dosyasına birleştirilmeleri gerekir. Ekrandaki etiketler ve yorumlar dahil. Comproz.exe modülü yürütmeye hazır. Yapabilmek prosedürü kütüphaneden bağlayın. Bunu yapmak için, segmentlerin önünde, Direktifli Direktifin (Kütüphane Dosya Adı) Örneğinp, io.asm dosyasını bağlamak için, yazma Intelleduce Io.asm s segmenti 'yığını' ... S Biter 'Veri' ... D Sonuçları C Segmenti 'Kod' CS: C, SS: S, DS: D Başla: ... ... c sona eriyor

Prosedürler arasındaki parametrelerin transferi (programcının isteğinde düzenlenmiş)

    Parametrelerin MP kayıtları üzerinden aktarılması
Gerçek parametre değerlerini, programcının talebindeki MP kayıtlarıyla iletebilirsiniz. Örneğin; Baltayı Hesaplama Prosedürü: \u003d MAX (AX, BX) Max Proc Uzak CMP Balta, BX JGE MAX1 MOV AX, BX MAX1: RET MAX Endp ...; Ana prosedürde ... MOV Baltası, A; MOV BX, B parametrelerinin hazırlanması; MAX MOV C, AX Prosedürünü aramak için; Sonucun korunması ...
    Referansa göre parametre iletimihafıza hücresinin adresini (ad), gerçek parametreye karşılık gelen (adlandırılmış bir değeri Pascal'daki) aktarımı anlamına gelir. Bunu yapmak için, prosedürü kaydolmaya (BX, BP, SI veya DI, çünkü prosedür bu kayıtları adrese) kullanabildiğinden, bellek hücresi adını veya adresini indirebilirsiniz.
Örneğin, Takım Lea Bx, B Call ......
    Parametreleri yığın içinden aktarın.
Parametrelerin kayıt yoluyla devri, küçük bir miktarda bunlarla sınırlıdır. Çok fazla parametre varsa (5'ten fazla), yığınla aşağıdaki gibi iletilirler: - Ana program, yığındaki gerçek parametrelere (değerler veya adresler) yazar; - Prosedür, yığın halinde kaydedilen parametreleri kullanır. Örneğin: ; P (A1, ..., AK) arayın A1 ... AK Arama P ... prosedürde, isteğe bağlı BP yığın işaretçisini kullanabilirsiniz, ancak prosedürün başında BP değerini kaydedilmelidir. arama programında kullanıldı, yani ; Prosedürün başlangıcı P Proc push bp; BP MOV BP, SP; BP'yi Yığının üstüne Yapılandırma ... Sonra temel adreslemeyi kullanabilirsiniz. Örneğin, yakın bir çağrı için, yığın üzerinde listelenen iade adresi otomatik olarak, son AK parametresinin adresidir. Prosedürden dönmeden önce, BP komutunu POP BP komutuyla geri yüklemelisiniz, ardından yığınını iletilen parametrelerden silmek, böylece prosedürler tekrarlandığında aşırı yüklenmez, yani, yani. SP değerine kurulum, 2 * k ile prosedürü çağırdıktan sonra. Prosedürden 2 doğru dönüş imkanı vardır. a) Arayan programında SP'yi ayarlayın
; Prosedürün sonu ; Arayan programında
POP BP. P'yi arayın.
Ret. SP, 2 * k ekleyin; SP. Düzeltme
P endp.
b) Yığınını geri yüklemek için RETURN komutunu kullanın, (CNT) 'nin (CNT) bir sayaç (sabit ifade), bir kelime boyutudur. Komut aşağıdaki adımları görüntüler: IP: \u003d Yığın SP: \u003d SP + (CNT), prosedürün sonu formuna sahiptir: POP BP Ret 2 * KP Endp Uzun menzilli bir çağrı prosedürü için geri dönüş komutunun bir ret vardır ( CNT) Aşağıdakileri görüntüleyin ve gerçekleştirir: IP: \u003d Yığın CS: \u003d Yığın SP: \u003d SP + (CNT) Bu geri dönüş ile arama programındaki prosedürden, ek eylemler gerekli değildir.
    Prosedüre erişirken kayıtları kurtarma sorunu
Böylece prosedürün bağlantı noktası olmaması için, arama programında kullanılan kayıtların değerleri, "eski" değerini yığınındaki ve sonunda kaydetmek için herhangi bir kayıt kullanmadan önce prosedürün metninde gereklidir. Prosedür, kayıtlı tüm değerler geri yüklenir. ÖrneğinCH kaydı prosedürde kullanılacaksa, yığın üzerine kaydedilmelidir, ancak yığın sadece kelimeyle hatırlar, bu nedenle prosedür bir parça olacaktır: CX'e basın; "Eski" CX MOV CX'in korunması, 0; Prosedürde CX kullanın ...; POP CX Prosedüründen ayrılmadan önce; Böylece "eski" CX'in restorasyonu, kayıtlar yoluyla iletilen parametrelerle ve bir yığınla genelleştirilmiş bir şema yakın (yakın) prosedürler olacaktır.

(yüzde adı) proc

Bakım için BP itin

MOV BP, SP yığını

İtme tasarruf kayıtları

prosedürde kullanılır

yüzde

Ror ... kayıtların restorasyonu

Ror bp restorasyon bp