Desain Top-Down
Dengan Fungsi
    Programmer yang menggunakan metode pengembangan perangkat lunak untuk memecahkan masalah Masalah pernyataan dan mengumpulkan selama analisis dan tahap desain membantu programmer menyelesaikan program. Programmer juga menggunakan segmen solusi program yang sebelumnya sebagai blok bangunan untuk membangun program baru. Untuk menggunakan informasi yang ada, programmer dapat menggunakan top-down teknik desain untuk menyederhanakan pengembangan algoritma dan struktur program yang dihasilkan.
    Programmer jarang memulai dengan kertas kosong (atau layar kosong) ketika mereka mengembangkan program. metode pengembangan perangkat lunak menghasilkan sistem dokumentasi yang penting, terdiri dari deskripsi persyaratan data masalah ini (dikembangkanselama fase Analisis) dan algoritma solusinya (dikembangkan selama Desain fase). Anda dapat menggunakan dokumen ini sebagai titik awal dalam pengkodean program, Sebagai contoh, Anda dapat mulai dengan mengedit persyaratan data agar sesuai dengan sintaks C untuk definisi makro konstan dan deklarasi variabel, seperti ditunjukkan pada Gambar. 3.1 untuk mil-to-kilometer program konversi. Pendekatan ini sangat berguna jika Dokumentasi dibuat dengan pengolah kata dan dalam sebuah file yang dapat Anda edit.
GAMBAR 3.1 Persyaratan Diedit Data dan Algoritma Program Konversi
    1. / *
    2. * Mengkonversi jarak dalam mil ke kilometer.
    3. * /
    4.
    5. # include / * printf, definisi scanf * /
    6. # define KMS_PER_MILE 1.609 / * konversi konstan * /

    7.
    8. int
    9. main (void)
    10. {
    11. mil ganda; / * input - jarak dalam mil. * /
    12. ganda km; / * Output - jarak dalam kilometer * /
    13.
    14. / * Dapatkan jarak dalam mil. * /
    15.
    16. / * Mengkonversi jarak ke kilometer. * /
    17. / * Jarak dalam kilometer adalah
    18. 1.609 * jarak dalam mil. * /
    19.
    20. / * Tampilan jarak dalam kilometer. * /
    21.
    22. kembali (0);
    23. }

GAMBAR 3.2 (lanjutan)
    10. {
10. {
    11. ganda radius; / * input - radius lingkaran * /
    12. ganda daerah; / * Output - luas lingkaran * /
    13. ganda sirkum; / * Output - lingkar * /
    14.
    15. / * Dapatkan jari-jari lingkaran * /
    16. printf ("Masukkan jari-jari>");
    17. scanf ("% Jika", & radius);
    18.
    19. / * Hitung daerah * /
    20. daerah = PI * radius * radius;
    21.
    22. / * Hitung keliling * /
    23. sirkum = 2 * PI * radius;
    24.
    25. / * Menampilkan daerah dan lingkar * /
    26. printf ("Daerah ini% .4 f \ n", luas);
    27. printf ("keliling adalah% .4 f \ n", circum);
    28.
    29. kembali (0);
    30. }
    Masukkan radius> 5.0
    Daerah ini 78,5397
    Lingkar adalah 31,4159
    Output pada Gambar. 3.2 memberikan tes yang baik dari solusi karena rela-
tively mudah untuk menghitung
keliling untuk nilai radius dari 5,0. Cara lain di mana programmer menggunakan informasi yang ada adalah dengan memperluas
solusi untuk satu masalah untuk memecahkan masalah yang lain. Misalnya, Anda dapat dengan mudah memecahkan masalah ini dengan membangun solusi untuk yang sebelumnya.
MASALAH
  Anda bekerja untuk sebuah perusahaan hardware yang memproduksi mesin cuci datar. Untuk memperkirakan kapal-
biaya ping, perusahaan Anda membutuhkan sebuah program yang menghitung berat tertentu
jumlah mesin cuci datar.
ANALISIS
  Sebuah mesin cuci datar menyerupai donat kecil. Untuk menghitung berat datar tunggal
mesin cuci, Anda perlu tahu daerah rim nya, ketebalannya, dan kepadatan materi
digunakan dalam konstruksi.
sebagai masukan: diameter luar mesin cuci dan diameter dalamnya (diameter lubang).
  Dalam persyaratan data berikut, kita daftar radius mesin cuci yang dalam dan luar
(setengah diameter) sebagai variabel program. Kami juga daftar daerah rim dan berat satu
washer
.
DATA PERSYARATAN
   Konstan masalah
  PI 3,14159
   masalah Input
  ganda hole_diameter / * diameter lubang * /
  ganda edge_diameter / * diameter tepi luar * /
  Ketebalan ganda / * ketebalan mesin cuci * /
  ganda density / * kepadatan bahan yang digunakan * /
ganda kuantitas / * jumlah pencuci dibuat * /


 
Oval:       D1
D2
                                                            rim area = (d2/2)2(d1/2)2


 

masalah Output
 ganda berat / * berat batch pencuci * /
 Program Variabel
 ganda hole_radius / * radius lubang * /
 ganda edge_radius / * radius tepi luar * /
 ganda rim_area / * daerah rim * /
 ganda unit_weight / * berat 1 mesin cuci * /
 Rumus yang relevan
 luas lingkaran =? * radius
 radius lingkaran = diameter / 2
 rim daerah = daerah lingkaran luar - daerah lubang
 satuan berat = rim daerah * ketebalan * kerapatan2
GAMBAR 3.3 (lanjutan)
    39. rim_area = PI * edge_radius * edge_radius -
    40. PI * hole_radius * hole_radius;
    41.
42. / * Hitung berat mesin cuci datar. * /
    43. unit_weight = rim_area * ketebalan * kepadatan;
    44. / * Hitung berat batch mesin cuci. * /
    45. berat = unit_weight * kuantitas;
    46.
    47. / * Menampilkan berat batch mesin cuci. * /
    48. printf ("\ berat nTim diharapkan dari batch adalah% .2 f", berat);
    49. printf ("gram \ n.");
    50.
    51. kembali (0);
    52. }
