Pemrograman terstruktur disebut. Teknologi pemrograman struktural. Prinsip Dasar Pemrograman Terstruktur

FGBOU VO "Negara Bagian Mordovia

Institut Pedagogis dinamai M.E. evsevyeva"

Fakultas Fisika dan Matematika

Departemen Teknik Informatika dan Komputer

KARANGAN

“Prinsip pemrograman terstruktur. Struktur algoritmik dasar dan superposisinya”

Diselesaikan oleh: mahasiswa gr. MDM-212

Bagdanova Yana

Saransk 2016

pengantar

Pada awal tahun 70-an abad ke-20, ketika perkembangan bahasa pemrograman mencapai tingkat yang cukup tinggi, dan sistem perangkat lunak yang dibuat mencapai ukuran yang cukup mengesankan (ratusan ribu - jutaan perintah), menjadi jelas bahwa proyek perangkat lunak telah menjadi terlalu rumit untuk desain, pengkodean, dan debugging yang sukses, dalam jangka waktu yang dapat diterima. Pemrogram yang memecahkan masalah kompleks dihadapkan pada masalah pertumbuhan jumlah dan ukuran program sedemikian rupa sehingga proses pengembangan lebih lanjut menjadi hampir tidak terkendali, dan tidak ada seorang pun dari pengembang yang dapat mengatakan dengan pasti bahwa produk perangkat lunak yang dibuat selalu melakukan apa diperlukan, dan tidak melakukan apa pun yang tidak diperlukan. Dengan demikian, masalah perubahan radikal dalam pendekatan pembuatan sistem perangkat lunak besar telah muncul.

Berdasarkan masalah ini, programmer terkemuka tahun 70-an (Dijkstra , Wirth , Dal , xoap , Yordania , Konstantin , Myers dll.), aturan ketat untuk manajemen proyek dikembangkan, yang disebutmetodologi struktural .

Langkah penting dalam pengembangan pendekatan ini adalah konferensi pemrograman internasional yang diadakan pada tahun 1968-69. Pada yang kedua dari merekaEdsger Dijkstra pertama kali menggunakan istilah tersebutpemrograman terstruktur ” dan mengusulkan cara baru yang fundamental untuk membuat program. Dia menganggap program sebagai satu set tingkat abstrak hierarkis yang memungkinkan:

    struktur program dengan jelas, yang meningkatkan pemahamannya oleh pemrogram;

    melakukan pembuktian kebenarannya dan dengan demikian meningkatkan keandalan program;

    mengurangi waktu pengembangan program.

Dorongan lain untuk mengubah cara berpikir pemrogram adalah surat yang diterbitkanDijkstra editor salah satu penerbit ilmiah yang berjudul "Pernyataan GOTO harus dianggap berbahaya ". Surat ini menimbulkan kontroversi tajam di antara para programmer saat itu, tetapi pada akhirnya, pemikiran struktural menang, yang selainDijkstra , didukung secara aktif oleh profesor di Technical University of ZurichWirth dan profesor di Universitas Oxfordxoap . Salah satu hasil dari kontroversi tersebut adalah bukti bahwa program apa pun dapat ditulis hanya dengan menggunakan rangkaian pernyataan sederhana, seperti konstruksi iteratifketika ( selamat tinggal ) dan konstruksi pilihankasus ( pilihan ), dan operatornyapergi ke ( pergi ke ) bukan konstruk kontrol yang diperlukan dalam pemrograman terstruktur. Sayangnya, perselisihan tentang operatorpergi ke memiliki satu "efek samping" negatif - cukup sering pemrograman tanpapergi ke menjadi diidentifikasi dengan semua pemrograman terstruktur. Namun, tujuan pemrograman terstruktur jauh lebih global dan serius.

1. DASAR-DASAR TEKNOLOGI PEMROGRAMAN STRUKTURAL

Pemrograman terstruktur - metodologi pengembangan perangkat lunak, yang didasarkan pada representasi program dalam bentuk struktur hierarki blok. Diusulkan pada tahun 70-an abad XX. E. Dijkstroy, dikembangkan dan ditambah oleh N. Wirth (Gbr. 1).

Edsger Wiebe Dijkstra (1930 - 2002) - Ilmuwan Belanda, yang idenya mempengaruhi perkembangan industri komputer. Dikenal sebagai pencipta algoritma untuk menemukan jalur terpendek pada grafik, salah satu pendiri pemrograman terstruktur. Pada tahun 1972 ia memenangkan Penghargaan Turing.

Nikolaus Wirth (1934) - Ilmuwan Swiss, ilmuwan komputer, salah satu ahli teori paling terkenal dalam pengembangan bahasa pemrograman, profesor ilmu komputer, pemenang Hadiah Turing pada tahun 1984. Pengembang terkemuka bahasa pemrograman Pascal, Modula-2, Oberon .

Beras. 1. Pelopor pemrograman terstruktur adalah E. Dijkstra dan N. Wirth.

Metodologi pemrograman terstruktur muncul sebagai akibat dari meningkatnya kompleksitas tugas yang diselesaikan pada komputer, dan komplikasi perangkat lunak yang sesuai: di tahun 70-an abad XX. volume dan kompleksitas program telah mencapai tingkat sedemikian rupa sehingga pengembangan program yang "intuitif" (tidak terstruktur), yang merupakan norma di lebih banyak waktu awal berhenti untuk memenuhi kebutuhan latihan. Program menjadi terlalu kompleks untuk dipelihara dengan baik, sehingga diperlukan beberapa sistematisasi proses pengembangan dan struktur program.

OperatorPERGI KE ( operator lompatan tanpa syarat ). Penggunaan transisi sewenang-wenang yang salah dan tidak dipikirkan dalam teks program menyebabkan program yang membingungkan dan terstruktur dengan buruk (disebut.koda spageti ), menurut teks yang hampir tidak mungkin untuk memahami urutan eksekusi dan saling ketergantungan fragmen.

Pemrograman terstruktur didasarkan pada prinsip-prinsipdekomposisi berurutan tugas dansengaja diapenataan menjadi komponen individu. Metode pemrograman terstruktur adalah seperangkat prinsip teknis dan organisasi desain sistem produk perangkat lunak.

Metode khas pemrograman terstruktur adalah:

    desain atas-bawah (desain dari atas ke bawah);

    modular (prosedural)pemrograman ;

    pengkodean struktural .

Menurut metodologi pemrograman terstruktur:

1. Setiap program adalah struktur yang dibangun dari tiga jenis struktur dasar:

    eksekusi berurutan - satu eksekusi operasi sesuai urutan yang tertulis dalam teks program;

    percabangan - satu eksekusi dari salah satu dari dua atau lebih operasi, tergantung pada pemenuhan beberapa kondisi yang diberikan;

    siklus - eksekusi berulang dari operasi yang sama sampai beberapa kondisi tertentu terpenuhi (kondisi untuk melanjutkan siklus).

Dalam program, struktur dasar dapat disarangkan satu sama lain secara sewenang-wenang, tetapi tidak ada cara lain untuk mengontrol urutan operasi yang disediakan.

