• Derleme, programcı ile bilgisayar arasındaki iletişimi kolaylaştıran bir süreçtir. Programlama dillerini derlemek

    Son aşamada oluşturma belirli program, herhangi bir programcının bir derleyicinin hizmetlerini kullanması gerekir. İÇİNDE teknik döküman bu programa bir derleme yardımcı programı olarak oldukça mütevazı bir tanım verilmiştir. Derleme, insan tarafından okunabilir bir dilde (yüksek seviyeli dil) yazılmış bir programı makine tarafından okunabilir talimatlara (düşük seviyeli dil) dönüştürme işlemidir. Sonuç olarak, yakın bir program elde ederiz, bir nesne modülü gibi görünebilir, mutlak kod. Bazen böyle bir program şuna benzer:

    Bu nedenle derleme, bir algoritmanın veya alana özgü bir dilde yazılmış bir programın açıklamasını temsil eden girdi bilgisinin (kaynak kodu), nesne kodunda (makine yönelimli dil) sunulan eşdeğer bir talimat listesine yeniden yazılmasıdır.

    Tanımı daha da basitleştirmek için derlemek, bir makine programını etki alanına özgü bir dilden makine yönelimli bir dile çevirmek demektir.

    Tanımın şeffaflığına ve basitliğine rağmen, derleme oldukça çok yönlü bir süreçtir. Birkaç türü var. Toplu derleme, tek bir iş öğesinde birkaç kaynak modülde gerçekleştirilir. Satır satır derleme, yorumlama ile aynıdır (sonraki her ifadenin bağımsız olarak adım adım derlenmesi). Koşullu derleme de var. Bu durumda, çevrilmiş metin, kaynak programda derleyici yönergeleri tarafından belirtilen koşullara bağlıdır.

    Belirli bir sabitin değerini değiştirerek, program metninin bir bölümünün çevirisinin dahil edilmesini veya devre dışı bırakılmasını kontrol edebilirsiniz.

    Programcıların rahatlığı için, çeşitli problemlerin çözümünde en uygun ve uyarlanmış derleyiciler kullanılır. Bunları sınıflandırırsak, bu tür yardımcı programların birkaç türünü ayırt edebiliriz.

    Vectorizing derleyici çeviriyi üretir kaynak kodu vektör işlemcilere uyarlanarak makine koduna dönüştürülür.

    Esnek derleyici modüler bir temelde geliştirilmiştir. Yönetimi tablolarla gerçekleştirilir. Yüksek seviyeli bir dilde programlanmıştır. Bir derleyici derleyici kullanarak uygulamak da mümkündür.

    Artımlı bir derleyici, program parçalarını ve ona yapılan eklemeleri yeniden çevirirken tüm programın yeniden derlenmesi hariç tutulur.

    Yorumlayıcı veya adım adım derleyici, kaynak programdan gelen her bir ifade veya talimat için sırayla bağımsız derleme gerçekleştirme ilkesini kullanır.

    Hangi bir programlama dili için resmi bir açıklama alır. Belirli bir dil için bağımsız olarak bir derleyici oluşturabilir.

    Hata ayıklama derleyicisi, bazı sözdizimi hatalarını kendi başına işleyebilir.

    Yerleşik derleyici, RAM'de kalıcı bir konuma sahiptir ve çok çeşitli görevler tarafından yeniden kullanılabilir.

    Kendini derleyen derleyiciler var. Çevirinin yapıldığı dilde yazılırlar.

    Evrensel derleyici, giriş dilinin semantiğinin ve sözdiziminin resmi bir açıklamasına dayanır. Çekirdek, sözdizimsel ve anlamsal yükleyicilerden oluşur.

    Derleyicilerin kullanımlarını buldukları en yaygın görev, çekirdeği Linux platformu için derlemektir. Bu işlem, ekipmanın koordinasyonu ve platformun en kabul edilebilir sürümünün kurulmasıyla ilgili çok çeşitli sorunları çözmenize olanak tanır.

    Java derlemesi, çok çeşitli platformlarda çalışan derleyiciler kullanılarak gerçekleştirilir. Bu, farklı üreticilerin işletim sistemlerinin ihtiyaçları için kaynak kodlarının yeniden derlenmesini sağlar.

    Tercümanlar için genel notlar

    Belirli bir kaynak dilde programları yorumlamak için tercümanların geliştirilmesi, bilgisayar biliminin ana görevlerinden biridir. Bir tercümanın uygulanması probleminin zorluk derecesi, kaynak dilin karmaşıklığına ve tercümanın kendisinin yazılacağı temel dilden ne kadar farklı olduğuna bağlıdır.

    Bir yorumlayıcının doğruluğunu sağlamak için, onu tasarlarken, yorumlanan dilin anlamsal tanımından hareket etmeli veya en azından buna uygun olduğunu doğrulamalıyız. Şu gerçeğe dikkat edelim matematiksel tanım PL'lerin semantiği, programların yorumlanmasına benzer.

    Özel bir konuma sahipler etkileşimli, artımlı (adım adım) yorumlayıcılar. Onlar için önce girdi verileri de dahil olmak üzere tüm programı hazırlamak ve ancak daha sonra yorumlamak gerekli değildir. İnteraktif çeviri ile, programı hazırlayabilir ve ayrı bölümlerde veri girişi yapabilir ve ortaya çıkan bölümü - mümkün olduğu kadar - hemen yorumlayabilirsiniz (BASIC dili özellikle artımlı yorumlamaya odaklanmıştır).

    Klasik bilgi işlem odaklı dillerden farklı görünen diller için tercümanlar yaratmaya artık daha da yaklaşıyoruz. Özellikle, uzun süreli araştırmalar sonucunda, hesaplamadan çok belirtim odaklı bazı dilleri yorumlamak mümkün hale geldi (örneğin, makine yorumlu mantıkta program yazmak için kullanılan PROLOG dili) . Bununla birlikte, bu tür diller için, hesaplanabilirlik ve karmaşıklık sınırları nedeniyle aşılmaz bazı engeller vardır ve bu, birçok sorun ayarı için bu dillerin kullanılmasını neredeyse imkansız hale getirir.

    Derleyici girdi olarak bir kaynak dil programı alır ve makinenin anlayacağı bir nesne dilinde bir program üretir.

    Yüksek seviyeli bir PL'de birçok kez yazılmış bir programı tüm yeni ilk verilerle çalıştırmak istiyorsak, o zaman bu genellikle olur. daha verimli program yorumlamayın, ancak önce halihazırda uygulanmış bir dile, muhtemelen makine diline daha yakın bir dile çevirin ve ardından bu şekilde oluşturulan programı çalıştırın. Bu yöntem, programın gerçekte kullanılan makinenin yapısına daha iyi uyarlanmasını ve böylece geniş kapsamlı optimizasyonun elde edilmesini mümkün kılar. Prensip olarak, böyle bir çeviri manuel olarak yapılabilir, ancak bu zaman alıcıdır ve hatalar yapılabilir. Bu nedenle bu amaçla özel çeviri programları kullanılmaktadır. çevirmenler veya derleyiciler(İngilizce bilgisayar).



    Derleyici ve tercüman, genellikle bir kaynak dil programını metin biçiminde alan, sözdizimsel doğruluğunu kontrol ederken (ayrıştırırken) sözde tanımlanmış programın iç yapısını oluşturan ve programı başka bir (nesne) dile çeviren oldukça karmaşık programlardır. veya uygun eylemle bu programı yürütün.

    Bir PL, sözdizimi ve anlambilimi ile tanımlanır. Derleme veya yorumlama sürecinde, sözdizimsel bir nesne olarak anlaşılan bir program girdi olarak alınır ve semantiğine uygun olarak başka bir dildeki bir programa veya bir dizi eyleme (yürütme süreci) dönüştürülür.

    Programlama dilleri yüksek ve düşük seviyelerde gelir.

    Belirli bir işlemci türüne odaklanan ve özelliklerini dikkate alan dillere denir. düşük seviyeli diller Her düşük seviyeli dil talimatı doğrudan bir mikroişlemci talimatını uygular ve her zaman belirli bir mikroişlemcinin talimat setine yöneliktir. En düşük seviyeli dil, makine kodundaki her talimatı sayı olarak değil, anımsatıcı adı verilen sembolik kurallarla temsil eden birleştirme dilidir.

    Diller yüksek seviye belirli bir operatör seti kullanarak programda istenen eylemleri belirtmenize olanak tanır. Bir kişiye bir bilgisayardan çok daha yakın ve anlaşılırlar. Böyle bir dilin her komutu, bir düzine veya daha fazla mikroişlemci komutundan oluşabilir. PL VU'da program yazmak daha kolaydır.


    1 - makineye bağlı (Assembler). Düşük seviyeli diller.

    2 - makine odaklı (C)

    3 - evrensel (Fortran, Pascal, Temel)

    4 - problem odaklı (GPSS, Logo, nesne yönelimli (Fort, Smalltalk))

    5,6,7 - (Giriş, Lisp, SNOBOL).

    C, C++ - programın tüm makineye bağımlı kısmı, program başka bir mimariye taşındığında oldukça kolay bir şekilde yerelleştirilir ve değiştirilir.

    Fortran - İlk yüksek seviyeli dil (1958, IBM), günümüzde hala kullanılan, özellikle matematikçiler tarafından tercih edilen modüler programlamayı destekler.

    Pascal - eğitim amaçlı en popüler olanlardan biri (N. Wirth), yapılandırılmış programlama fikirlerinin çoğunu uygular.

    TEMEL - acemi programcılar için, konuşmaya yakın ingilizce dili, modüler ve yapılandırılmış programlamayı destekler.

    Logo , alana özgü diller arasında - esas olarak öğretim amacıyla kullanılır. Bu, konuşma usulü bir dildir (basit sözdizimi).

    GPSS - olayları kullanarak modelleme sistemlerine odaklanmıştır. Araştırma sonuçlarının bekleme süresi, kuyruk uzunluğu, kaynak kullanımı açısından ifade edildiği yerlerde kullanılır.

    küçük konuşma - erken OO PL'den biri, ana tasarım, sayısal olmayan görevler için tasarlanmış bir nesne ve onunla yapılan eylemlerdir (sistemler oluştururken yapay zeka).

    kale – grafik sistemlerde simülasyon modelleme problemlerinin çözümünde kullanılır.

    İşlevsel grup dilleri ağırlıklı olarak yapay zeka sistemlerinde kullanılmaktadır. Güçlü araç desteğine, hızlı bir derleyiciye, yerleşik çoklu pencere organizasyonuna, grafiklere sahiptirler. yüksek çözünürlük, gelişmiş bir matematiksel işlevler kümesi.

    önsöz - AI'nın dili, terimler ve bağlantılar verilir ve onun yardımıyla yenileri oluşturulur.

    Lisp - güçlü grafik tasarımlara sahiptir, tasarım programları oluşturmanıza olanak tanır (örneğin ayrıntılar için). Tasarım odaklıdır. İlkellerden oluşan bir kütüphaneye sahiptir.

    SNOBOL - AI dili.

    Programlama dillerinin nesilleri

    Tüm programlama dilleri genellikle 5 nesile ayrılır.

    1. 50'li yılların başı. Programlamanın "Bir talimat - bir satır" ilkesine göre yürütüldüğü ilk bilgisayarlar ve ilk montaj dilleri ortaya çıktı.

    2. 50'lerin sonu 60'ların başı. Değişken kavramının ortaya çıktığı sembolik bir birleştirici geliştirildi. Programların geliştirme hızı ve güvenilirliği arttı.

    3. 60'lar. Yüksek seviyeli dillerin doğuşu. Programlamanın basitliği, belirli bir bilgisayardan bağımsızlık, yeni güçlü dil yapıları.

    4. 70'lerin başından günümüze. Dar bir konu alanının belirli kavramlarıyla çalışan etki alanı odaklı diller. Yeni nesil dillerde binlerce satır kaynak kodu gerektiren güçlü operatörler.

    5. 90'ların ortası. Sistemler otomatik oluşturma programlama bilgisi olmadan görsel geliştirme araçlarını kullanan uygulama programları. Talimatlar, programlamaya aşina olmayan bir kişi için en uygun yöntemler kullanılarak görsel bir biçimde bilgisayara girilir.

    Enstitümüzde, çeşitli kurslarda, programlamayı öğreneceksiniz. çeşitli diller programlama.

    derleyici türleri

    • vektörleştirme. Bir vektör işlemcisi ile donatılmış bilgisayarlar için kaynak kodunu makine koduna çevirir.
    • Esnek. Modüler bir tarzda tasarlanmış, tablolar tarafından yönlendirilmiş ve üst düzey bir dilde programlanmış veya bir derleyici derleyici ile gerçeklenmiştir.
    • diyalog. Bakınız: diyalog tercümanı.
    • artımlı. Programın tamamını yeniden derlemeden program parçalarını ve uzantılarını yeniden çevirir.
    • Yorumlayıcı (adım adım). Sırayla, kaynak programın her bir ifadesinin (komutunun) bağımsız derlemesini gerçekleştirir.
    • derleyici derleyiciler. Bir programlama dilinin resmi tanımını alan ve o dil için bir derleyici oluşturan çevirmen.
    • hata ayıklama. Belirli türdeki sözdizimi hatalarını ortadan kaldırır.
    • yerleşim. Kalıcı olarak RAM'de bulunur ve birçok görev tarafından yeniden kullanılabilir.
    • Kendinden derlenmiş. Yayının yürütüldüğü dilde yazılmıştır.
    • Evrensel. Giriş dilinin sözdiziminin ve anlambiliminin resmi bir açıklamasına dayanır. Böyle bir derleyicinin bileşenleri şunlardır: çekirdek, sözdizimsel ve anlamsal yükleyiciler.

    Derleme türleri

    • Grup. Birden çok kaynak modülünü tek bir iş öğesinde derleme.
    • Satır satır. Yorumlama ile aynı.
    • koşullu. Çevrilen metnin kaynak programda derleyici yönergeleri tarafından belirtilen koşullara bağlı olduğu derleme. Böylece, bazı sabitlerin değerine bağlı olarak, program metninin bir bölümünün çevirisini açabilir veya kapatabilirsiniz.

    derleyici yapısı

    Derleme işlemi aşağıdaki adımlardan oluşur:

    1. Sözcük Analizi. Bu aşamada, kaynak dosyadaki karakter dizisi, bir belirteç dizisine dönüştürülür.
    2. Sözdizimsel (gramer) analiz. Belirteç dizisi bir ayrıştırma ağacına dönüştürülür.
    3. Semantik analiz. Ayrıştırma ağacı, semantiğini (anlamı) oluşturmak için işlenir - örneğin, tanımlayıcıları bildirimlerine bağlama, türleri, uyumluluk kontrolleri, ifade türlerinin belirlenmesi vb. Sonuç genellikle "ara gösterim/kod" olarak adlandırılır ve bir ayrıştırma ağacı, yeni bir ağaç, soyut bir talimat dizisi veya daha sonraki işlemler için uygun başka bir şeyle artırılabilir.
    4. optimizasyon. Gereksiz yapılar kaldırılır ve anlam korunurken kod basitleştirilir. Optimizasyon, farklı seviyelerde ve aşamalarda olabilir - örneğin, ara kod üzerinde veya nihai makine kodu üzerinde.
    5. Kod üretimi. Ara gösterimden hedef dildeki kod üretilir.

    Derleyicilerin belirli uygulamalarında, bu aşamalar ayrılabilir veya tersine şu veya bu şekilde birleştirilebilir.

    kod oluşturma

    Makine kodu oluşturma

    Çoğu derleyici, bir programı bazı üst düzey programlama dillerinden doğrudan işlemci tarafından yürütülebilen makine koduna çevirir. Kural olarak, bu kod, sağladığı yetenekleri (sistem çağrıları, işlev kitaplıkları) kullandığından, belirli bir işletim sistemi ortamında yürütmeye de odaklanır. Derlemenin gerçekleştirildiği mimariye (firmware seti) denir. hedef makine.

    Derlemenin sonucu - yürütülebilir bir modül - mümkün olan en yüksek performansa sahiptir, ancak belirli bir işletim sistemine ve işlemciye bağlıdır (ve diğerleri üzerinde çalışmaz).

    Bazı derleyiciler, bir programı yüksek seviyeli bir dilden doğrudan makine koduna değil, montaj diline çevirir. Bu, derleyicinin kod üretiminden sorumlu bölümünü basitleştirmek ve taşınabilirliğini artırmak (son kod oluşturma ve onu gerekli hedef platforma bağlama görevi birleştiriciye kaydırılır) veya programcının kontrol etmesine ve düzeltmesine izin vermek için yapılır. derleme sonucu.

    Bayt kodu üretimi

    Derleyicinin çalışmasının sonucu, yorumlanacak özel olarak oluşturulmuş düşük seviyeli bir dilde bir program olabilir. sanal makine. Böyle bir dile sözde kod veya bayt kodu denir. Kural olarak, herhangi bir bilgisayarın makine kodu değildir ve üzerindeki programlar, uygun bir düzenlemenin olduğu çeşitli mimarilerde çalıştırılabilir. sanal makine, ancak bazı durumlarda, herhangi bir dilin sözde kodunu doğrudan destekleyen donanım platformları oluşturulur. Örneğin, sözde kod java dili Java bayt kodu olarak adlandırılan ve Java Sanal Makinesinde yürütülen picoJava işlemci belirtimi, doğrudan yürütülmesi için oluşturulmuştur. .NET Framework için sözde kod, Ortak Ara Dil (CIL) olarak adlandırılır ve çalışma zamanı, Ortak Dil Çalışma Zamanı (CLR) olarak adlandırılır.

    Üst düzey yorumlanmış dillerin (Perl gibi) bazı uygulamaları, yürütmeyi optimize etmek için bayt kodunu kullanır: program metnini bayt koduna dönüştürmenin ve ayrıştırmanın maliyetli adımları yükte bir kez yapılır, ardından ilgili kod ara adımlar olmadan yeniden kullanılabilir.

    Dinamik derleme

    Yorumlama ihtiyacı nedeniyle bayt kodu, karşılaştırılabilir işlevselliğe sahip makine kodundan çok daha yavaş çalışır, ancak daha taşınabilirdir (işletim sistemine ve işlemci modeline bağlı değildir). Bayt kodu yürütmeyi hızlandırmak için şunu kullanın: dinamik derleme, sanal makine sözde kodu ilk yürütmesinden hemen önce makine koduna çevirdiğinde (ve koda tekrarlanan çağrılar sırasında önceden derlenmiş sürüm yürütülür).

    .NET Framework kitaplıkları önceden derlenirken, CIL kodu da JIT derleyicisi tarafından makine kodunu hedeflemek için derlenir.

    kaynak koda dönüştürme

    Ters problemi çözen programlar var - bir programın çevirisi düşük seviyeli dil yüksek seviyeye. Bu işleme kaynak koda dönüştürme denir ve bu tür programlara kod çözücüler denir. Ancak derleme kayıplı bir süreç olduğundan, örneğin C++'da kaynak kodunu tam olarak geri yüklemek genellikle mümkün değildir. Bayt kodlarındaki programlar daha verimli bir şekilde derlenir - örneğin, Flash için oldukça güvenilir bir derleyici var. Kaynak koda dönüştürmenin bir varyasyonu, makine kodunun derleme dili koduna ayrıştırılmasıdır ve bu neredeyse her zaman başarılı olur (bu durumda, karmaşıklık kendi kendini değiştiren kod veya gerçek kod ile verilerin ayrılmadığı kod olabilir). Bunun nedeni, makine talimat kodları ile montajcı talimatları arasında neredeyse bire bir yazışma olmasıdır.

    ayrı derleme

    ayrı derleme(İngilizce) ayrı derleme) - programın bölümlerinin, bağlayıcı tarafından müteakip kombinasyonlarıyla tek bir yük modülüne ayrı ayrı çevrilmesi.

    Tarihsel olarak, derleyicinin adına yansıyan bir özelliği (İng. derlemek- birlikte toplayın, oluşturun), derleyicinin anında mutlak kod üretebilmesine rağmen, hem çeviri hem de bağlantı oluşturmasıydı. Ancak daha sonra, programların artan karmaşıklığı ve boyutu (ve yeniden derleme için harcanan zamanın artması) ile programları parçalara ayırmak ve birbirinden bağımsız olarak derlenebilen kitaplıkları izole etmek gerekli hale geldi. Programın her bir bölümünü çevirirken, derleyici aşağıdakileri içeren bir nesne modülü oluşturur: Ek Bilgiler, daha sonra parçaları çalıştırılabilir bir modüle bağlarken parçalar arasındaki bağlantıları bağlamak ve çözmek için kullanılır.

    Ayrı derlemenin görünümü ve bağlantının ayrı bir aşama olarak tahsis edilmesi, derleyicilerin oluşturulmasından çok sonra gerçekleşti. Bu bağlamda, "derleyici" terimi yerine, "çevirmen" terimi bazen eşanlamlı olarak kullanılır: ya eski literatürde ya da bir programı makine koduna çevirme yeteneğini vurgulamak istediklerinde (ve tersi de geçerlidir). birçok dosyadan bir araya getirme yeteneğini vurgulamak için "derleyici" terimini kullanırlar).

    Bilgisayarların gelişiminin şafağında, ilk derleyicilere (çevirmenler) "programlama programları" deniyordu (çünkü o anda yalnızca makine kodu bir program olarak kabul ediliyordu ve bir "programlama programı" insan metninden makine kodu yapabiliyordu. yani bir bilgisayarı programlamak).

    Ayrıca bakınız

    notlar

    Edebiyat

    • Alfred W. Aho, Monica S. Lam, Ravi Seti, Jeffrey D. Ullman. Derleyiciler: İlkeler, Teknikler ve Araçlar = Derleyiciler: İlkeler, Teknikler ve Araçlar. - 2. baskı - M .: Williams, 2010. - 1184 s. - ISBN 978-5-8459-1349-4
    • Robin Avcısı. Temel Derleyici Kavramları = Derleyicilerin Özü. - M .: Williams, 2002. - 256 s. - ISBN 0-13-727835-7
    • Avcı R. Derleyicilerin tasarımı ve yapımı / Per. İngilizceden. S. M. Krugovoi. - M .: Finans ve istatistik, 1984. - 232 s.
    • Crenshaw. Bir derleyici oluşturalım!
    • Serebryakov V.A., Galochkin M.P. Derleyici Tasarım Temelleri.

    Wikimedia Vakfı. 2010

    Eş anlamlı:

    Diğer sözlüklerde "Derleyici" nin ne olduğuna bakın:

      - (yeni lat., lat. compilare'den soymak, soymak, seçmek). Çeşitli yazarların yazılarından pasajlar ödünç alarak makale veya kitap derleyici. Rus dilinde yer alan yabancı kelimeler sözlüğü. Chudinov A.N., 1910. DERİCİ ... ... Rus dilinin yabancı kelimeler sözlüğü

      Yazara bakın ... Rusça eş anlamlılar ve anlam bakımından benzer ifadeler sözlüğü. altında. ed. N. Abramova, M.: Rusça sözlükler, 1999. derleyici, yazar, yazar; tercüman, hack, program Rusça eşanlamlılar sözlüğü ... eşanlamlı sözlüğü

      Algoritmik bir dilde yazılmış metni makine yönergelerinden oluşan bir programa dönüştüren bir program. Derleyici, programın makine dilinde eksiksiz bir sürümünü oluşturur. Ayrıca bakınız: Çevirmenler Finansal Sözlük Finam ... Finansal kelime dağarcığı

      DERİCİ, PROGRAMLAMA DİLİNİN karakterlerini bilgisayarın doğrudan anlayabileceği komutlara çeviren bir BİLGİSAYAR PROGRAMI. Programlar çoğunlukla C, Pascal veya BASIC gibi YÜKSEK SEVİYE DİLLERDE yazılır... Bilimsel ve teknik ansiklopedik sözlük

      DERİCİ, derleyici, erkek. (kitap). Derleyici yazar. || Yalnızca derlemeler yazabilen bir yazar (negatif). Zayıf derleyici. Sözlük Ushakov. D.N. Ushakov. 1935 1940... Ushakov'un Açıklayıcı Sözlüğü

    Programcılar programlamadan bahsederken genellikle "program hatasız derlendi" derler veya programcıya "programı derleyin, işin sonucuna bakın" derken genellikle derler. Bu tür konuşmalar daha sonra kafa karışıklığına neden olabilir. Yürütülebilir bir dosya derlemek ve oluşturmak eşanlamlı değildir! Yürütülebilir dosyalar oluşturmak, ana bileşenleri derleme ve bağlama olan çok adımlı bir işlemdir. Hatta program "hatasız derlenmiş" olsa bile link verme aşamasında olası bir hatadan dolayı çalışmayabilir. Kaynak kod dosyalarını yürütülebilir bir dosyaya dönüştürme sürecinin tamamına proje oluşturma adı verilir.

    Derleme!

    Derleme, kaynak kodu dosyalarının (.c, .cc veya .cpp) işlenmesi ve proje nesne dosyalarının oluşturulması anlamına gelir. Bu adım yürütülebilir bir dosya oluşturmaz. Bunun yerine derleyici, üst düzey kodu makine diline çevirir. Örneğin, üç tane oluşturduysanız (ancak bağlamadıysanız) bireysel dosyalar, derleme sırasında çıktı olarak oluşturulmuş üç nesne dosyanız olacaktır. Bu tür dosyaların uzantısı *.obj veya *.o gibi derleyicinize bağlı olacaktır. Bu dosyaların her biri, kaynak koduna eşdeğer makine yönergeleri içerir. Ancak bu dosyaları çalıştıramazsınız! Kullanılmadan önce bunları işletim sistemi yürütülebilir dosyalarına dönüştürmeniz gerekir. Bağlayıcının devreye girdiği yer burasıdır.

    Düzen!

    Birkaç nesne dosyasından tek bir yürütülebilir dosya oluşturulur. Bu noktada, ortaya çıkan dosya tektir, bu nedenle bağlayıcı bulduğu tanımsız işlevlerden şikayet eder. Derleme aşamasında, derleyici bir işlev için tanım bulamazsa, işlevin başka bir dosyada tanımlandığı kabul edilir. Değilse, aynı anda birden fazla dosyanın içeriğine bakmadığı için derleyici bunu bilmeyecektir. Öte yandan bağlayıcı, birden fazla dosyaya bakabilir ve bahsedilmeyen işlevlere referanslar bulmaya çalışabilir.

    Derleme ve bağlama adımlarının neden ayrı olduğunu sorabilirsiniz. İlk olarak, bu şekilde program oluşturma sürecini uygulamak daha kolaydır. Derleyici işini yapar ve bağlayıcı işini yapar - işlevlerin ayrılması, program karmaşıklığı yoluyla

    azalır. Diğer (daha bariz) bir avantaj da, oluşturmanıza izin vermesidir. büyük programlar bazı dosyalar her değiştirildiğinde derleme adımını tekrarlamak zorunda kalmadan. Bunun yerine sözde "koşullu derleme" kullanılır. Yani, nesneler yalnızca değiştirilen kaynak dosyalar için derlenir; geri kalanı için nesne dosyaları yeniden oluşturulmaz. Her dosyanın diğer dosyalarda yer alan bilgilerden ayrı derlenmiş olması

    bir proje oluşturma sürecinin derleme ve bağlantı oluşturma aşamalarına bölünmesi nedeniyle vardır.

    Bu iki adım halledilir ve hangi dosyaların değiştiği konusunda endişelenmenize gerek kalmaz. IDE, dosya nesnelerinin ne zaman oluşturulacağına ve ne zaman oluşturulmayacağına karar verir.

    Derleme ve bağlantı aşamaları arasındaki farkı bilmek, projelerinizde hataları bulmanızı çok daha kolaylaştıracaktır. Derleyici, kural olarak, - noktalı virgül veya parantez olmadığını yakalar. Bir işlev veya değişkenin çoklu tanımıyla ilgili bir hata mesajı alırsanız, bağlayıcının size bundan bahsettiğini unutmayın. Bu hata, yalnızca aynı işlev veya değişkenin birkaç proje dosyasında tanımlandığı anlamına gelebilir.

    ÇEVİRİ, DERLEME VE YORUMLAMA

    Çevirmen program mı yoksa teknik araçlar programlama dillerinden birinde sunulan bir programı başka bir dildeki programa dönüştüren, belli bir anlamda birincisine eşdeğerdir.

    Derleme programlamada, programlama dillerinden birinde sunulan bir programın, doğrudan işlemci tarafından kabul edilen ve yürütülen makine yönelimli bir dilde kodlara dönüştürülmesi. Derlemenin sonucu bir nesne dosyasıdır gerekli ile Dış bağlantılar bağlayıcı için. Program zaten makine talimatlarına çevrildi, ancak henüz tam olarak çalıştırılmaya hazır değil.

    Derleyici bir programın kaynak kodunu çevirmek için tasarlanmış bir programdır. üst düzey dil nesne koduna. Derleyici için giriş bilgisi, algoritmanın veya bir programlama dilindeki bir programın açıklamasıdır. Derleyicinin çıktısı, algoritmanın makine yönelimli bir dilde (nesne kodu) eşdeğer bir açıklamasıdır.

    Düzen yürütülebilir bir dosya oluşturmanın adımlarından biridir.
    Derleme - bir makine programını, yürütülmesi için etki alanına özgü bir dilden makine yönelimli bir dile çevirin (nesne kodu oluşturun). Derlemenin sonucu, bağlayıcı için gerekli dış referansları içeren bir nesne dosyasıdır. Program zaten makine talimatlarına çevrildi, ancak henüz tam olarak çalıştırılmaya hazır değil. Nesne dosyası, çeşitli sistem işlevlerine referanslar içerir. Programda hiçbir işlevden açıkça bahsedilmese bile, sistem işlevine en az bir çağrı gereklidir - programın sonlandırılması ve ona ait tüm kaynakların serbest bırakılması.

    bağlayıcı- nesne modüllerinden ve standart kitaplık modüllerinden elde edilen programı bir araya getiren bir programlama sistemi modülü veya bağımsız bir program. Bu işleme bağlama denir ve sonucu yürütülebilir bir dosya olacaktır. Düzen, yorumlama prosedürüyle ilgili değildir.

    Programlarla çalışırken aşamalar vardır:
    a) derleme
    b) düzen
    c) yorumlar
    d) program yürütme.
    Programın kaynak kodundan yürütülebilir bir dosya oluşturmak, a ve b adımlarını (derleme ve bağlama) gerçekleştirmeyi içerir.

    yürütülebilirönceden çeviri yapılmadan bir bilgisayar tarafından işlenebilen veya yürütülebilen bir dosyadır. Tipik olarak yürütülebilir bir dosya, nesne modüllerinin derlenmesi ve bağlanmasının sonucudur ve makine ve/veya işletim sistemi yönergelerini içerir.

    Tercüman kaynak kodu yorumlayıcının girişine ulaştığında, programı komut komut analiz eder ve hemen yürütür.
    Basit bir tercümanın algoritması: 1) talimatı okuyun;
    2) talimatı analiz edin ve uygun eylemleri belirleyin;
    3) uygun önlemi almak;
    4) program sonlandırma koşuluna ulaşılmamışsa, oku aşağıdaki talimat ve 2. adıma gidin.

    "Kaynak programı satır satır ayrıştıran ve aynı anda öngörülen eylemleri gerçekleştiren ve sonradan yürütülen makine dilinde derlenmiş bir program oluşturmayan bir dil işlemcisi" ifadesi yorumlayıcı için doğrudur.

    Yorum modu, üst düzey dil programlarında hata ayıklanırken kullanılabilir.

    Yazılım geliştirmede yorumlama- "anında" önceden derleme olmaksızın bir programın doğrudan komut komut yürütme süreci. Çoğu durumda, yorumlanmış bir program, derlenmiş bir programdan çok daha yavaştır, ancak küçük programlar söz konusu olduğunda genel performansı artırabilen derleme yükü gerektirmez. Yorumlama, programın çalışması sırasında değişkenler tarafından değer elde edilmesi ile ilgilidir.

    Yorumlama ve derleme, bir programlama dilinin semantiğinin (anlamının) değiştirilmesine izin vermez. Genellikle anlambilimi açıklarken operasyonel yaklaşım çerçevesinde, programlama dili yapılarının yürütülmesi, bazı hayali (soyut) bilgisayarların yardımıyla yorumlanır.

    Yorumlama ve derleme, değişikliğe izin vermez dil sözdizimi- algoritmik bir dilde, bu dilde anlamlı cümleler belirlemenizi sağlayan, tümceler oluşturmak için bir dizi kural.

    ayrıştırma bir dilin sözlük birimlerinin (sözcüklerinin) doğrusal bir dizisini, genellikle ayrıştırma yapan bir program veya bir programın parçası olan biçimsel dilbilgisi ile eşleştirme işlemidir. Sonuç genellikle bir ayrıştırma ağacıdır.

    Dosyayı görüntüle– ekran işlemci talimatları seti (temsil etkileşimli grafikler). Görüntü işlemcisi komutları, yalnızca grafiksel görüntüleme ve geçiş komutlarını değil, aynı zamanda döngüleri düzenlemek ve alt programları çağırmak için komutları da içerebilir.

    toplu iş dosyaları iş sırasında aynı eylemleri sık sık gerçekleştirmek gerektiğinde kullanılır. İşletim sistemi, bunun için gerekli komut dizisini toplu iş dosyası adı verilen özel bir dosyaya yazmanıza izin verir.

    Bilgisayarda bir problem çözmenin aşamaları.

    Bir bilgisayarda otomatik bir yaklaşım kullanarak sorunu doğru bir şekilde çözmek için, çözümünün belirli aşamalarından geçmek gerekir.
    1. Veri resmileştirme

    2. Yaratılış matematiksel model
    3. Algoritmanın ayrıntılı açıklaması (akış şeması, metin)
    4. Bir programlama dilinde uygulama
    5. Programda hata ayıklama
    6. Program testi
    7. İşin sonuçlarının analizi

    Bu zincir, sorunu bir PC'de çözme açısından doğru olacaktır, çünkü ilk aşamalarda ("Verilerin biçimlendirilmesi" ve "Matematiksel bir modelin oluşturulması"), ilk veriler ve çözüm modeli belirlenir. Ayrıca, "Algoritmanın ayrıntılı açıklaması (akış şeması, metin)" ve "Programlama dilinde uygulama" aşamalarında, hedef algoritma adım adım oluşturulur ve verilen programlama dilinde uygulanır. "Programda hata ayıklama" aşamasında, algoritmanın uygulanmasındaki bariz yanlış durumlar ortadan kaldırılır ve "Programı test etme" aşaması, orijinal sorunun uygulanmasındaki gizli ve bariz eksiklikleri ortadan kaldırmanıza olanak tanır. “Çalışmanın sonuçlarının analizi” son aşamasında, elde edilen sonuçların bir çalışması yapılır.

    ALGORİTMA KAVRAMI VE ÖZELLİKLERİ. ALGORİTMA BLOK ŞEMASI

    "Algoritma" kavramının tek bir tanımı yoktur. Olası tanımlardan birini veriyoruz.

    algoritma- bu, belirli bir icracı için tasarlanmış, belirli sayıda adımdan sonra belirlenen bir hedefe ulaşılabilen veya belirli bir görevi çözebilen belirli bir sonlu işlemler dizisidir.

    Algoritmanın beş önemli özelliği- ayrıklık, sonluluk, determinizm, etkililik, kütle karakteri.

    ayrıklık– yürütüldüğünde, algoritma sonlu bir eylemler veya adımlar dizisine bölünür.

    sonluluk (sonluluk)– Doğru tanımlanmış ilk verilerle, algoritma çalışmasını sonlu sayıda adımda tamamlamalıdır.

    determinizm- bu kesinliktir (yani genel anlaşılırlık ve doğruluk). Her an, işin bir sonraki adımı sistemin durumu tarafından benzersiz bir şekilde belirlenir. Böylece algoritma aynı girdi verisi için aynı sonucu (yanıtı) üretir, yani aynı girdi verisi için algoritma tekrarlandığında hep aynı sonuç elde edilir.

    Öte yandan, işin bir sonraki adımının sistemin mevcut durumuna ve üretilen rasgele sayıya bağlı olduğu olasılıksal algoritmalar vardır. Bununla birlikte, rasgele sayılar üretme yöntemi "giriş verileri" listesine dahil edildiğinde, olasılık algoritması olağan algoritmanın bir alt türü haline gelir.

    Yeterlik(istenen sonucu elde etmeye odaklanın) - algoritma belirli sonuçlarla bitmelidir.

    kütle karakteri(aynı türden problemleri çözerken farklı veriler kullanma olasılığı) - algoritma, farklı başlangıç ​​veri kümelerine uygulanabilir olmalıdır. Örneğin, ikinci dereceden bir denklemi çözmek için bir algoritma, farklı katsayı değerlerine sahip ikinci dereceden denklemlere uygulanabilir olmalıdır.

    doğrusal algoritma- tüm eylemlerin (işlemlerin) birbiri ardına sırayla gerçekleştirildiği bir algoritma

    Algoritmayı yazma (temsil etme) yolları:

    - formülsel

    - sözlü

    - tablo

    - blok diyagramları kullanma

    - programı kullanmak

    En bariz yol Algoritma girişi, her biri belirli eylemlerin, yani bir akış şeması kullanılarak yürütülmesini öngören sıralı bloklar biçimindeki bir görüntüdür.

    Algoritmaları sunmanın yolları (yine):

    – Sözlü (doğal insan dilinde açıklama)

    – Grafiksel (akış şemaları dilinde)

    - Sembollerin yardımıyla özel dil sözde kod programları tasarlama

    – HIPO tablolarını kullanma

    – Karar tablolarını kullanma

    – Nassi-Schneiderman şemasını kullanma

    – Algoritmik programlama dillerinden birini kullanmak

    Akış şemaları dilinde algoritmalar oluşturmak için kurallar:

    1. Blok şeması yukarıdan aşağıya inşa edilmiştir.

    2. Herhangi bir blok diyagramda, algoritmanın başına karşılık gelen yalnızca bir öğe ve algoritmanın sonuna karşılık gelen bir öğe vardır.

    3. Blok diyagramın başlangıcından herhangi bir elemana giden en az bir yol olmalıdır.

    4. Her blok diyagram öğesinden blok diyagramın sonuna kadar en az bir yol bulunmalıdır.

    Algoritma tasarlamak için modern teknolojinin temel yöntemleri.

    1. Yapısal tasarım yöntemi. Herhangi bir algoritma, üç temel yapının kombinasyonlarından oluşturulabilir: doğrusal algoritma(aşağıda), dallanma algoritması (çatal) ve döngüsel algoritma (tekrar).

    2. Yukarıdan aşağıya tasarım yöntemi. Önce ana fonksiyonlar belirlenir, ardından ikincil fonksiyonlar belirlenir.

    3. Adım adım detaylandırma yöntemi.

    4. Modülerlik yöntemi. Bir modül, bir programın bir işlevi yerine getiren ve öngörülebilir sayıda adımdan oluşan mantıksal olarak bağlantılı bir parçasıdır.

    Bir blok diyagram çizmeye başlamadan önce şunları yapmalısınız:

    1. Girdi verilerinin, ara ve çıktı sonuçlarının adlarını belirleyin.

    2. Ana programa ve yardımcı algoritmalara bir isim verin.

    Döngüler. döngü operatörü. Döngü başlığı tekrar sayısını belirler. Döngü gövdesi– tekrarlanan ifadeler (eylemler) bloğu. İki tür döngü vardır: sabit sayıda tekrarlı (türde bir döngü) için= döngü tipi İçin = parametreli döngü = aritmetik döngü) ve döngü koşullu ifadeler ( önkoşullu döngü= döngü tipi sırasında= döngü tipi Hoşçakal; son koşullu döngü).

    döngü- döngü gövdesi yürütülür sonsuz sayı bir kere.

    Algoritmalarda döngülerin uygulanması, algoritmayı yürüten program tarafından kullanılan bellek miktarını azaltır ve aynı komut dizilerinin giriş sayısını azaltır.

    PROGRAMLAMA DİLLERİNİN GELİŞİMİ VE SINIFLANDIRILMASI. DİLLERİN TEMEL KAVRAMLARI...

    Programlama dilinde ifade bazı değerleri hesaplamak için bir kural belirtir. İfade içerir sabitler, değişkenler, işlev işaretçileri, operatör işaretleri ve parantezler. her ifade tipi var, işlenenlerinin türlerine bağlı olarak.

    İfade isminde aritmetik değeri bir sayı ise. Bir dizgeye aritmetik bir ifade yazılır. Arka arkaya iki aritmetik işlem işareti koyamazsınız. Çarpma işaretini atlayamazsınız.

    İfadelerin değerlerini hesaplarken önemlidir operasyonların sırası. Aşağıdaki kurallar kabul edilmiştir. Eylemler aşağıdaki öncelik sırasına göre soldan sağa doğru gerçekleştirilir ( azalan öncelik sırasına göre):

    1) parantez içindeki işlemler;
    2) fonksiyonların hesaplanması;
    3) DEĞİL;
    4) *, /, DIV, MOD, VE;
    5) +, -, VEYA;
    6) =, <>, <, >, <=, >=.

    İşlemlerin önceliği aynıysa, önce soldaki işlem yürütülür.. İşlem sırası parantezler kullanılarak yeniden tanımlanabilir.

    Programlama dili olan yapay bir dildir.

    - anlamı çevirmen için açık olan sınırlı sayıda kelime

    (anahtar kelimeler)

    – komut yazmak için çok katı kurallar

    Dil sözdizimi– komutları kaydetmek için bir dizi kural

    Dil semantiği– her komutun ve diğer dil yapılarının anlamı

    Programlama dili- bilgisayar programlarını kaydetmek için tasarlanmış resmi bir işaret sistemi. Programlama dili bir küme tanımlar sözcüksel, sözdizimsel ve anlamsal kurallar, belirterek dış görünüş icracının (bilgisayarın) kendi kontrolü altında gerçekleştireceği programlar ve eylemler.

    Her programlama dili bir veya daha fazlasını destekler yerleşik veri türleri (baz türleri). Ayrıca gelişmiş programlama dilleri, programcıya mevcut olanları birleştirerek veya genişleterek kendi veri türlerini tanımlama yeteneği sağlar.

    Veri türü, aşağıdakileri belirleyen bir veri kümesinin özelliğidir:
    - kümeden olası veri değerleri aralığı;
    - bu değerler üzerinde gerçekleştirilebilecek izin verilen işlemler;
    - bu değerlerin hafızada saklanma şekli.
    Ayırt etmek:
    - basit veri türleri: tamsayılar, gerçek sayılar, vb.;
    - bileşik veri türleri: diziler, dosyalar, vb.

    Değişken- bir miktar değer depolayan adlandırılmış bir bellek alanı.

    Diziler hepsinde kullanılır modern Diller programlama.

    sıralamak- doğrudan birbiri ardına bellekte bulunan aynı türde adlandırılmış bir veri kümesi (farklı olarak liste), dizi öğesinin dizini tarafından erişilir (sırasına göre sayı, dizin dizilerinde artan düzende sıralanır). Bir dizi elemanına işaret eden bir dizi indeksi bir tamsayıdır.

    programı- belirli bir sorunu çözmek için gerekli olan mantıksal olarak sıralanmış bir komut dizisi.

    programı– Bir programlama dilinde yazılmış bir algoritma.

    Program metni- bir programlama dilinde algoritmanın eksiksiz, eksiksiz ve ayrıntılı açıklaması. Daha sonra bu program metni çevirmen adı verilen özel hizmet uygulamaları tarafından işlenir.

    İşlemciye veri yolları aracılığıyla giren komutlar, aslında, elektrik sinyalleri. Bu sinyaller sıfırlar ve birler, yani sayılar olarak yorumlanabilir. Bu nedenle, gerçekte işlemcinin çalıştığı program, adı verilen bir sayı dizisidir. makine kodu.

    yazılım testi- Araştırma süreci yazılım(yazılım) ürünün kalitesi hakkında bilgi almak için (programdaki hataların aranması dahil).

    alfa testi– bitmiş ürünün özel olarak oluşturulmuş görevler üzerinde test edilmesi.

    Beta testi– yazılım ürününün ücretsiz test sürümünü gerçek görevler üzerinde test etme.

    Eğer "alfa" ve "beta testi", bir ürün piyasaya sürülmeden önceki aşamaları ifade eder(dolaylı olarak, test topluluğunun boyutu ve test yöntemleri üzerindeki sınırlamalar), beyaz kutu ve kara kutu testi, bir testçinin bir hedefe ulaşma yollarıyla ilgilidir.

    -de beyaz kutu testi(İngilizce) beyaz-kututest yapmak ayrıca söyle - şeffaf kutu), test geliştiricisi programların kaynak koduna erişebilir ve test edilen yazılımın kitaplıklarına bağlı kod yazabilir. Bu birim testi için tipiktir. birimtest yapmak), sistemin yalnızca belirli bölümlerinin test edildiği. Yapıyı oluşturan bileşenlerin bir dereceye kadar işlevsel ve kararlı olmasını sağlar. Beyaz kutu testi, kod kapsamı ölçümlerini kullanır.

    -de kara kutu testi, test cihazının yazılıma yalnızca müşteri veya kullanıcıyla aynı arabirimler aracılığıyla veya harici arayüzler, başka bir bilgisayarın veya başka bir işlemin test için sisteme bağlanmasına izin verir. Örneğin, bir test modülü, her şeyin yolunda gittiğinden ve bu olayların gerçek tuş vuruşları ve fare düğmeleriyle aynı tepkiye neden olduğundan emin olarak, süreç iletişim mekanizmasını kullanarak test edilen programdaki tuşlara veya fare düğmelerine sanal olarak basabilir. Kural olarak, kara kutu testi, sistem gereksinimlerini açıklayan spesifikasyonlar veya diğer belgeler kullanılarak gerçekleştirilir. Kural olarak, bu tür testlerde kapsam kriteri, girdi veri yapısı kapsamından, gereksinim kapsamından ve model kapsamından (model tabanlı testte) oluşur.

    Gerileme testi. Programın bir sonraki sürümünde değişiklik yaptıktan sonra, regresyon testleri, yapılan değişikliklerin uygulamanın geri kalan işlevselliğinin performansını etkilemediğini onaylar. Regresyon testi hem manuel olarak hem de test otomasyon araçlarıyla gerçekleştirilebilir.

    hata ayıklama- Geliştirme aşaması bilgisayar programı, hataların tespit edildiği, yerelleştirildiği ve ortadan kaldırıldığı. Hatanın nerede oluştuğunu anlamak için yapmanız gerekenler:

      değişkenlerin mevcut değerlerini öğrenin; ve programın hangi yolu çalıştırdığını öğrenin.

    Var olmak iki tamamlayıcı hata ayıklama teknolojisi.

      Hata ayıklayıcıları kullanma- için bir kullanıcı arabirimi içeren programlar adım adım yürütme programlar: deyim ifade, işlev işlev, kaynak kodun belirli satırlarında veya belirli bir koşula ulaşıldığında durma. Programın mevcut durumunu görüntüleme programdaki kritik noktalarda bulunan çıktı operatörlerini kullanarak - ekrana, yazıcıya, hoparlöre veya bir dosyaya. Hata ayıklama bilgilerinin bir dosyaya çıkarılmasına denir günlük tutmak.

    hata ayıklayıcı- programın iç yapısını keşfetmenizi sağlayan bir program. Hata ayıklayıcı, programın adım adım yürütülmesini, değişkenlerin mevcut değerlerinin görüntülenmesini, herhangi bir program ifadesinin değerinin hesaplanmasını vb. sağlar. hata ayıklayıcı.

    yeniden düzenleme- dış davranışını etkilemeden ve çalışmasının anlaşılmasını kolaylaştırmayı amaçlayan programın iç yapısını değiştirme süreci

    alt program gerçekleştiren bir dizi operatördür. istenen eylem ve kaynak kodun diğer bölümlerinden bağımsızdır.

    alt programlar var iki çeşitprosedürler ve fonksiyonlar. Prosedürün basitçe bir grup deyimi yürütmesi ve işlevin ayrıca hesaplanan bazı değerleri ana programa iletmesi bakımından farklılık gösterirler. Gönder = geri dön. İşlev, dönüş türüyle aynı türe sahiptir.

    Harici bir program bir alt programı çağırır. Veriler alt programa, alt program başlığında açıklanan parametreler veya bağımsız değişkenler biçiminde iletilir.

    Alt programlar iç içe olabilir, yani bir alt program yalnızca ana program, aynı zamanda başka bir alt programdan. Bir alt program kendini çağırabilir. Bu yaklaşım denir özyineleme.

    Alt programların önemli bir özelliği, yeniden kullanılabilir olmalarıdır. Entegre programlama sistemleri, standart rutinlerden oluşan büyük kitaplıklarla birlikte gelir.

    Modül- bir bütün olarak prosedür, işlev, birim, program - mantıksal olarak eksiksiz bileşen programlar.

    Prosedürel programlama dilleri- alt programların kullanımının mümkün olduğu yerler.

    Yapılandırılmış programlama- Programın yapısı, çözüm algoritmasının kaynak metinden açıkça görülebilmesi için çözülmekte olan sorunun yapısını yansıtmalıdır. Bu amaçla alt program kavramı ortaya atılmıştır.

    Yapılandırılmış programlama- programın blokların hiyerarşik yapısı şeklinde temsiline dayanan yazılım geliştirme metodolojisi. XX yüzyılın 70'lerinde E. Dijkstroy tarafından önerildi, N. Wirth tarafından geliştirildi ve tamamlandı.

    Bu metodolojiye göre

    Herhangi bir program, şunlardan oluşturulmuş bir yapıdır: üç tip temel yapılar:
      sıralı yürütme- işlemlerin program metninde yazıldığı sırayla tek bir yürütme; dallanma- belirli bir koşulun yerine getirilmesine bağlı olarak, iki veya daha fazla işlemden birinin tek bir yürütülmesi; döngü- belirli bir koşul sağlanana kadar (döngüyü sürdürme koşulu) aynı işlemin tekrar tekrar yürütülmesi.

    Programda, temel yapılar isteğe bağlı olarak birbiri içine yerleştirilebilir, ancak işlem sırasını kontrol etmek için başka hiçbir yol sağlanmamıştır.

    Tekrarlanan program parçacıkları(veya tekrar etmeyen, ancak mantıksal olarak tutarlı bilgi işlem bloklarını temsil eden) sözde şeklinde yapılabilir. alt programlar(prosedürler veya işlevler). Bu durumda, ana programın metnine, alt programa yerleştirilen parça yerine, alt program çağrı talimatı eklenir. Böyle bir komut yürütüldüğünde, çağrılan alt program yürütülür ve ardından programın yürütülmesi, alt programı çağırma talimatını takip eden komutla devam eder. Programın geliştirilmesi, “yukarıdan aşağıya” yöntemi kullanılarak adım adım gerçekleştirilir.

    İlk olarak, ana programın metni yazılır; burada, birbirine bağlı her mantıksal metin parçası yerine, bu parçayı yürütecek olan alt programa bir çağrı eklenir. 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 programların doğru sırayla çağrıldığına (yani, programın genel yapısının doğru olduğuna) ikna olduktan sonra, saplama rutinleri sıralı olarak gerçek rutinlerle değiştirilir ve her bir alt programın geliştirilmesi aynı şekilde gerçekleştirilir. Ana program olarak yol. Geliştirme, kaldırılmamış tek bir "tıkaç" kalmadığında sona erer. Böyle bir dizi, geliştirmenin her aşamasında programcının aynı anda görünür ve anlaşılır bir dizi parça ile 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 programda değişiklik yaparken, hangi prosedürlerin değiştirilmesi gerektiği netleşir ve programın kendileriyle doğrudan ilgili olmayan kısımlarını etkilemeden yapılır. Bu, değişiklikler yaptığınızda ve hataları düzelttiğinizde programın bir kısmının şu an programcının görüş alanının dışında.

    Yukarıdan Aşağıya Tasarım– baştan sona bir uygulamanın (programın) geliştirilmesi. İlk olarak, en genel görevleri (örneğin, veri başlatma) çözen birkaç alt program (modül) seçilir, ardından bu modüllerin her biri daha düşük bir seviyede detaylandırılır, az sayıda başka alt programa bölünür, vb.

    Olaya Dayalı Programlama- programın ana kısmı birdir sonsuz döngü, yeni bir olay mesajı olup olmadığını görmek için Windows'u yoklar. Bir olay algılandığında, olayı işlemekten sorumlu olan alt program çağrılır. Döngü, bir "kapatma" mesajı alınana kadar devam eder.

    olaylar olabilir

    gelenek(kullanıcı eylemlerinin bir sonucu olarak ortaya çıkar)

    sistemik(işletim sisteminde ortaya çıkar, örneğin bir zamanlayıcıdan bir mesaj)

    programlı(program tarafından oluşturulan, örneğin, bir hatayı işlemeniz gerekir)

    İstisna- programda veya işletim sisteminde anında yanıt gerektiren bir durum, örneğin 0'a bölme.

    programlama türleri

      Yapısal Fonksiyonel Programlama Mantık Programlama Otomata Programlama Prosedürel Programlama Nesne Yönelimli Programlama Prototip Programlama Görünüş Yönelimli Programlama Bileşen Yönelimli Programlama

    Mantık programlama- otomatik teorem ispatına dayalı bir programlama paradigması ve ayrıca verilen gerçeklere ve çıkarım kurallarına dayalı olarak mantıksal bilgi çıkarımı ilkelerini inceleyen ayrık matematiğin bir bölümü. Mantık programlama, çözümlerin matematiksel ilkelerini kullanan matematiksel mantığın teorisine ve aparatına dayanır. (dil önsöz).

    Prosedürel (zorunlu) programlama 1940'larda von Neumann tarafından önerilen geleneksel bilgisayar mimarisinin bir yansımasıdır. Prosedürel programlamanın teorik modeli, Turing Machine adı verilen algoritmik bir sistemdir.

    Prosedürel programlama dilindeki bir program, bir problem çözme prosedürünü tanımlayan bir dizi operatörden (talimat) oluşur. Bunlardan en önemlisi, bellek alanlarının içeriğini değiştirmeye yarayan atama operatörüdür. İçeriği program ifadeleriyle güncellenebilen bir değer deposu olarak bellek kavramı, zorunlu programlamanın temelidir.

    Programın yürütülmesi, dönüştürmek için operatörlerin sıralı yürütülmesine indirgenmiştir. başlangıç ​​hali hafıza, yani ilk verilerin değerleri, final, yani sonuçlara. Bu nedenle, programcının bakış açısından, bir program ve bellek vardır ve birincisi, sonrakinin içeriğini sırayla günceller.

    Prosedürel bir programlama dili, programcının bir problemi çözme sürecindeki her adımı tanımlamasına izin verir. Bu tür programlama dillerinin özelliği, görevlerin adımlara bölünmesi ve adım adım çözülmesidir. Bir programcı, prosedürel bir dil kullanarak, bir dizi algoritmik adımı gerçekleştirmek için dil yapılarını tanımlar.

    Prosedürel programlama dilleri

    ada (dil genel amaçlı)

    Basic (Quick Basic'ten Visual Basic'e sürümler)

    Fortran

    Modül-2

    fonksiyonel programlama oldukça titiz soyut kavramlara ve sembolik veri işleme yöntemlerine dayanan hesaplama süreçlerinin tanımına yönelik farklı yaklaşımları birleştirir. Bir fonksiyonun matematiksel konseptini kullanarak programlama bazı zorluklara neden olur, bu nedenle fonksiyonel diller bir dereceye kadar zorunlu özellikler de sağlar, bu da programın tasarımını kötüleştirir (örneğin, ağrısız daha fazla değişiklik olasılığı). Zorunlu programlama dillerinden ek bir fark, işlev açıklamalarının bildirimsel doğasıdır. İşlevsel programlama dillerinde program metinleri betimlemek"sorun nasıl çözülür", ama değil Reçetelemekçözmek için adımlar dizisi. Tasarlanan ilk işlevsel dil, Lisp.

    Makine dili, programları belirli bir bilgisayarın donanımı tarafından doğrudan uygulanmasına izin veren bir biçimde temsil eden bir programlama dilidir.

    Düşük seviyeli diller- Birleştirici ve Makro Birleştirici.

    Veri biçimlendirme dili bilgisayar terminolojisinde, çıktısı veya yapısı hakkında bilgi iletmek için metne eklenen bir dizi karakter veya dizi. Bilgisayar dilleri sınıfına aittir.. Metin belgesi, bir biçimlendirme dili kullanılarak yazılmış, yalnızca metnin kendisini (sözcükler ve noktalama işaretleri dizisi olarak) değil, aynı zamanda çeşitli bölümleri hakkında ek bilgiler de içerir; örneğin, başlıklar, vurgulamalar, listeler vb. zor vakalar Biçimlendirme dili, diğer belgelerden etkileşimli öğeler ve içerik eklemenizi sağlar.

    İşaretleme dilleri kullanılmış biçimlendirilmiş metin çıktısının gerekli olduğu her yerde: tipografide (SGML, TeX, PostScript, PDF), Kullanıcı arayüzleri bilgisayarlar (Microsoft Word, OpenOffice, troff), World Wide Web (HTML, XHTML, XML, WML, VML, PGML, SVG).

    XML (Köprü Metni Biçimlendirme Dili), World Wide Web'deki belgeler için standart biçimlendirme dilidir.

    java Sun Microsystems Corporation tarafından yüksek düzeyde etkileşime sahip web tarayıcısı tabanlı uygulamalar oluşturmak için kullanılan platformlar arası, yorumlanmış, nesne yönelimli bir programlama dili olarak geliştirilmiş nesne yönelimli bir programlama dilidir.

    java. Nesne Yönelimli Dil programlama. ana özellik Bu dilin makine koduna değil, her komutun 1 bayt kapladığı ve yorumlayıcı varsa herhangi bir işletim sistemine sahip herhangi bir makinede çalıştırılabilen bayt koduna derlemesidir. Bu tercüman isminde " sanal makinejava". Java programları makineden makineye kaynak kodu veya bytecode olarak aktarılabilir. Popülarite açısından Java, Basic'ten sonra dünyada ikinci sırada yer alıyor.

    javasenaryo- Java dili temel alınarak geliştirilmiş ve sitenin işlevselliğini artırmak için html sayfalarının bir parçası olarak kullanılan bir programlama dili.

    Asıl fark dil javasenaryo diğer herhangi bir programlama dilinden java betikleri içine yerleştirilmiş html sayfaları ve ayrı programlar olarak var olamaz, ancak yalnızca tarayıcılarda çalıştırıldığında çalışır.

    SQL(Yapılandırılmış Sorgu Dili) - dil yapılandırılmış sorgular. Yapılandırılmış Sorgu Dili şuna dayalıdır: ilişkisel cebir. Bu, bir yanıt almak için gereken bir dizi eylemi belirtmeden bilgi arama koşullarını tanımlamanıza izin veren bir veri işleme dilidir. SQL, bir veritabanı sunucusuna erişmenin standart yoludur. SQL standardı, verileri tanımlamak, değiştirmek, doğrulamak ve korumak için bileşenler içerir.

    önsöz(İngilizce) Prolog), birinci dereceden yüklem mantığının bir alt kümesi olan Horn yan tümcelerinin matematiksel mantığının yüklem diline dayalı bir mantık programlama dili ve sistemidir. Prolog dilindeki ana kavramlar, bilgi tabanlarını, çıkarım prosedürlerini ve karar vermeyi tanımlamaya izin veren gerçekler, çıkarım kuralları ve sorgulamalardır.

    AD gömülü sistemler için bir programlama dilidir. oluşturmak için genel amaçlı bir programlama dilidir. karmaşık sistemler, işletim sistemlerinden yüksek derecede bağımsızlık ile karakterize edilir ve gerçek zamanlı olarak paralel veri işleme için destek sağlar.

    Entegre programlama sistemleri şunları içerir:

    · Metin düzeltici

    derleyici

    bağlantı düzenleyici

    işlev kitaplıkları

    hata ayıklayıcı (adım adım)

    Hızlı tasarım için görsel ortamlar:

    Temel; Microsoft Visual Basic

    paskal; Borland Delfi

    C++; Microsoft Visual C++

    java Borland JBuilder

    C#; Microsoft Görsel mi? Borland C# Oluşturucu

    Mimari yazılım sistemleri : bağımsız uygulama(bir bilgisayarda çalışır ); dosya sunucusu mimari, müşteri sunucusu mimari, çoklu bağlantı mimari (seri bağlı sunucular arasında işlevlerin dağılımı = bağlantılar), dağıtılmış (ağa bağlı herhangi bir sunucuda çalıştırılabilen bir dizi bileşen biçiminde bir program).

    Paralel Hesaplama– bir programın bağımsız bölümlerinin farklı işlemcilerde aynı anda yürütülmesi.

    ISO 9126 açısından, Kalite ( yazılım araçları) aşağıdaki bileşenleri dikkate alarak, incelenen yazılımın kümülatif bir özelliği olarak tanımlanabilir:

      Güvenilirlik Sürdürebilirlik Pratiklik Verimlilik Mobilite İşlevsellik

    Nesne yönelimli programlama

    Nesne Yönelimli Dil- nesne kavramını, özelliklerini ve işleme yöntemlerini destekleyen ve kalıtım ve polimorfizmi destekleyen bir programlama dili.

    Sınıf alanları, yöntemleri ve özellikleri içeren özel bir veri türüdür.

    alanlar- sınıfta kapsüllenmiş veriler

    Özellikler– alanlara erişimi düzenleyen özel bir mekanizma.

    Yöntemler– sınıfta kapsüllenmiş prosedürler ve işlevler.

    Sınıflar 3 temel prensibe dayanmaktadır kapsülleme, kalıtım ve polimorfizm olarak adlandırılır.

    kapsülleme- üç varlığı (alanlar, yöntemler ve özellikler) tek bir bütün halinde (yani bir sınıfa) birleştirmek, bu, sınıfı programın geri kalanından büyük ölçüde izole etmenize, onu belirli bir sorunu çözmek için kendi kendine yeterli hale getirmenize olanak tanır. Örneğin, Tform sınıfı, bir Windows penceresi oluşturmak için gereken her şeyi içerir (kapsüller).

    Miras– tüm alanlarının, yöntemlerinin ve özelliklerinin devralınması ve yenilerinin eklenmesi ile mevcut bir sınıfa dayalı olarak yeni sınıflar oluşturma yeteneği. Selefi olmayan bir sınıfa temel sınıf denir.

    Bir obje sınıfın uygulanmasının bir örneğidir.

    Bir obje(simülatöre göre) bir dizi özellik (bu nesneye özgü veri yapıları), bunların işlenmesi için yöntemler (özellikleri değiştirmek için alt programlar) ve hangi olaylar için verilen nesne tepki verebilir ve kural olarak nesnenin özelliklerinde bir değişikliğe yol açar.

    Sınıf Kalıtımın nereden oluştuğuna denir temel ( simülatörde ) veya ebeveyn.

    sınıflar tabandan inen , denir torunlar, mirasçılar veya türetilmiş sınıflar. Türetilmiş sınıflar, temel sınıftan özellikleri ve yöntemleri devralır.

    Temel sınıfın veri listelerini işlemek için bir dizi özelliği ve yöntemi varsa, o zaman temel sınıfın tüm soyundan gelenler bu özellikleri ve yöntemleri devralır, ancak aynı zamanda işlemek için yeni özelliklere ve yöntemlere sahip olabilirler.

    Soyut sınıf nesne yönelimli programlamada, somutlaştırılmamış bir sınıf. Soyut bir sınıf nesnelere sahip olamaz çünkü nesneler üzerinde işlemler tanımlamaz; nesneler, soyut sınıfın somut alt sınıflarına ait olmalıdır. Soyut sınıflar, işlem arabirimlerini belirtmek için kullanılır.

    Ana - Ana sınıf konsepti mevcut değil.

    Nesne yönelimli yaklaşım kavramına dayanmaktadır sınıf hiyerarşileri.

    Nesne yönelimli programlamada, nesne kavramı bir şemaya karşılık gelir. A.

    · Program oluşturulurken farklı sınıflara göre görsel olarak farklı üç nesne kullanılmıştır. Tüm nesneler, veri listelerini işlemenize izin verir (ancak farklı grafik gösterimlerde) ve farklı özelliklere sahiptir. Şekil ayrıca bu nesneler için hiyerarşik sınıf yapısını da göstermektedir. Kullanılan üç sınıf için kırmızıyla vurgulanan sınıf, temel

    Görsel programlama dili Visual Basic'te bir program modeli geliştirildi ve rastgele numaralar seçilen yasaya ve belirli parametrelere göre. gelişmiş GUI _____ tarafından kullanılan uygulamalar 9 _____ görsel nesneler.

    Toplamda 9 nesne kullanılır:
    2 nesne "Giriş alanı",
    3 nesne "Yazıt",
    1 açılır liste nesnesi,
    1 Seçim nesnesi,
    1 "Düğme" nesnesi,
    · 1 "Form" nesnesi.

    Nesne yönelimli bir yaklaşım kullanarak grafik görüntüleri işlemek için bir program geliştirilmiştir. Kullanılabilir işleme prosedürlerinin listesi şekilde gösterilmiştir ve yalnızca kullanıcı tarafından belirtilen olayları işleyen bir olay işleyici uygulanır. Bu seçim ile işlem yapılırsa görüntü nesnesinin kaç özelliği değişir? 3

    Seçilen tüm olaylardan yalnızca "Görüntüyü Yeniden Boyutlandır", "Kontrastı Değiştir", "Parlaklığı Değiştir" prosedürleri görüntü nesnesinin özelliklerini değiştirir.

    Nesne yönelimli bir yaklaşım kullanılarak bir program oluşturulmuştur. Formda iki nesne vardır: "Düğme" ve "Seçim Kutusu". Düğme tıklama olay işleyicisi, bu nesnelerin görsel özelliklerini değiştirmek için programlanmıştır. Şekil, bildirilen olayın yürütülmesinden önceki ve sonraki nesneleri ve yerleşimlerini gösterir. Nesnelerin uzamsal koordinatlarının da görsel özellikler olduğunu varsayarsak, o zaman ___ 7 ____ görsel özellikler.

    Seçim Kutusu nesnesinin özellikleri değişti: Yatay Konum ve Dikey Konum ile Etiket ve Seçim Durumu. Button nesnesinin Yatay Konumu ve Dikey Konumunun yanı sıra Etiketi de değişti.