Batin diameter dalam sentimeter> 1.2
    Outer diameter dalam sentimeter> 2,4
    Tebal dalam sentimeter> 0,1
    Bahan kepadatan dalam gram per sentimeter kubik> 7.87
    Jumlah dalam batch> 1000
    Berat diharapkan dari batch adalah 2670,23 gram.
PENGUJIAN
  Untuk menguji program ini, menjalankannya dengan diameter dalam dan luar seperti 2 cm
dan 4 cm yang menyebabkan perhitungan mudah untuk daerah rim (3 * PI persegi cm).
Anda dapat memverifikasi bahwa program ini menghitung satuan berat yang benar
LATIHAN UNTUK BAGIAN 3.4
    1. Jelaskan masukan masalah dan output dan menulis algoritma untuk pro-
gram yang menghitung gaji kotor karyawan diberi jam kerja dan
tarif per jam.
2. Menulis versi awal dari program dari solusi Anda untuk Latihan 1. Tampilkan bagian
deklarasi program dan komentar Program
sesuai dengan algoritma dan perbaikannya.
3. Dalam menghitung gaji kotor, perubahan apa yang harus Anda lakukan untuk memperpanjang daftar gaji
algoritma dalam Self-Periksa Latihan 1 untuk memasukkan jam lembur yang harus dibayar pada
pemrograman
    1. Tambahkan perbaikan ke garis program yang mengikuti dan menulis program C akhir.
   / *
   * Hitung jumlah dan rata-rata dari dua angka.
   * /
  # include / * printf, definisi scanf * /
  int
  main (void)
  {
        ganda satu, dua, / * masukan - nomor untuk memproses * /
               Singkatnya, / * Output - jumlah satu dan dua * /
               rata-rata; / * Output - rata-rata satu dan dua * /
        / * Dapatkan nomor dua. * /
        / * Hitung jumlah angka. * /
        / * Hitung rata-rata angka. * /
        / * Tampilan jumlah dan rata-rata. * /
        kembali (0);
  }
   2. Menulis sebuah program C lengkap untuk Self-Periksa Latihan 1.
   3. Menulis sebuah program C lengkap untuk algoritma penggajian revisi dikembangkan di
Self-Periksa Latihan 3.
   4. Asumsikan bahwa mesin cuci datar yang diproduksi oleh stamping mereka keluar dari rectan-