2. Mengulang fragmen program (atau tidak berulang, tetapi merepresentasikan koheren secara logis blok komputasi) dapat ditulis dalam bentuksubrutin (prosedur atau fungsi). Dalam hal ini, dalam teks program utama, alih-alih fragmen yang ditempatkan di subrutin, instruksi panggilan subrutin dimasukkan. Ketika instruksi seperti itu dieksekusi, subrutin yang dipanggil dieksekusi, setelah itu eksekusi program dilanjutkan dengan instruksi yang mengikuti instruksi untuk memanggil subrutin.

3. Pengembangan program dilakukan secara bertahap dengan menggunakan metode “top-down”.

Pertama, teks dari program utama ditulis, di mana, alih-alih setiap fragmen teks logis yang terhubung, panggilan ke subrutin yang akan mengeksekusi fragmen ini dimasukkan. Alih-alih subrutin yang nyata dan berfungsi, "colokan ' yang tidak melakukan apa-apa. Program yang dihasilkan diperiksa dan di-debug. Setelah pemrogram yakin bahwa subrutin dipanggil dalam urutan yang benar (yaitu, struktur umum program benar), rutinitas rintisan diganti secara berurutan dengan yang asli, dan pengembangan setiap subrutin dilakukan dengan cara yang sama. sebagai program utama. Pengembangan berakhir ketika tidak ada satu pun "rintisan" tersisa yang belum dihapus. Urutan seperti itu memastikan bahwa pada setiap tahap pengembangan, pemrogram secara bersamaan berurusan dengan kumpulan fragmen yang terlihat dan dapat dipahami, dan dapat memastikan bahwa struktur umum dari semua level program yang lebih tinggi sudah benar. Saat memelihara dan membuat perubahan pada program, menjadi jelas prosedur mana yang perlu diubah, dan dibuat tanpa memengaruhi bagian program yang tidak terkait langsung dengannya. Ini memastikan bahwa saat membuat perubahan dan memperbaiki kesalahan, beberapa bagian dari program yang saat ini berada di luar jangkauan pemrogram tidak akan gagal.

Mengikuti prinsip pemrograman terstruktur membuat teks program, bahkan yang cukup besar, dapat dibaca secara normal. Memahami program menjadi lebih mudah, menjadi mungkin untuk mengembangkan program dalam mode industri normal, ketika sebuah program dapat dipahami tanpa banyak kesulitan tidak hanya oleh pembuatnya, tetapi juga oleh pemrogram lain. Hal ini memungkinkan untuk mengembangkan sistem perangkat lunak yang cukup besar pada saat itu oleh kekuatan tim pengembangan, dan mempertahankan kompleks ini selama bertahun-tahun, bahkan saat menghadapi perubahan komposisi personel yang tak terhindarkan.

Metodologi pengembangan perangkat lunak struktural telah diakui sebagai "formalisasi terkuat tahun 70-an". Setelah itu, kata "struktural" menjadi mode di industri, dan mulai digunakan di mana pun diperlukan dan di mana tidak diperlukan. Pekerjaan muncul pada "desain struktural", "pengujian struktural", "desain struktural", dll.

Keuntungan dari pemrograman terstruktur meliputi yang berikut:

1. Pemrograman struktural memungkinkan Anda untuk secara signifikan mengurangi jumlah opsi untuk membangun program sesuai dengan spesifikasi yang sama, yang secara signifikan mengurangi kompleksitas program dan memudahkan pengembang lain untuk memahaminya.

2. Dalam program terstruktur, operator yang terkait secara logis lebih dekat secara visual, dan operator yang terkait lemah lebih jauh, yang memungkinkan untuk dilakukan tanpa diagram alur dan bentuk grafik lain dari algoritme penggambaran (sebenarnya, program itu sendiri adalah diagram alurnya sendiri).

3. Proses pengujian dan debugging program terstruktur sangat disederhanakan.

Mari pertimbangkan lebih detail metode utama pemrograman terstruktur.

1.1. Tujuan dan prinsip pemrograman terstruktur

Tujuan Pemrograman Terstruktur adalah:

    Memastikan Disiplin Pemrograman dalam proses pembuatan sistem perangkat lunak .

    Meningkatkan keterbacaan program . Keterbacaan meningkat jika aturan berikut diikuti:

    • hindari menggunakan konstruksi bahasa dengan semantik yang tidak jelas;

      berusaha untuk melokalkan tindakan struktur kontrol dan penggunaan struktur data;

      merancang program sehingga dapat dibaca dari awal hingga akhir tanpa kendali melompat ke halaman lain.

    Meningkatkan Efisiensi Program . Hal ini dapat dicapai dengan menyusun program ke dalam modul sehingga kesalahan dapat dengan mudah ditemukan dan diperbaiki, dan teks dari setiap modul dapat ditulis ulang secara terpisah dari yang lain untuk meningkatkan efisiensi.

    Meningkatkan Keandalan Program . Ini dapat dicapai jika program mudah untuk pengujian ujung ke ujung dan tidak menimbulkan masalah untuk mengatur proses debug. Ini dipastikan dengan penataan program yang baik ketika dibagi menjadi modul dan dengan mengikuti aturan untuk menulis program yang dapat dibaca.

    Mengurangi waktu dan biaya pengembangan perangkat lunak . Ini terjadi ketika setiap pemrogram dalam tim pengembangan mampu menulis dan men-debug lebih banyak kode daripada sebelumnya.

Utamaprinsip pemrograman terstruktur dirangkum dalam Tabel. 1.

Tabel 1. Prinsip Pemrograman Terstruktur

Prinsip

Penjelasan

Abstraksi

Abstraksi memungkinkan programmer untuk membayangkan solusi yang diinginkan untuk suatu masalah tanpa harus memperhitungkan banyak detail pada saat itu juga. Pemrogram dapat melihat program secara berlapis: tingkat atas menunjukkan banyak abstraksi, membuatnya lebih mudah untuk melihat desainnya, sedangkan tingkat bawah menunjukkan detail implementasi yang halus.

Formalitas

Penggunaan pendekatan metodologis yang ketat dalam pengembangan program, yang menjadi dasar transformasi pemrograman dari improvisasi menjadi disiplin teknik. Prinsip ini memberikan dasar untuk membuktikan kebenaran program, karena memungkinkan mempelajari program (algoritma) sebagai objek matematika.

"Bagi dan aturan"

Membagi program menjadi fragmen (modul) terpisah yang mudah dikelola dan memungkinkan debugging dan pengujian independen.

Urutan hierarkis

Struktur pembagian menjadi beberapa bagian tidak kalah pentingnya dengan fakta pembagian semacam itu. Prinsip ini mengedepankan persyaratan untuk penataan hierarki hubungan antar modul paket perangkat lunak, yang membuatnya lebih mudah untuk mencapai tujuan pemrograman terstruktur.

1.2. Desain Top-Down

Spesifikasi tugas berfungsi sebagai titik awal untuk membuat program. Penting untuk memahami tindakan apa yang harus diambil untuk menyelesaikan masalah, mendeskripsikannya dalam bahasa alami dan pada tingkat abstraksi yang cukup tinggi.

