1.
Untuk bisa menghasilkan program yang
baik memerlukan analisis yang baik pula, baik itu analisis sistem, stuktur data
maupun analisis requirement, selin itu juga dipelukan persiapan-persiapan yang
matang. Hal ini berlaku bagi siapapun, bahkan seorang programmer professional
sekalipun. Sedangkan tahapan apas aja untuk membuat program yang baik
akan saya jelaskan dibawah.
Program
memang sudah menjadi kebutuhan pokok bagi masyarakat IT. Karena segala sesuatu
yang dilakukan di dalam IT pastilah memerlukan program. Program yang paling sederhana
sekalipun setidaknya memiliki 3 bagian:
Input – Masukan data.
Proses – pemrosesan
input.
Output – keluaran
program, kebutuhan yang kita harapkan.
Dalam membuat program,
pemrograman adalah pokok dari proses pembuatan program itu sendiri namun pemrograman
bergantung dari pemahaman persoalan, analisis sistem,
perencanaan-perencanaan dalam mendesain program itu sendiri.
2.
Struktur Data Sederhana
a. Array (Larik).
adalah struktur data statik yang menyimpan sekumpulan elemen bertipe sama.
Setiap elemen diakses secara langsung melalui indeksnya. Indeks larik harus
tipe data yang menyatakan keterurutan, misalnya: integer atau karakter.
Banyaknya elemen larik harus sudah diketahui sebelum program dieksekusi. Tipe
elemen larik dapat berupa tipe sederhana, tipe terstruktur atau tipe larik
lain. Nama lain dari Array adalah Larik, tabel, atau vektor.
b. Record (catatan)
adalah kumpulan data yang terdiri dari beberapa field(isian) dengan
berbagai macam tipe data.
Struktur Data
Majemuk
a. Linier.
Stack(tumpukan)
adalah list linier yang dikenali berupa elemen puncaknya(top), aturan
penyisipan dan penghapusan elemennya tertentu (penyisipan selalu dilakukan
"diatas"(top) dan penghapusan selalu dilakukan pada "top").
Karena aturan penyisipan dan penghapusan semacam itu, "top"
adalah satu- satunya alamat tempat terjadinya operasi. Elemen yang paling akhir
ditambahkan akan menjadi elemen yang akan dihapus. Dapat dikatakan elemen stack
akan tersusun secara LIFO(last in first out).
Queue(antrian)
adalah list linier yang dikenali berupa elemen pertama(head) dan elemen terakhir(tail),
dimana aturan penyisipan dan penghapusan elemennya didefinisikan sebagai
penyisipan selalu dilakukan setelah elemen terakhir, penghapusan selalu
dilakukan pada elemen pertama dengan kondisi satu elemen dengan elemen lainnya
dapat diakses melalui informasi "next".
List dan Multi-List(Daftar)
adalah sekumpulan list linier yang dengan elemen yang bertype sama, yang
memiliki keterurutan tertentu, yang setiap elemennya terdiri dari 2 bagian.
b. Non-Linier.
Binary-Tree(Pohon biner)
adalah himpunan terbatas yang mungkin kosong atau terdiri dari sebuah
simpul yang disebut sebagai akar dan dua buah himpunan lain yang disjoint yang
merupakan pohon biner yang disebut sebagai sub-pohon kiri(left) dan sub-pohon
kanan(right) dari pohon biner tersebut.
Pohon biner merupakan type yang sangat penting dari struktur data dan
banyak dijumpai dalam berbagai terapan. Karakteristik yang dimiliki oleh pohon
biner adalah bahwa setiap simpul yang paling banyak hanya memiliki dua buah
anak, dan mungkin tidak punya anak.
Istilah- istilah yang digunakan sama dengan istilah pada pohon secara umum.
Graph(graf)
merupakan struktur data yang paling umum. Jika struktur linier memungkinkan
pendefinisian keterhubungan sekuensial antar entitas data, struktur data tree
memungkinkan pendefinisian keterhubungan hirarkis, maka struktur graph
memungkinkan pendefinisian keterhubungan tak terbatas antara entitas data.
Banyak entitas- entitas data dalam masalah- masalah nyata secara alamiah
memiliki keterhubungan langsung(adjacency) secara tak terbatas.
3.
Penjelasan penggunaan Struktur data pada perangkat lunak sebagai
pengembang :
Dalam teknik pemograman, struktur
data berarti tata letak data yang berisi kolom-kolom data, baik itu kolom yang
tampak oleh pengguna (user) maupun kolom yang digunakan untuk keperluan
pemograman yang tidak tampak oleh pengguna.
Analisis & Desain Model
Analisis terhadap kebutuhan dapat menggunakan beberapa alat seperti :
a)
Data Flow Diagram (DFD)
b)
Entity Relationship Diagram (ERD)
c)
State Transition Diagram (STD)
untuk menganalisis kebutuhan
dibutuhkan suatu bekal dapat memudahkan penganalisisan suatu kebutuhan, bekal
yang dibutuhkan ialah Data Dictionary.
Data Dictionary berisi gambaran objek data yang diperlukan dan akan
dihasilkan oleh software. Diagram-diagram diatas mempunyai karakteristik masing
masing.
DFD memberi gambaran bagaimana data berubah dalam sistem. ERD menggambarkan
relasi antara objek data. STD menggambarkan bagaimana kerja sistem melalui
kondisi dan kejadian yang menyebabkan data berubah, STD juga menggambarkan
proses yang dilakukan karena kejadian tertentu.
Hasil yang diperoleh dari proses penganalisian adalah model analisis
yang kemudian menjadi bekal untuk melakukan desain.
4.
Analogi abstaction pada windows phone.
Saya telah menetapkan
bahwa memiliki perakitan "inti" per platform untuk kode portabel
(viewmodel, pembantu, dll.) Dan perakitan terpisah per basis data / toko
penyimpanan (SqlCe, Sqlite, dll.) Bahwa rakitan inti spesifik platform
nampaknya bekerja Ini berarti kelas model saya masih didefinisikan dalam
majelis DAL, namun setidaknya saya bisa menyediakan antarmuka umum sederhana (yang
didefinisikan di setiap majelis DAL, sayangnya, karena kelas model DAL) yang
masih memberi saya dukungan IQueryable.
Berkat "copy as
link" dalam Visual Studio, menyiapkan majelis inti dan memastikan bahwa
antarmuka layanan database umum sama untuk setiap perakitan DAL cukup mudah.
Dengan # ifdef saya bahkan dapat menggunakan kembali banyak file kelas model
DAL dan mengkompilasi atribut secara bersyarat, kode khusus database, dll. Yang
memungkinkan saya untuk menggunakan "copy as link" untuk mereka juga.
public interface IDataService
{
IQueryable<ModelType1> ModelType1 { get; }
IQueryable<ModelType2> ModelType2 { get; }
void AddModelType1(ModelType1 item);
void RemoveModelType1(ModelType1 item);
void AddModelType2(ModelType2 item);
void RemoveModelType2(ModelType2 item);
void CreateDatabase();
void ResetDatabase();
}
The resulting map of references is kind of like this:
System.Data.Linq -> App.Data.SqlCe -> App.Core.WP -> App.WP
/
/
(some shared code) (all shared code)
/
/
Sqlite -> App.Data.Sqlite -> App.Core.Win8 -> App.Win8
Tempat itu sama bersihnya seperti yang kuinginkan, tapi setidaknya
sepertinya berhasil.
5.
Terdapat dua pendekatan Umum yang bisa digunakan dalam merancang
algoritma, yaitu pendekatan perancangan top down dan bottom-up,
pendekatan perancangan secara top-down dimulai dengan cara
membagi algoritma yang kompleks menjadi satu atau lebih dari satu modul. Modul
yang terbagi ini masih bisa duraikan lagi menjadi beberapa sub-modul, dan
proses ini dilakukan berulang-ulang hingga kompleksitas modul yang diinginkan
terpenuhi. Metode perancangan top-down merupakan bentuk
perbaikan secara bertahap yang dimulai dengan modul paling atas kemudian secara
bertahap menambah modul lain yang dipanggil.
Untuk pendekatan secara bottom-up, merupakan
kebalikan dari top down. Dimana modul ini dimulai dengan
pembuatan modul paling dasar, kemudian dilanjutkan ke perancangan modul tingkat
yang lebih tinggi.
Dari kedua pendekatan diatas,
yaitu top-down dan bottom-up, apakah
strategi top down / bottom-up, tentu tergantung pada
aplikasi yang ditangani. Pendekatan top-down mengkuti
perbaikan secara bertahap dengan menguraikan algoritma ke dalam modul secara
terkelola.
Sementara pendekatan bottom-up mendefinisikan
modul terlebih dahulu baru kemudian mengelompokan beberapa , modul secara
bersama untuk membentuk modul baru tingkat lebih tinggi. Pendekatan top-down
sangat bagus dalam hal kemudahan membuat dokumentasi modul, menghasilkan uji
kasus, implementasi kode, dan debugging. Namun,
terdaopat kekurangan karena sub-modul dianalisis dalam sebuah isolasi tanpa
memperhatikan komuikasi dengan modul lain sehingga mengabaikan konsep
penyembunyian informasi.
6.
Algoritma :
Inisialisaikan bil1, bil2, oprs, hasil
Input nilai a, b
Pilih salah satu operasi dari (+),(-),(x),(:)
Jika anda memilih operasi (+), maka hasil = a + b
Jika anda memilih operasi (-), maka hasil = a - b
Jika anda memilih operasi (x), maka hasil = a * b
Jika anda memilih operasi (:), maka hasil = a / b
Cetak hasil
Flowchart
7.
Notasi
Pernyataan “f(x) adalah O(g(x))”
sebagaimana didefinisikan sebelumnya, biasa ditulis f(x) = O(g(x)) Pernyataan
ini adalah penyalahgunaan notasi. Persamaan dari dua buah fungsi tidak
dinyatakan. Properti O(g(x)) tidaklah simetrik: Karena alasan ini, beberapa
penulis lebih memilih menggunakan notasi himpunan dan menulis Menganggap O(g)
sebagai himpunan dari fungsi fungsi yang didominasi oleh g. Dalam penggunaan
yang lebih rumit, , O( ) dapat muncul pada tempat yang berbeda di dalam sebuah
persamaan, bahkan beberapa kali untuk masing-masing sisi.
Misalnya, pernyataan berikut benar
untuk (n + 1)2 = n2 + O(n) nO(1) = O(en)
Maksud dari pernyataan diatas
adalah :
Untuk setiap fungsi yang memenuhi
untuk setiap O( ) pada sisi kiri, terdapat fungsi-fungsi yang memenuhi
masing-masing O( ) pada sisi kanan, melakukan substitusi untuk semua
fungsi-fungsi ini ke dalam persamaan menyebabkan kedua sisi menjadi sama.
Misalnya, persamaan ke-3 diatas berarti: “Untuk setiap fungsi f(n) = O(1),
terdapat fungsi-fungsi g(n) = O(en) sehingga nf(n) = g(n)”