gular sepotong kain ketebalan seragam. Memperpanjang program mesin cuci untuk menghitung
(a) jumlah sentimeter persegi bahan yang diperlukan untuk memproduksi
Library Fungsi                                                                                                   
Daftar nama dan deskripsi dari beberapa yang paling umum digunakan fungsi bersama dengan nama file header standar untuk # include untuk memiliki akses ke fungsi masing-masing. argumen numerik yang bukan dari jenis argumen yang terdaftar, nilai argumen dikonversi ke yang dibutuhkan ketik sebelum digunakan. Konversi dari tipe int untuk mengetik ganda tidak menimbulkan masalah,tetapi konversi tipe double untuk mengetik int menyebabkan hilangnya setiap pecahan bagian, seperti dalam tugas-jenis campuran. Sebagai contoh, jika kita sebut abs
fungsi
dengan tipe double nilai -3,47, hasil yang dikembalikan adalah tipe int nilai3.Untuk alasan ini, perpustakaan memiliki fungsi nilai absolut terpisah (fabs)untuk mengetik argumen ganda.
Jika kita mengetahui panjang dari dua sisi (b dan c) segitiga dan sudut antara
mereka dalam derajat (?)menulis fungsi kita sendiri. Mari kita asumsikan bahwa kita sudah menulis
fungsi find_area
dan find_circum:
Fungsi find_area (r) mengembalikan luas lingkaran dengan jari-jari r.
Fungsi find_circum (r) mengembalikan keliling lingkaran dengan jari-jari r.
Kita dapat menggunakan kembali fungsi-fungsi ini dalam dua program sebelumnya pada bab ini daerah = find_area (radius);
sirkum = find_circum (radius);
dapat digunakan untuk menemukan nilai-nilai ini. Bagian ekspresi untuk setiap penugasan
pernyataan adalah panggilan fungsi dengan argumen radius (jari-jari lingkaran). hasilnya
dikembalikan oleh setiap pelaksanaan fungsi disimpan dalam variabel output untuk program
(Daerah atau circum).
  Untuk program mesin cuci datar (Gambar 3.5), kita dapat menggunakan pernyataan
   rim_area = find_area (edge_radius) - find_area (hole_radius);
  untuk menghitung daerah rim untuk mesin cuci. Pernyataan ini jelas dari satu yang ditunjukkan
dalam program asli (baris 39-40).
desain top-down dan grafik stucture                                                  Seringkali algoritma yang diperlukan untuk memecahkan masalah yang lebih kompleks daripada yang kita miliki melihat begitu jauh dan programmer harus memecah masalah mejadi submasalah yang mengembangkan solusi program. Dalam mencoba untuk memecahkan subproblem pada satu tingkat, kita memperkenalkan subproblem baru di tingkat bawah. Proses ini, disebut desain top-down, hasil dari masalah asli di tingkat atas ke subproblem pada setiap
menurunkan tingkat. Pemisahan masalah menjadi submasalah yang terkait adalah sama dengan
proses pemurnian algoritma. Studi kasus di bawah ini memperkenalkan dokumentasi
Alat
struktur bagan bahwa akan membantu Anda untuk melacak hubunganantara
MASALAH
  Anda ingin menarik beberapa diagram sederhana pada printer atau layar. dua contoh
adalah rumah dan tongkat perempuan
   ANALISIS
  Rumah ini dibentuk dengan menampilkan segitiga tanpa basis di atas persegi panjang.
Sosok tongkat terdiri dari bentuk lingkaran, segitiga, dan segitiga tanpa dasar. Kita dapat menarik dua angka dengan empat komponen dasar:
    lingkaran
    garis dasar   berpotongan garis
Function without argument
Salah satu cara yang programmer menerapkan desain top-down dalam program mereka adalah dengan mendefinisikan fungsi mereka sendiri. Seringkali, seorang programmer akan menulis satu subprogram fungsi untuk setiap subproblem dalam bagan struktur. Pada bagian ini, kita menunjukkan bagaimana menggunakan dan mendefinisikan fungsi Anda sendiri, berfokus pada fungsi sederhana yang tidak memiliki argumen dan mengembalikan nilai. Sebagai contoh desain top-down dengan fungsi, Anda bisa menggunakan utama langkah algoritma dikodekan sebagai panggilan ke tiga subprogram fungsi. Sebagai contoh, pernyataan :
   draw_circle ();
  memanggil fungsi (draw_circle) yang mengimplementasikan algoritma langkah Menggambar lingkaran.
Kami memanggil fungsi draw_circle seperti kita memanggil fungsi printf. kosong
kurung setelah nama fungsi menunjukkan bahwa draw_circle tidak memerlukan
Fungsi Definisi
  Meskipun prototipe menentukan jumlah argumen fungsi memakan waktu dan