Spesifikasi tugas adalah cetak biru utamanya. Dari situ kami beralih ke program, secara bertahap menyempurnakan deskripsi.

Penyempurnaan proyek secara bertahap disebutmetode desain top down ( selangkah demi selangkah ataudesain atas-bawah ).

Contoh 1 Sebagai contoh, pertimbangkan proyek mendandani anak.

Keputusan:

1. Tujuan utama :

Berdandan.

2. Spesifikasi tujuan pada langkah pertama :

Pakai setengah bagian bawah.

Pakai setengah bagian atas.

2.1. Bagian bawah dapat dikenakan dalam dua tahap:

Kenakan celana panjang.

Kenakan kaus kaki dan sepatu bot.

2.2. Bagian atas juga bisa didandani dalam dua tahap:

Kenakan kemeja.

Kenakan jaket.

3. Draf akhir terlihat seperti itu:

Kenakan celana panjang.

Kenakan kaus kaki.

Kenakan sepatu bot.

Kenakan kemeja.

Kenakan jaket.

Metode Desain Top-Down melibatkan dekomposisi berurutan dari keseluruhan fungsi pemrosesan data menjadi elemen fungsional sederhana (“top-down”). Akibatnya, skema hierarki dibangun -struktur fungsional dari algoritma ( OJK ), yang mencerminkan komposisi dan subordinasi fungsi individu (Gbr. 2).

Lampiran 1

Lampiran n

Fungsi 1

Fitur 2

Fungsi m

Departemen 11

Departemen 1 k

Sub-fraksi m 1

Sub-fraksi m 2

Sub-fraksi mp

Tujuan 1

Subtujuan 11

Subtujuan 1s

Target2

tujuan bawahan2 1

tujuan bawahan2 q

Beras. 2. Struktur fungsional dari aplikasi

Urutan tindakan untuk mengembangkan aplikasi OJK adalah sebagai berikut:

    ditentukantujuan otomatisasi bidang subjek dan hierarkinya (goal-subgoal);

    diinstalkomposisi aplikasi (tugas pemrosesan) yang memastikan implementasi tujuan yang ditetapkan;

    untuk ditentukansifat hubungan aplikasi dan karakteristik utamanya (informasi untuk menyelesaikan masalah, waktu dan frekuensi solusi, kondisi untuk eksekusi, dll.);

    diperlukan untuk memecahkan masalah ditentukanfungsi pemrosesan data ;

    dilakukandekomposisi fungsi pemrosesan hingga kompleksitas struktural yang diperlukan yang diterapkan oleh toolkit yang diusulkan.

Struktur aplikasi ini mencerminkan yang paling penting -komposisi danhubungan fungsi memproses informasi untuk penerapan aplikasi, meskipun tidak mengungkapkan logika pelaksanaan masing-masing fungsi, kondisi atau frekuensi panggilan mereka.

1.3. Pemrograman modular

Pemrograman modular adalah konsekuensi alami dari desain top-down dan program dipecah menjadi beberapa bagian −modul , dikembangkan secara terpisah.

Modul adalah bagian independen dari program, yang memiliki tujuan tertentu dan menyediakan fungsi yang telah ditentukan sebelumnya memproses secara independen dari orang lain modul perangkat lunak. Modul ini terdiri dari sekumpulan elemen fungsional yang saling terhubung secara logis.

Dalam pemrograman, modul terpisahsubrutin , dan subrutin sering disebutProsedur atauprosedur fungsi . Oleh karena itu, disebut juga pemrograman modularprosedural .

Saat membuat produk perangkat lunak, mereka menonjolmodul yang dapat digunakan kembali , tipifikasi dan penyatuannya dilakukan, yang mengurangi waktu dan biaya tenaga kerja untuk pengembangan produk perangkat lunak secara keseluruhan.

Beberapa produk perangkat lunak menggunakan modul dari pustaka siap pakai dari subrutin standar, prosedur, fungsi, objek, metode pemrosesan data.

Di antara banyak modul adalah:

    modul kepala - mengelola peluncuran produk perangkat lunak (ada dalam bentuk tunggal);

    modul kontrol – menyediakan panggilan ke modul lain untuk diproses;

    modul kerja - melakukan fungsi pemrosesan;

    modul layanan dan perpustakaan , keperluan - Menerapkan fungsi layanan.

Dalam karya produk perangkat lunak, modul perangkat lunak yang diperlukan diaktifkan. Modul kontrol mengatur urutan panggilan untuk eksekusi modul berikutnya. Komunikasi informasi modul disediakan melalui penggunaan database umum atau transfer data antar modul melalui variabel pertukaran.

Setiap modul dapat dikonfigurasi sebagai file yang menyimpan sendiri; untuk berfungsinya produk perangkat lunak, diperlukan keberadaan modul perangkat lunak dalam komposisi penuh.

Modul harus memiliki yang berikut iniproperti :

    satu pintu masuk dan satu pintu keluar - pada input, modul program menerima satu set data awal tertentu, melakukan pemrosesan yang berarti dan mengembalikan satu set data hasil, mis. menerapkan prinsip standarIPO ( Input-Proses-Output masuk-proses-keluar );

    kelengkapan fungsional - modul melakukan daftar operasi yang diatur untuk implementasi setiap fungsi individu secara keseluruhan, cukup untuk menyelesaikan pemrosesan yang dimulai;

    independensi logis - hasil kerja modul program hanya bergantung pada data awal, tetapi tidak bergantung pada kerja modul lain;

    tautan informasi yang lemah dengan modul perangkat lunak lain – pertukaran informasi antar modul harus diminimalkan sebanyak mungkin;

    dapat diperkirakan dalam ukuran dan kompleksitas kode program .

Modul berisi:

    penentuan data yang tersedia untuk diproses;

    operasi pemrosesan data;

    skema interkoneksi dengan modul lain.

Setiap modul terdiri darispesifikasi dantubuh . Spesifikasi menentukan aturan untuk menggunakan modul, dantubuh - cara untuk mengimplementasikan proses pemrosesan.

Fungsi dengan tipe yang sama diimplementasikan oleh modul yang sama. Fungsi tingkat atas disediakan oleh modul utama; itu mengatur pelaksanaan sub-fungsi yang sesuai dengan sub-modul.

Saat menentukan sekumpulan modul yang mengimplementasikan fungsi algoritme tertentu, hal-hal berikut harus diperhitungkan:

    setiap modul dipanggil untuk dieksekusi oleh modul tingkat yang lebih tinggi dan, setelah menyelesaikan pekerjaannya, mengembalikan kontrol ke modul yang memanggilnya;

    membuat keputusan utama dalam algoritme dibawa ke tingkat tertinggi dalam hierarki;

    untuk menggunakan fungsi yang sama di tempat yang berbeda dari algoritme, satu modul dibuat, yang dipanggil untuk dieksekusi sesuai kebutuhan.

Sebagai hasil penyempurnaan lebih lanjut dari algoritma, askema fungsional-modular ( FMS ) algoritma aplikasi, yang menjadi dasar pemrograman (Gbr. 2).