jenis hasilnya, itu tidak menentukan fungsi operasi. Untuk melakukan ini, Anda perlu
memberikan definisi untuk setiap fungsi subprogram mirip dengan definisi
fungsi utama.
Kami telah mengadopsi gaya yang menempatkan fungsi
ketik pada baris terpisah. (Industrial C pengembang sering menggunakan gaya ini untuk membuatfungsi
definisi mudah ditemukan di file sumber panjang) fungsi tubuh
terdiri dari tiga panggilan untuk berfungsi printf yang menyebabkan komputer untuk menampilkan sebuah melingkar bentuk. Kami menghilangkan kembalinya Pernyataan karena draw_circle tidak kembali hasilnya. Program Gaya Penggunaan Komentar dalam  Program dengan Fungsi menjelaskan tujuannya. Jika subprogram fungsi yang lebih kompleks, kita akan
termasuk komentar pada setiap langkah algoritma utama seperti yang kita lakukan dalam fungsi utama.
Mulai sekarang seluruh teks ini, komentar blok dan menuju masing-masing fungsi
Definisi dalam warna untuk membantu Anda menemukan fungsi dalam daftar program.
Urutan Pelaksanaan Fungsi dan subprogram
Main Fungsi Karena prototipe untuk subprogram fungsi muncul sebelum fungsi utama, compiler memproses prototipe fungsi sebelum menerjemahkan utama fungsi. Informasi dalam setiap prototipe memungkinkan compiler untuk benar menterjemahkan panggilan ke fungsi tersebut. Compiler menerjemahkan pernyataan panggilan fungsi sebagai Keuntungan Menggunakan subprogram Fungsi Ada banyak keuntungan untuk menggunakan subprogram fungsi. mereka ketersediaan mengubah cara di mana seorang programmer individu mengatur solusi untuk pemrograman masalah. Untuk tim programmer bekerja sama besar Program, subprogram memudahkan untuk membagi tugas pemrograman: programmer Setiap akan bertanggung jawab untuk satu set tertentu fungsi. Akhirnya, mereka menyederhanakan pemrograman tugas karena fungsi yang ada dapat digunakan kembali sebagai blok bangunan untuk baru program.Subprogram Abstraction Prosedural Fungsi memungkinkan kita untuk menghapus dari fungsi utama kode yang memberikan solusi rinci untuk subproblem a. Karena rincian ini disediakan dalam subprogram fungsi dan bukan dalam fungsi utama.
Function with Input Argument
Pemrogram menggunakan fungsi seperti blok bangunan untuk membangun program besar. blok Anda mungkin telah digunakan sebagai anak muda untuk menunjukkan potensi Anda sebagai
tunas arsitek. Blok pertama Anda yang besar dan tidak menghubungkan bersama-sama, sehingga bangunan
lebih dari ukuran tertentu akan roboh. Lego, sebaliknya, memiliki satu permukaan dengan sedikit tonjolan dan satu permukaan dengan cangkir kecil. Dengan menempatkan tonjolan ke dalam cangkir, Anda bisa membangun struktur yang agak rumit.
Apa yang harus dilakukan dengan pemrograman? Sederhana fungsi seperti draw_circle
dan menginstruksikan seperti balok kayu. Mereka dapat menampilkan informasi pada layar,
tetapi mereka tidak terlalu berguna. Untuk dapat membangun program yang lebih menarik,
kita harus menyediakan fungsi dengan "tonjolan" dan "cangkir" sehingga mereka dapat dengan mudah
saling berhubungan.
Fungsi dengan Argumen input dan Hasil Tunggal
 
Selanjutnya kita menunjukkan bagaimana untuk menulis fungsi dengan argumen input yang mengembalikan hasil tunggal Kita dapat memanggil atau referensi fungsi-fungsi dalam ekspresi
seperti fungsi perpustakaan Fungsi f sendiri yang memiliki input tipe 2 ganda, kita dapat referensi itu dalam sebuah ekspresi seperti w + f (2,5, 4,0). Ungkapan ini berarti melaksanakan fungsi f dengan pertama Argumen dari 2,5 dan argumen kedua dari 4,0. Tambahkan hasil fungsi w.
 