Komposisi dan jenis modul program, tujuan dan sifat penggunaannya dalam program sangat ditentukan oleh alatnya.

Tingkat kedua dari hierarki program

Tingkat pertama dari hirarki program

Modul kepala

(program server)

Modul kontrol 1

(manajer program 1)

modul kontrol n

(prog.manager n)

Modul 1A

(subprogram 1A)

Modul 1B

(subprogram 1B)

modul 1W

(subrutin 1 W )

Modul 0A

(subrutin 0A)

Modul 0B

(subrutin 0B)

Modul nA

(subrutin nA)

modul nB

(subrutin nB)

modul nW

(subrutin nW)

Tingkat ketiga dari hirarki program

Beras. 3. Struktur fungsional-modular dari algoritma aplikasi

Sebagian besar program aplikasi pengguna akhir modern beroperasi dalam mode interaksi interaktif dengan pengguna sedemikian rupa sehingga pesan dipertukarkan yang memengaruhi pemrosesan data. Dalam mode dialog, di bawah pengaruh pengguna, fungsi pemrosesan diluncurkan, properti objek diubah, parameter keluaran informasi dikonfigurasikan, dll. Proses dialog dikendalikan sesuai dengan skenario yang dibuat, yang berikut ini ditentukan:

    poin (momen, kondisi) awal dialog;

    penggagas dialog adalah orang atau produk perangkat lunak;

    parameter dan konten dialog - pesan, komposisi dan struktur menu, formulir layar, dll.;

    reaksi produk perangkat lunak hingga akhir dialog.

Paling cocok untuk membuat proses dialog dan antarmuka pengguna akhiralat pengembangan perangkat lunak berorientasi objek .

1.4. Pengkodean struktural

Praktik pemrograman telah menunjukkan perlunya metodologi berbasis ilmiah untuk pengembangan dan dokumentasi algoritma dan program. Metodologi ini harus memperhatikan analisis masalah asli, membaginya menjadi bagian-bagian yang cukup independen dan memprogram bagian-bagian ini secara independen satu sama lain. Metodologi ini adalahpengkodean struktural ( pemrograman ).

Pengkodean struktural adalah metode penulisan program yang memiliki struktur tertentu dan karenanya mudah dipahami, diuji, dimodifikasi, dan digunakan.

Metode ini didasarkan pada penggunaan sekumpulan kecil struktur kontrol sederhana (operator struktural ), operasi yang benar yang mudah dianalisis dan ditetapkan. Dalam hal ini, beberapa operator terdiri dari operator lain yang bersarang di dalamnya.

Properti struktural operator adalah itumasing-masing operator memiliki satu input dan satu output . Program yang dibangun dari pernyataan terstruktur disebuttersusun .

Dasar dari pemrograman terstruktur adalahteorema struktur , dirumuskan oleh matematikawan Italia K. Bohm dan G. Jacopini pada tahun 1966

Teorema menetapkan bahwa betapapun kompleksnya tugas, skema algoritme untuk menyelesaikannya (dan, karenanya, program) selalu dapat direpresentasikan sebagai komposisi dari tiga jenis blok bersarang:

    mengikuti (awal-akhir awal-akhir ),

    percabangan (jika - kemudian - kalau tidak jika-maka-lain ),

    loop dengan prasyarat (ketika selamat tinggal ).

Dengan kata lain, struktur dasar ini memilikikelengkapan fungsional , yaitu algoritma apa pun dapat diimplementasikan sebagai komposisi dari ketiga struktur ini.

Dalam praktiknya, ini teorema menghindari penggunaan operator transisipergi ke , yang membuat algoritme dan program menjadi visual dan mudah dipahami.

Jenis struktur kontrol utama dari algoritma ditunjukkan pada gambar. empat.

1. Struktur seperti "mengikuti » (Gbr. 4, sebuah) dibentuk oleh urutan tindakan, S 1, S 2, …, sn berikut satu demi satu:

menjalankanS 1;

menjalankanS 2;

menjalankansn .

Dalam proses komputasi linier, semua operasi dilakukan secara berurutan sesuai urutan penulisannya. Contoh khas dari proses semacam itu adalah skema komputasi standar yang terdiri dari tiga tahap:

    input data awal;

    perhitungan dengan rumus;

    keluaran hasil.

Dalam bahasaPascal struktur seperti itu diapit oleh tanda kurung operatorMulai ... akhir :

Mulai

S 1;

S 2;

...

sn ;

akhir

Beras. empat. Struktur algoritmik dasar:

sebuah) mengikuti (Mulai akhir ); b) percabangan (Jika Kemudian Kalau tidak ); di dalam) lingkaran dengan prasyarat (Ketika Mengerjakan )

2. Struktur seperti " percabangan » (JIKA - MAKA - LAINNYA ) (Gbr. 4,b ) – menyediakan, tergantung pada hasil pemeriksaan, kondisiR , yang mengambil salah satu dari dua nilai booleanYa (BENAR ) atauBukan (PALSU ), pilihan salah satu cara alternatif dari algoritma:

jika R

lalu jalankan S 1

jika tidak, jalankan S 2 .

Setiap jalur mengarah ke jalan keluar bersama, sehingga algoritme akan berlanjut terlepas dari jalur mana yang dipilih.

Dalam bahasaPascal

Jika P

Kemudian S 1

Kalau tidak S 2;

3. Struktur seperti "lingkaran dengan prasyarat » (Gbr. 4, di dalam) - memberikan eksekusi tindakan yang berulang S tergantung pada nilai apa yang diambil oleh kondisi logis R:

sampaiR

memenuhiS .

Loop berakhir ketika kondisi R tidak dilakukan.

Dalam bahasa Pascal struktur seperti itu memiliki format berikut:

Ketika P Mengerjakan

S ;

Kumpulan struktur algoritmik dasar yang diperluas juga mencakup struktur kontrol berikut (Gbr. 5).

4. Struktur seperti " cabang disingkat » (JIKA KEMUDIAN ) (Gbr. 5,sebuah ) – jika hasil pengecekan kondisiR mengambil nilaiYa (BENAR ), maka tindakan dilakukanS ; jika tidak, tindakan ini dilewati dan kontrol dialihkan ke struktur berikut:

jika R

lalu jalankan S 1 .

Dalam bahasaPascal struktur seperti itu memiliki format berikut:

Jika P

Kemudian S ;

5 . Struktur seperti " pilihannya berbeda » (Gbr. 5,b ) adalah versi yang diperluas dari struktur sepertiJIKA - MAKA - LAINNYA . Di sini kondisi yang akan diperiksa adalahR dapat mengambil bukan dua nilai logika, tetapi beberapa nilai ordinal, misalnya 1, 2, ...,n . JikaR = saya , maka tindakan akan dilakukanYa . Jika nilainyaR akan keluar dari rentang nilai yang valid, maka tindakan dilakukanS (versi pendek)pilihan » tidak ada tindakan yang diambil dan kontrol diteruskan ke struktur berikutnya. Dalam bahasaPascal struktur seperti itu memiliki format berikut:

kasus P Dari

1:S1;

2:S2;

n: SN

Kalau tidak S

akhir;

Beras. lima. Struktur algoritmik dasar tambahan:

sebuah) cabang disingkat (Jika Kemudian ); b) pilihannya berbeda (kasus Dari Kalau tidak );
di dalam) loop dengan kondisi akhir (Ulang Sampai ); G) lingkaran dengan parameter (Untuk Ke ( Ke ) – Mengerjakan )

6. Struktur seperti " loop dengan kondisi akhir » (Gbr. 5,di dalam ) - memberikan eksekusi berulang dari tindakan tersebutS sampai kondisi terpenuhiR .

Dalam bahasaPascal struktur seperti itu memiliki format berikut:

Ulang

S

Sampai P ;

7. Struktur seperti " lingkaran dengan parameter » (Gbr. 5,G ) - memberikan eksekusi berulang yang telah ditentukan sebelumnya dari suatu tindakanS . Dalam hal ini, operasi tipikal berikut dilakukan secara berurutan di sini:

    mengatur nilai awal dari parameter loop yang digunakan (misalnya, jika variabel loop adalah saya, lalu diberi nilai saya 1, mis. saya:=saya 1);

    melakukan tindakan S disediakan di badan loop;

    mengubah parameter loop, yang memastikan perhitungan hasil dengan data awal baru (misalnya, jika parameter loop saya perubahan secara bertahap saya 3, saya:=sayasaya 3);

    memeriksa nilai parameter loop saat ini dengan nilai akhir yang diberikan ( saya<=saya 2);

    transisi ke pengulangan badan loop jika parameter loop tidak melebihi nilai akhir, jika tidak - eksekusi tindakan berikut atau output dari hasil.

Dalam bahasaPascal struktur seperti itu memiliki format berikut:

Untuk Variabel := saya 1 Ke (Downto) saya 3 Mengerjakan

S ;

Mempertimbangkan skema program, dimungkinkan untuk memilih bagian (fragmen) di dalamnya yang strukturnya cukup sederhana dan dapat dimengerti. Mewakili fragmen-fragmen ini sebagai blok yang diperbesar sangat memudahkan persepsi algoritme (dan selanjutnya, program) secara keseluruhan.

Pernyataan struktural biasanya digunakan pada tahap awal desain program top-down.

Lewat sini,pemrograman terstruktur berdasarkanstruktur modular produk perangkat lunak dankhas (dasar ) struktur pemerintahan algoritma pemrosesan data dari berbagai modul perangkat lunak.

TEMUAN

    Pemrograman terstruktur adalah metodologi pengembangan perangkat lunak berdasarkan representasi program dalam bentuk struktur blok hierarkis. Diusulkan pada tahun 70-an abad XX. E. Dijkstroy, dikembangkan dan ditambah oleh N. Wirth. Metode khas pemrograman terstruktur adalah: desain top-down (desain dari atas ke bawah); pemrograman modular (prosedural); pengkodean struktural.

    Tujuan pemrograman terstruktur adalah: memastikan disiplin pemrograman, meningkatkan efisiensi dan keandalan program, mengurangi waktu dan biaya pengembangan perangkat lunak. Prinsip dasar pemrograman terstruktur: abstraksi, formalitas, "bagi dan taklukkan", urutan hierarkis.

    Metode desain top-down melibatkan dekomposisi berurutan dari keseluruhan fungsi pemrosesan data menjadi elemen fungsional sederhana (“top-down”). Sarana untuk mencapai tujuan di tingkat sebelumnya berubah menjadi tujuan di tingkat yang lebih rendah.

    Pengkodean struktural adalah metode penulisan program yang memiliki struktur tertentu. Ini didasarkan pada penggunaan sekumpulan kecil pernyataan struktural, yang kebenarannya mudah dianalisis dan ditetapkan. Dalam hal ini, beberapa operator terdiri dari operator lain yang bersarang di dalamnya.

    Landasan pemrograman terstruktur adalah teorema penataan, yang dirumuskan oleh matematikawan Italia C. Bohm dan G. Iacopini pada tahun 1966. Teorema tersebut menetapkan bahwa betapapun rumitnya tugas itu, skema algoritme untuk menyelesaikannya (dan, karenanya, program) selalu dapat direpresentasikan sebagai komposisi tiga jenis blok bersarang: berikut (awal-akhir - awal-akhir), percabangan (if-then-else - if-then-else), siklus dengan prasyarat (sementara - sementara ).

* E. Dijkstra memberikan definisi sebagai berikut: “ Pemrograman terstruktur adalah disiplin yang diterapkan oleh programmer pada dirinya sendiri.».

Pemrograman terstruktur - salah satu kemajuan terbesar dalam teknologi pemrograman. Meskipun hampir setiap orang memiliki gagasan pemrograman terstruktur yang paling umum dan agak kabur, tidak ada definisi jelas yang diterima secara umum. Pemrograman terstruktur bertujuan untuk menulis program dengan kerumitan minimal, untuk membuat programmer berpikir jernih, untuk membuat program lebih mudah dipahami.

Teks program harus sedemikian rupa sehingga dapat dibaca "dari atas ke bawah". Penggunaan pernyataan GO TO yang tidak dibatasi melanggar kondisi ini, itulah sebabnya pemrograman terstruktur sering disebut sebagai pemrograman non-GO TO.

Anda dapat memberikan contoh program yang tidak mengandung GO TO , dan tertata rapi dalam tangga sesuai dengan tingkat pernyataan bersarang, tetapi sama sekali tidak dapat dipahami dan ada program lain yang mengandung GO TO dan masih dapat dimengerti. Jadi ada tidaknya GO TO merupakan indikator kualitas program yang buruk (ilustrasi dalam D. Knuth). Namun: yang paling sulit dikendalikan dan berpotensi tidak stabil adalah operator cabang tanpa syarat - GO TO .

Struktur badan modul dan konstruksi pemrograman dasar yang digunakan harus berpotensi tahan terhadap kegagalan perangkat keras, distorsi data sumber, dan kesalahan program.

Program apa pun dapat disintesis berdasarkan struktur dasar dasar dari tiga jenis:

1. Urutan sederhana. 2. Kondisi (alternatif).

3. Pengulangan (siklus, iterasi). Salah satu dari dua atau kedua jenis yang mungkin:

Lakukan "sampai" Lakukan "belum"

4. Anda dapat menambahkan desain keempat - pilihan (saklar).

Blok didefinisikan secara rekursif: persegi panjang mewakili blok bangunan bersarang yang digunakan sebagai pengganti persegi panjang.

Konstruksi dasar yang tercantum, misalnya, dalam bahasa Pascal diimplementasikan sebagai berikut:

Operator bersyarat JIKA catatan. exp. KEMUDIAN operator 1 KALAU TIDAK operator2;

JIKA catatan. ekspresi KEMUDIAN operator;

Pengulangan (siklus, iterasi)

a) Lakukan "sementara" SAAT kondisi lanjutan MELAKUKAN operator;

b) Lakukan "belum" ULANGI operator SAMPAI kondisi terminasi;

c) Loop dengan iterasi FOR K:=B1 TO B2 DO operator;