Mari kita mempertimbangkan kembali masalah menemukan daerah dan keliling lingkaran
menggunakan fungsi dengan hanya satu argumen dan find_area, yang masing-masing memiliki argumen input tunggal (radius lingkaran) dan mengembalikan hasil tunggal (keliling lingkaran atau daerah).
Program Gaya Fungsi Antarmuka Komentar
Blok komentar dan menuju yang dimulai setiap fungsi Informasi yang diperlukan untuk menggunakan fungsi. Blok fungsi antarmuka komentar dimulai dengan pernyataan tentang apa fungsi melakukan. Kemudian baris * Pre: n didefinisikan.
menggambarkan kondisi yang harus benar sebelum fungsi ini dipanggil, kondisi ini
dikenal sebagai prekondisi.
Anda juga akan ingin menyertakan pernyataan menggambarkan kondisi yang harus benar setelah fungsi selesai eksekusi,jika beberapa rincian postcondition ini tidak termasuk dalam laporan awal
fungsi ini
tujuan.Kami menyarankan Anda memulai semua definisi fungsi dengan cara ini. fungsi
antarmuka komentar dikombinasikan dengan judul (atau prototipe) menyediakan berharga
dokumentasi untuk programmer lain yang mungkin ingin menggunakan kembali fungsi Anda dalam
program baru tanpa membaca kode fungsi.
Pengantar Komputer Grafik
Dalam layar komputer mode normal (disebut mode teks), kita menggunakan printf untuk menampilkan
baris karakter ke perangkat output standar, atau konsol.
menunjukkan bagaimana menulis fungsi C untuk menggambar tokoh tongkat sederhana menggunakan mode teks.
Dalam bagian opsional beberapa dimulai dengan yang satu ini, kita membahas tampilan lain
Modus (disebut modus grafis) yang memungkinkan program C untuk membuat gambar atau grafis
pola dalam jendela output. Untuk menulis program grafis, Anda harus belajar bagaimana untuk menggunakan fungsi khusus grafis yang memungkinkan Anda untuk menarik garis dan berbagai geometris bentuk (misalnya, persegi panjang, lingkaran, elips) di manapun pada layar Anda dan warna dan menaungi mereka dengan cara yang berbeda. Beberapa bahasa pemrograman termasuk perpustakaan grafis. Meskipun ada ada perpustakaan grafis standar untuk C, beberapa perpustakaan telah dikembangkan untuk digunakan dengan C. Kami akan mempelajari sebuah perpustakaan grafis sederhana yang disebut WinBGIm yang didasarkan pada Borland Turbo Pascal Graphics, dengan penambahan kontrol mouse. perpustakaan ini
dikembangkan oleh Profesor Michael Utama dari Departemen Ilmu Komputer,
University of Colorado, Boulder. Prinsip-prinsip kita mempelajari akan berlaku untuk grafis lain
Anda dapat menggunakan perpustakaan di masa depan.
Komposisi Window
  Dalam mode teks, Anda tidak membayar banyak perhatian untuk posisi setiap baris karakter
ditampilkan pada layar. Dalam pemrograman grafis, Anda mengontrol lokasi
masing-masing
garis atau bentuk yang Anda menggambar pada sebuah window. Karena itu, Anda harus tahu Anda
jendela ukuran dan bagaimana untuk referensi elemen gambar individu (disebut pixel)
dijendela.

Anda dapat memvisualisasikan sebuah jendela sebagai suatu x - y grid piksel. Asumsikan bahwa Anda window memiliki dimensi 400 * 300. Background Warna dan Warna foreground
 Dalam modus grafis, komputer akan menampilkan semua piksel terus menerus dalam satu dari 16
warna. Warna default yang digunakan untuk menampilkan pixel yang disebut warna latar belakang. Akibatnya, jendela tampilan awal Anda tampak kosong karena semua piksel yang
ditampilkan dalam warna latar belakang. Ketika Anda menarik garis atau bentuk, pixel itu
mengandung menonjol karena mereka berubah menjadi warna foreground.
Hitam dan putih adalah nilai-nilai default untuk latar belakang dan latar depan
warna, masing-masing. Laporan
 
setbkcolor (GREEN); / * GREEN adalah warna latar belakang. * /
 setcolor (RED); / * RED adalah warna foreground. * /
 reset warna latar belakang GREEN dan warna latar depan RED mana GREEN
dan RED adalah warna konstanta didefinisikan dalam graphics.h. Anda memilih warna dari konstanta
 
  
 
 
 
 
 

Comments (0)