UNTUK K:=B2 BAWAH KE B1 LAKUKAN operator;

Pilihan (beralih) KASUS kondisi DARI

N1, ... Nk : operator 1;

Ni , ... Nm : operator hal;

AKHIR ;

Dalam bahasa FoxBASE, konstruksi ini diimplementasikan sebagai:

Operator bersyarat JIKA catatan. ekspresi

operator1

[KALAU TIDAK]

operator2]

BERAKHIR JIKA

Siklus LAKUKAN SAAT ekspresi

operator

AKHIR

Pilihan (beralih) LAKUKAN KASUS

KASUS catatan. ekspresi 1

operator

KASUS catatan. ekspresi2

Operator

KASUS catatan. Ekspresi hal

Operator

AKHIR

Setiap struktur dicirikan oleh satu titik transfer kontrol ke struktur (single entry) dan satu titik keluar dari struktur.

Konstruksi ini memiliki nilai mensistematisasikan dan mendisiplinkan. Kesederhanaan struktur awal pemrograman terstruktur mencegah tautan informasi yang rumit dan transfer kontrol yang mengintimidasi.

Dengan peningkatan struktur modul, kompleksitas program berkurang, visibilitasnya meningkat, yang membantu mengurangi jumlah kesalahan. Namun, untuk meningkatkan kualitas program, Anda harus membayar dengan memori tambahan dan waktu implementasinya di komputer.

Struktur program tergantung pada bahasa pemrograman yang digunakan. Alat pengembangan perangkat lunak modern adalah bahasa pemrograman terstruktur "terbaik". Dari bahasa pemrograman umum, Pascal, Basic, FoxBASE dianggap paling cocok. Pemrograman terstruktur, misalnya, dalam bahasa rakitan hampir tidak mungkin. Fakta menggunakan bahasa rakitan menunjukkan bahwa program ini ditulis terutama dalam bahasa mesin.

Pemrograman struktural difokuskan pada komunikasi dengan orang, bukan dengan mesin, dan mempromosikan penulisan program yang merupakan solusi sederhana dan jelas untuk suatu masalah.

Adalah penting bahwa seorang programmer, bahkan ketika mulai memprogram logika, memikirkan konstruksi struktural dasar dasar.

Posisi pada pernyataan GO TO harus: sedapat mungkin hindari penggunaan GO TO, tetapi tidak mengorbankan kejelasan program. Seringkali masuk akal untuk menggunakan GO TO untuk keluar dari loop atau modul, untuk melompat ke konstruksi ON (misalnya, dalam bahasa Dasar), atau untuk menghindari penumpukan garpu yang terlalu dalam, terutama karena lompatan berikutnya (terletak di bawah) pernyataan program, dan struktur program tetap mudah dibaca dari atas ke bawah. Penggunaan terburuk dari pernyataan GO TO adalah untuk mentransfer kontrol ke pernyataan yang lebih tinggi (sebelumnya) dalam teks program.

Selain itu, agar program lebih mudah dibaca, teksnya harus dibagi secara fisik menjadi beberapa bagian, menambahkan baris kosong antar bagian, pembagian. Teks program harus ditulis dengan pergeseran yang benar, sehingga jeda dalam urutan eksekusi dapat dilacak dengan mudah. Pernyataan yang dapat dijalankan dengan tujuan tunggal dari setiap modul harus sesuai dengan satu halaman perangkat pencetakan.

Program pertama terdiri dari beberapa puluh - ratusan instruksi mesin. Kompleks perangkat lunak dan sistem informasi termasuk dari beberapa puluh ribu hingga jutaan operator dalam bahasa tingkat tinggi. Ketika volume alat perangkat lunak meningkat, proses debug, itu. deteksi dan koreksi kesalahan. Latihan telah menunjukkan bahwa hampir tidak mungkin untuk menulis program yang kurang lebih besar tanpa kesalahan. Selain itu, bahkan selama pengoperasian program yang sudah selesai, kesalahan yang terlewatkan selama debugging terdeteksi. Kesalahan terbagi dalam beberapa kategori.

Yang paling sederhana adalah kesalahan sintaksis. Mereka terkait dengan ejaan konstruksi bahasa yang salah dan segera terdeteksi, pada saat kompiler mencoba menerjemahkan program ke dalam bahasa mesin.

Jika semua kesalahan sintaks dan penautan diperbaiki, maka program mulai berjalan (tahap Lari). Namun, tahap ini dapat diinterupsi oleh operasi yang tidak valid (misalnya membagi dengan nol), dalam hal ini kita berbicara tentang kesalahan run-time. (Kesalahan Runtime). Atau program sudah menghitung sampai akhir, tetapi hasil yang didapat salah. Hal ini dapat disebabkan oleh kesalahan algoritme, atau kesalahan dalam pengaturan komunikasi antar modul, kesalahan konversi tipe data, atau kesalahan ketik sederhana (misalnya, nol terlewat saat menulis angka 100 dan program menggunakan 10 dalam perhitungan).

Kesalahan run-time terdeteksi dengan menyelesaikan serangkaian kasus uji (program dijalankan), yang hasilnya sudah diketahui sebelumnya. Sebagai aturan, waktu yang dihabiskan untuk menemukan kesalahan seperti itu secara signifikan melebihi waktu yang dihabiskan untuk menulis program itu sendiri dan memperbaiki kesalahan sintaks. Perkembangan konsep pemrograman erat kaitannya dengan masalah pengurangan pemborosan saat menulis program.

Fondasi teoretis pemrograman terstruktur, teori pembuktian kebenaran suatu program, dan pemrograman berbasis bukti sedang dikembangkan.

Konsep pemrograman terstruktur menyiratkan pendekatan berbasis ilmiah untuk pembangunan program dan kemungkinan bahasa pemrograman, yang secara signifikan akan mengurangi jumlah kesalahan yang mungkin terjadi. Perkembangan konsep yang signifikan telah dicapai dalam bahasa pemrograman terstruktur Pascal. Inti dari pemrograman terstruktur adalah bahwa data, pertama-tama, adalah abstraksi dari objek nyata dan sebaiknya diformulasikan sebagai struktur abstrak yang mungkin tidak memiliki implementasi spesifik dalam bahasa pemrograman. Dalam proses pembuatan program, representasi data secara bertahap disempurnakan mengikuti penyempurnaan algoritme.

Bahasa pemrograman terstruktur harus menyediakan kemampuan untuk membangun tipe data Anda sendiri. Pada tingkat terendah adalah struktur fundamental yang telah ditentukan sebelumnya dalam bahasa (misalnya: tipe skalar, record, array, dan set). Dari struktur dasar, seperti dari molekul, struktur rumit dibangun. Variabel dari struktur fundamental hanya dapat mengubah nilai, mempertahankan jenis atau himpunan nilai yang valid dan ukuran yang ditempati. Struktur yang rumit dicirikan oleh perubahan tidak hanya dalam makna, tetapi juga dalam bentuk representasi itu sendiri, komposisi struktur fundamental yang termasuk di dalamnya. Manajemen memori dinamis diimplementasikan pada level pointer, dan data dinamis digabungkan menjadi struktur pohon (trees).

Selain itu, ada persyaratan tertentu untuk pengetikan data, sehingga jenis ekspresi atau variabel apa pun dapat ditentukan tanpa perlu perhitungan, mis. pada tahap penerjemahan. Dalam hal ini, sejumlah besar kesalahan run-time yang sulit ditemukan dapat dihindari dengan mendeteksinya pada tahap penerjemahan program.

Konsep pemrograman terstruktur tidak hanya melibatkan penggunaan bahasa khusus dan penerapan gaya pemrograman tertentu. Pertama-tama, ini adalah filosofi pemrograman, yang juga memengaruhi aspek seperti metodologi untuk mengajar pemrogram.

Perlu dicatat bahwa pemrograman adalah aktivitas yang luas dan beragam, seringkali membutuhkan kerja mental yang kompleks. Salah jika berpikir bahwa pemrograman dapat direduksi menjadi penggunaan resep yang sudah jadi berdasarkan deskripsi sistematis dari blok paling sederhana. Siswa perlu mengembangkan kemampuan berpikir kreatif, dan di sini peran guru sangat penting, menunjukkan bagaimana dia melakukan ini dan itu. Kreativitas tidak tunduk pada kanon, metode, dan teknologi. Pemilihan yang cermat dan pertimbangan contoh-contoh karakteristik diadopsi sebagai metode pengajaran. Penting untuk mempertimbangkan program yang rumit dan panjang, yang sering ditemui dalam praktik dan paling cocok untuk mengidentifikasi properti yang sulit dipahami tetapi penting yang disebut gaya pemrograman. Analisis program panjang merupakan latihan seni membacanya, yang tidak kalah pentingnya dengan kemampuan menulis program.

Kontrol pertanyaan dan tugas

5.1. Sebutkan dan jelaskan secara singkat bagian-bagian dari perintah program.

5.2. Dasar program berfungsinya IOI adalah ____; berikan definisinya.

5.3. Apa yang dimaksud dengan pemrograman dalam kode?

5.4. Apa yang kamu ketahui tentang bahasa assembly?

5.5. Bahasa pemrograman apa yang disebut mesin independen?

5.6. Bagaimana "terjemahan" program yang ditulis dalam bahasa algoritmik menjadi kode objek dapat dimengerti oleh komputer?

5.7. Apa yang dimaksud dengan pemrograman modular dan modul terpisah?

5.8. Apa yang Anda ketahui tentang pemrograman terstruktur?

Pemrograman terstruktur- metodologi pemrograman yang bertujuan untuk membuat program yang sederhana dan mudah dipahami secara logis. Pemrograman terstruktur didasarkan pada asumsi bahwa logika dan pemahaman program memfasilitasi pengembangan, bukti kebenaran dan pemeliharaan program selanjutnya, dan juga memastikan keandalannya.

Prinsip karakteristik pemrograman terstruktur adalah:

· pemrograman top-down metode pengembangan program di mana pemrograman dilakukan dengan menggunakan metode "top-down", dari yang umum hingga yang detail;

· pemrograman modular, di mana subtugas yang relatif independen diprogram sebagai modul program terpisah;

· penggunaan tiga struktur kontrol dalam pemrograman (mengikuti, memilih, mengulang). Struktur ikuti mengasumsikan urutan alami dari eksekusi pernyataan. Struktur pilihan diberikan oleh skema “if-then-else” (pernyataan if). Operator loop dikaitkan dengan struktur pengulangan;

· Penolakan transfer kontrol tanpa syarat dan penggunaan terbatas variabel global.

Pemrograman terstruktur didasarkan pada teorema yang telah dibuktikan secara ketat dalam teori pemrograman. Esensinya adalah bahwa algoritme untuk menyelesaikan masalah logis apa pun hanya dapat disusun dari struktur berikut. , percabangan, siklus. Mereka disebut struktur algoritmik dasar. Faktanya, kami dan sebelumnya dalam semua contoh program yang dipertimbangkan menganut prinsip pemrograman terstruktur.

Berikut adalah urutan tindakan linier (Gbr. 2.6):

Beras. 2.6. mengikuti

Setiap blok dapat berisi perintah sederhana dan struktur kompleks, tetapi harus memiliki satu masukan dan satu keluaran.

percabangan alternatif algoritmik. Kontrol dipindahkan ke salah satu dari dua blok tergantung pada benar atau salahnya kondisi. Lalu ada jalan keluar ke kelanjutan umum (Gbr. 2.7):

Beras. 2.7. percabangan

Siklus pengulangan kelompok tindakan tertentu berdasarkan kondisi. Ada dua jenis siklus. Pertama loop dengan prasyarat (Gbr. 2.8):

Beras. 2.8. Loop dengan prasyarat

Selama kondisinya benar, rangkaian yang membentuk badan perulangan akan dijalankan.

Tipe kedua dari struktur siklik loop dengan kondisi akhir (Gbr. 2.9):

Beras. 2.9. Loop dengan kondisi akhir

Di sini badan loop mendahului kondisi loop. Tubuh loop mengulangi eksekusinya jika kondisinya salah. Pengulangan berakhir ketika kondisi menjadi benar.

Secara teoritis, hanya jenis siklus pertama yang diperlukan dan cukup. lingkaran dengan prasyarat. Algoritme siklik apa pun dapat dibangun dengan menggunakannya. Ini adalah versi loop yang lebih umum daripada loop-to. Memang, tubuh loop-sampai akan dieksekusi setidaknya sekali, karena kondisinya diperiksa setelah selesai. Dan untuk loop-while, opsi seperti itu dimungkinkan ketika badan loop tidak akan dieksekusi sekali pun. Oleh karena itu, dalam bahasa pemrograman apa pun, seseorang dapat membatasi diri hanya pada while-loop. Namun, dalam beberapa kasus, penggunaan cycle-to lebih nyaman, dan oleh karena itu digunakan.

Pemrograman terstruktur kadang-kadang disebut dalam literatur sebagai pemrograman tanpa goto. Memang, dengan pendekatan ini tidak ada tempat untuk transisi tanpa syarat. Penggunaan operator goto yang tidak dapat dibenarkan dalam program menghilangkan strukturnya, dan oleh karena itu, semua properti positif yang terkait dengannya: transparansi dan keandalan algoritme. Meskipun operator ini ada di semua bahasa pemrograman prosedural, bagaimanapun, mengikuti pendekatan struktural, penggunaannya harus dihindari.

Algoritma kompleks terdiri dari struktur dasar yang saling berhubungan. Struktur ini dapat dihubungkan dengan dua cara: konsisten dan bersarang. Situasi ini mirip dengan apa yang kita amati dalam teknik kelistrikan, di mana rangkaian listrik rumit yang sewenang-wenang dapat diuraikan menjadi bagian yang terhubung seri dan paralel.

Struktur algoritmik bersarang tidak analog dengan konduktor yang terhubung paralel. Di sini, analogi boneka bersarang yang diletakkan di dalam satu sama lain lebih cocok. Jika blok yang menyusun tubuh siklus itu sendiri merupakan struktur siklik, maka itu berarti ada siklus bersarang. Pada gilirannya, loop dalam dapat memiliki loop lain di dalamnya, dan seterusnya. Dalam hal ini, konsep kedalaman sarang loop diperkenalkan. Demikian pula, cabang dapat bersarang satu sama lain.

Pendekatan struktural membutuhkan kepatuhan dengan standar dalam gambar diagram alur algoritma. Anda perlu menggambarnya seperti yang dilakukan pada semua contoh yang diberikan. Setiap struktur dasar harus memiliki satu input dan satu output. Diagram blok non-standar sulit dibaca, visibilitas algoritme hilang.

Bahasa pemrograman Pascal dan C disebut bahasa pemrograman terstruktur. Mereka memiliki semua struktur kontrol yang diperlukan untuk konstruksi struktural program. Penataan tampilan teks program memberikan kejelasan konstruksi ini. Teknik utama yang digunakan untuk ini pergeseran garis, yang harus mematuhi aturan berikut:

Konstruk dengan level bersarang yang sama ditulis pada level vertikal yang sama (mulai dari posisi baris yang sama);

Konstruksi bersarang ditulis bergeser sepanjang garis dengan beberapa posisi relatif ke kanan terhadap konstruksi eksternalnya.

Metode struktural algoritmeisasi itu bukan hanya bentuk deskripsi dari algoritma, tetapi juga merupakan cara berpikir programmer . Saat membuat algoritme, seseorang harus berusaha untuk menyusunnya dari struktur standar. Dengan menggunakan analogi bangunan, kita dapat mengatakan bahwa metode struktural untuk membangun suatu algoritme mirip dengan merakit bangunan dari bagian standar, berbeda dengan melipat bata demi bata.

Teknik teknologi penting lainnya dari pemrograman terstruktur adalah dekomposisi masalah yang harus diselesaikan menjadi subtugas. bagian dari masalah asli yang lebih sederhana dari sudut pandang pemrograman. Algoritma untuk memecahkan submasalah seperti itu disebut algoritma tambahan. Dalam hal ini, ada dua kemungkinan cara dalam pembangunan algoritma:

"top down": pertama, algoritma utama dibangun, kemudian algoritma tambahan;

"bawah ke atas": pertama, algoritme tambahan dikompilasi, lalu yang utama.

Pendekatan pertama juga disebut metode perincian berurutan, yang kedua metode perakitan.

Metode perakitan melibatkan akumulasi dan penggunaan perpustakaan algoritma tambahan yang diimplementasikan dalam bahasa pemrograman dalam bentuk subrutin, prosedur, dan fungsi. Dengan perincian berurutan, algoritme utama pertama kali dibuat, dan kemudian panggilan ke algoritme tambahan dari tingkat pertama dimasukkan ke dalamnya. Setelah itu, algoritme bantu tingkat pertama dikompilasi, di mana mungkin ada panggilan ke algoritme bantu tingkat kedua, dan seterusnya. Algoritme tambahan dari level terendah hanya terdiri dari instruksi sederhana.

Metode perincian berurutan digunakan dalam setiap desain objek kompleks. Ini adalah urutan logis alami dari pemikiran perancang: memperdalam detail secara bertahap. Dalam kasus kami, kami juga berbicara tentang desain, tetapi bukan perangkat teknis, tetapi algoritme. Secara praktis tidak mungkin membuat algoritme yang agak rumit dengan cara lain.

Dalam metode perincian berurutan, masalah asli pertama kali dianalisis. Ini memiliki subtugas. Hierarki subtugas semacam itu dibangun. Kemudian algoritma (atau program) dikompilasi, dimulai dari algoritma utama (program utama), kemudian algoritma bantu (subrutin) dengan pendalaman level yang berurutan, hingga didapatkan algoritma yang terdiri dari perintah-perintah sederhana.

Langkah pertama merinci. Pertama, kami menguraikan semua subrutin yang diperlukan, hanya menunjukkan tajuk (spesifikasi) mereka. Di tempat badan subprogram, kami menulis komentar penjelasan (jenis subprogram ini disebut "rintisan"). Mari kita tulis bagian utama dari program ini. Dan kemudian kita akan kembali ke pemrograman rinci tentang prosedur dan fungsi. Pada tahap pertama pemrograman, alih-alih badan subrutin, kami menjelaskan tujuannya dalam bentuk komentar.

Penggunaan pemrograman terstruktur memungkinkan Anda untuk meningkatkan kecepatan penulisan program dan memfasilitasi debugging program tertulis. Pemrograman struktural juga dimungkinkan dalam bahasa pemrograman assembler, di mana tidak ada operator struktural yang serupa dengan operator struktural bahasa pemrograman C, PASCAL, PL/M.

Pemrograman untuk komputer universal dimulai dengan pemrograman dalam kode mesin, kemudian bahasa tingkat tinggi muncul dan mulai berkembang, kemudian Dijkstroy mengembangkan prinsip-prinsip pemrograman terstruktur, pemrograman objek menggantikan pemrograman terstruktur, dan pemrograman visual saat ini aktif berkembang.

Pemrograman untuk mikrokontroler sebagian besar mengikuti jalur yang sama. Transisi dari tahap ke tahap bergantung pada sumber daya internal mikrokontroler yang tersedia. Beberapa tahun yang lalu, penggunaan bahasa tingkat tinggi tidak mungkin dilakukan karena sedikitnya memori program internal. (Dalam model mikrokontroler murah, situasi ini masih dipertahankan.) Saat ini, dengan munculnya mikrokontroler dan dengan memori internal beberapa puluh kilobyte, kemungkinan desain objek muncul.

Saat ini, ada dua cara untuk menulis program: bottom-up dan top-down. Saat menulis program dari bawah ke atas, tidak mungkin untuk mulai men-debug program tanpa menulis seluruh program. Saat menulis program dari atas ke bawah, yang wajib untuk pemrograman terstruktur, pada setiap tahap penulisan program, itu dapat diterjemahkan dan dieksekusi, sementara Anda dapat melacak semua tindakan algoritmik dari program yang ditulis pada saat itu. Proses penulisan program tidak berbeda dengan proses pembuatan algoritma. Apalagi tahapan pembuatan program ini bisa digabungkan. Tindakan algoritmik yang dilakukan ditampilkan atas nama subrutin. Sebagai contoh:

Ide dasar di balik pemrograman terstruktur adalah bahwa hanya ada empat pernyataan terstruktur. Dengan menggunakan operator struktural ini, Anda dapat membuat program kompleks yang sewenang-wenang.

Operator struktur pertama dipanggil rangkaian operator linier. Tugas apa pun dapat dibagi menjadi beberapa subtugas. Eksekusi subtugas dapat dipercayakan ke subprogram, yang namanya dapat (dan harus) mencerminkan subtugas yang harus diselesaikan oleh subprogram ini. Pada saat penulisan algoritme (dan program) tingkat atas, kami tidak tertarik pada bagaimana masalah ini akan diselesaikan, jadi alih-alih subrutin yang sebenarnya, kami menempatkan