THOUSANDS OF FREE BLOGGER TEMPLATES

...

...

Rabu, 17 November 2010

Algoritma & Pemrograman 1c "01"

Program
arti himpunan atau kumpulan instruksi tertulis yang dibuat oleh programer dari suatu software.

Pemrograman
Suatu kumpulan urutan perintah ke komputer untuk mengerjakan sesuatu, dimana instruksi tersebut menggunakan bahasa yang dimengerti   oleh komputer atau dikenal dengan bahasa pemrograman.

Data
Bahan mentah yang akan diolah menjadi informasi sehingga  dapat dipergunakan oleh user atau pemakai.
Tipe data yang biasa digunakan adalah :

1. Tipe Data Dasar : merupakan tipe data primitif yang tidak terstruktur yang didefinisikan oleh bahasa pemrograman.
  •     Tipe data dasar dibagi menjadi lima bagian yaitu :
    a. Tipe Data Numerik : disetiap bahasa pemrograman dapat dipastikan ada tipe data   
  • numerik yaitu menyimpan data berupa angka. 
  • Integer   : merupakan bilangan bulat positif dan negatif 
  • Subrange  : merupakan sebuah subtype dari tipe data integer danterdiri dari urutan nilai-nilai integer dalam range yang tebatas.
  • Floating-point Real   : biasa disingkat dan disebut tipe data riil. 
  • Fixed-point Real  : Bilangan fixwd-pont direpresentasikan dengan urutan digit yang mempunyai panjang tetap dengan titik desimal diposisikan ditempat yang diberikan antara dua digit. 
  • Lain-lain  : Tipe data lainnya adalah bilangan kompleks dan bilangan rational
    b. Enumerasi  : adalah suatu urutan list dari nilai-nilai yang berbeda.
    c. Boolean  : tipe data untuk merepresentasikan True atau False.
    d. Character  : tipe data untuk menyimpan rangkaian karakter.
    e. Internationalization : disebut I18N

2. Tipe Data Terstruktur : merupakan tipe data campuran dari berbagai tipe data dasar, contohnya array, record, string, list dan file.
3. Tipe Data didefinisikan oleh Pemakai : tipe data ini biasanya disebut Enumerasi.
4. Tipe Data Penunjuk : contoh tipe data penunjuk adalah pointer.

Model Komputasi  : adalah suatu kumpulan dari nilai dan operasi-operasi.
Ada 3 dasar model komputasi :
1. Model Fungsional
    Model perhitungan yang fungsional terdiri dari satu set nilai-nilai, fungsi dan operasi
    aplikasi, fungsi dan komposisi fungsi.

2. Model Logika
    Logika model perhitungan terdiri dari suatu set nilai-nilai, definisi hubungan dan
    kesimpulan logis.

3 Model Imperative
   Model perhitungan yang imperative terdiri dari satu set nilai-nilai yang mencakup
   suatu status dan operasi tugas-tugas untuk memodifikasi status tersebut.

SINTAKS  : Aturan gramatikal / komposisi suatu program yang mengatur tata cara penulisan huruf, angka dan karakter lain. Contoh : Pada pembuatan program Pascal antara 2 statement dipisahkan oleh ; (titik koma)
X:=1;  X:=X+1;

SEMANTIK  : Mendefinisikan arti dari program yang benar secara sintaks dari bahasa pemrograman tersebut.Contoh : Pada pembuatan program C int vector[10] 
Arti semantiknya akan menyebabkan ruang sebanyak 10

PRAGMATIS  : Menguraikan derajat tingkat sukses dengan suatu bahasa pemrograman kepada model perhitungan dalam kegunaannya  untuk para programer.
Prinsip-prinsip Desain Bahasa Pemrograman
a. Clarity, Simplicity dan Unity
    Bahasa pemrograman harus dapat menolong programer untuk membuat suatu desain
    program jauh sebelum programmer melakukan coding.
    Kemudahan, kesederhanaan dan kesatuan merupakan suatu kombinasi yang membantu
    programmer mengembangkan suatu algoritma sehingga algoritma yang dihasilkan
    mempunyai kompleksitas yang rendah.

b. Orthogonality
    Orthogonality menunjuk kepada suatu atribut yang dapat dikombinasikan dengan beragam
    fitur bahasa pemrograman sehingga setiap kombinasinya mempunyai arti dan dapat
    digunakan.

c. Kewajaran untuk Aplikasi
    Bahasa pemrograman membutuhkan syntax yang tepat/cocok yang digunakan pada
    struktur program untuk merefleksikan struktur logika yang melandasi suatu algoritma.

d. Mendukung Abstraksi
    Abstraksi merupakan suatu hal yang substansial bagi programmer untuk membuat
    suatu solusi dari masalah yang dihadapi. Kemudian abstraksi tersebut dapat dengan
    mudah diimplementasikan menggunakan fitur-fitur yang ada dalam bahasa
    pemrograman.

e. Kemudahan untuk Verifikasi Program
    Verifikasi program merupakan hal penting bagi sebuah program karena dengan
    verifikasi yang mudah maka suatu program akan dengan mudah dibangun dan
    dikembangkan.

f. Lingkungan Pemrograman
   Bahasa pemrograman yang mempunyai lingkungan pemrograman yang baik dan
   lengkap akan memudahkan programmer  untuk mengimplementasikan abstraksi
   yang sudah disusunnya.

g. Portabilitas Program
    Salah satu kriteria penting untuk proyek pemrograman adalah kemudahan program
    yang sudah jadi untuk dipindah-pindahkan dari komputer yang digunakan untuk
    membuat dan mengembangkan ke komputer lain yang akan menggunakannya.

h. Biaya Penggunaan
    Biaya merupakan elemen penting dalam mengevaluasi suatu bahasa pemrograman.
    Ada beberapa biaya yang dapat diukur yaitu :
    1. Biaya Eksekusi Program
    2. Biaya Translasi/kompilasi Program
    3. Biaya Penciptaan, Testing dan Penggunaan Program
    4. Biaya Pemeliharaan Program

PEMROGRAMAN IMPERATIF
  • Mempunyai karakteristik berupa status dan insruksi/perinta
  • Untuk mengubah status program
  • Status diwakili oleh variabel 
  • Instruksi diwakili oleh statemen
Ciri-ciri pemrograman imperatif yaitu  
  • Adanya instruksi/command/perintah/kalimat-kalimat perintah contoh : GOTO 10 
  • Adanya status yang berubah contoh : dengan adanya perintah GOTO 10 maka status program akan loncat. mengerjakan statemen yang ada di line number 10

VARIABEL DAN PENUGASAN
Variabel adalah identifier/pengenal yang berisi data yang dapat berubah-ubah nilainya di dalam program. 
Penugasan(Assigment) adalah suatu aksi yang menyebabkan peletakkan atau pemberian suatu nilai di suatu lokasi atau variabel.
Contoh
A = 3 (statemen penugasan pada Bahasa BASIC)
A := 3 (statemen penugasan pada Bahasa PASCAL)
 
STATEMEN/PERINTAH TIDAK TERSTRUKTUR
Merupakan statemen yang berisi perintah untuk mengerjakan statemen tertentu yang diidentifikasi dengan suatu label, baik menggunakan statemen GOTO bersyarat maupun tanpa syarat.
Contoh : tidak terstruktur (bahasa BASIC)
  10 LET A = 5
  20 LET B = A + 1
  30 GOTO 50
  40 LET B = A * 2
  50 PRINT B
  60 END

PEMROGRAMAN TERSTRUKTUR
Merupakan suatu teknik yang memecah masalah besar menjadi lebih kecil dan lebih mudah dipahami sehingga masalah yang besar dapat diselesaikan dengan baik
Contoh : PASCAL, COBOL, BAHASA C
STRUKTUR KONTROL / STRUKTUR KENDALI
Merupakan struktur yang mengendalikan statemen / instruksi apa saja yang harus dikerjakan. Bersifat Kondisi / Syarat
 
Ada tiga struktur kontrol pada pemrograman imperatif yaitu : 
  •  Komposisi Sekuensial 
 Digunakan bilamana lebih dari sebuah statemen yang harus dikerjakan secara berurutan yang dipisahkan dengan menggunakan simbol/tanda khusus tertentu, misalnya titik koma (;) dalam PASCAL.
 Contoh : Readl(N); Write(N);
  • Seleksi
Statemen penyeleksian kondisi menunjukkan bahwa suatu statemen akan dikerjakan bila suatu kondisi adalah bernilai benar.
Contoh statemen penyeleksian kondisi : IF – THEN, CASE OF (Bahasa Pascal)
  • Iterasi
Statemen Iterasi (perulangan) digunakan untuk memproses statemen statemen tertentu berulang kali.
         Contoh statemen iterasi : WHILE-DO, REPEAT-UNTIL, FOR-DO (Bahasa Pascal)


Subprogram merupakan blok statemen yang dapat dipanggil dari lokasi yang berbeda di dalam program.
Prosedur dan Fungsi adalah suatu program terpisah dalam blok sendiri yang berfungsi sebagai subprogram (program bagian).
Yang membedakan antara Fungsi dan Prosedur yaitu :
   -    Fungsi harus dideklarasikan dengan tipenya
   -   Suatu Fungsi jika dijalankan/dipanggil akan mengembalikan suatu nilai

Abstraksi dan Generalisas
Abstraksi adalah penekanan pada
gagasan, kualitas dan properti, bukan pada detail tertentu (penekanan pada detail) 
Generalisasi adalah perluasan dari aplikasi
yang mengarah pada domain yang lebih besar dari obyek yang sama atau tipe
yang berbeda
Binding
  • Obyek yang terikat pada nama disebut bindables (terikat) pada bahas 
  • Yang termasuk bindable adalah: data primitif, nilai kumpulan, referensi ke variabel, tipe-tipe, dan abstraksiyang executable
BINDING
1. Attribute : nilai internal atau data terkait pada suatu
objek yang menunjukkan ciri-ciri atau sifat-sifat dari obyek serta penggambaran keadaan (state) obyek
Contoh :
Nama objek : mobil
Attribute :
Merek : toyota
Silinder : 2000cc
Warna : merah
Status : baru / jalan
Tahun : 2006
2. Binding : Pengaturan nilai attribute 
3. Descriptor : informasi attribute yang diisikan dalam tempat penyimpanan untuk setiap entitas.

Struktur Blok
• Sebuah blok adalah sebuah konstruksi yang membatasi cakupan definisi yang
terkandung di dalamnya
• Ada tiga dasar struktur blok: monolitik, flat dan nested
• Syntax blok: let Definitions in Body end Body where Definitions 

Sintaks dari bahasa pemrograman di defenisikan dengan 2 kumpulan aturan,yaitu:
1. Aturan Lexical (Lexical Analysis)/ Scanner
2. Aturan Syntactic (Syntactic Analyzer)/ Parser

 · Aturan Leksikal
Berhubungan dengan bahasa sering disebut dengan SCANNER bertugas sebelum proses syntax analyzer
dan intermediate code dilakukan dimana tugas analisis leksikal ini mendekomposisikan program sumbe menjadi bagian-bagian kecil. 
Tugas-tugasnya secara detil adalah :
1. Mengidentifikasi semua pesan yang mengandung bahasa
2. Mentransformasikan ke token-token (simbol terminal)
3. Menentukan jenis dari token-token
4. Menangani kesalahan
5. Menangani table simbol
6. Scanner di desain untuk mengenali keyword, operator, identifier
 
Contoh :
Besaran lexical (tergantung programnya)
· Identifier dapat berupa keyword seperti : IF THEN ELSE, BEGIN….END (pada
PASCAL), integer (PASCAL), int,float (Bahasa C)
· Konstanta besaran yang berupa bilangan bulat (integer), bilangan pecahan
(float/real), Boolean (true/false), string dsb
· Operator : Operator aritmatika, operator logika (and, or,not), operator
relational (<,>,=,!=)
· Delimiter : berguna sebagai pemisah / pembatas seperti kurung buka,
kurung tutup, titik, koma, titik dua, titik koma, white space
· White space : pemisah yang diabaikan oleh program seperti enter, spasi
Contoh:
Statement : Fahrenheit := 32 + celcius * 1.8


Bertugas memeriksa kebenaran dari urutan token-token yang terbentuk oleh leksikal analisis. Pengelompokkan ke dalam class sintaks (bentuk sintaks) seperti procedure, stat n dan ekspresi. Grammar dipakai oleh sintaks analyzer untuk menetukan struktur dari program sumber. Proses pendeteksian
(pengenalan token) disebut dengan parsing, maka syntax analyzer sering disebut dengan parser.
Pohon sintaks yang dihasilkan digunakan untuk semantic analyzer yang bertugas untuk menentukan maksud dari program sumber, misalnya operator penjumlahan maka semantic analyzer akan mengambil aksi apa yang harus dilakukan.



SEMANTIK
Semantik mendefinisikan arti dari program yang benar secara syntax dari bahasa tersebut.

Semantik suatu bahasa membutuhkan semacam ekpresi untuk mengirimkan suatu nilai kebenaran (TRUE, FALSE, NOT atau nilai INTEGER). Dalam banyak kasus, program hanya dapat dieksekusi jika benar serta mengikuti aturan syntax dan semantic.

Semantic suatu bahasa pemrograman mempunyai banyak potensial,
beberapa diantaranya adalah:
1. Standarisasi bahasa pemrograman
Banyak usaha yang dilakukan untuk menstandarisasi bahasa pemrograman seperti COBOL, PASCAL, FORTRAN,dsb untuk lebih memudahkan programmer menggunakannya.
2. Referensi untuk user
Programmer membutuhkan suatu dokumentasi yang pasti supaya user dapat mengoperasikan program yang dibuat dengan baik
3. Pembuktian dari program yang benar
Secara matematis, program tidak mungkin bekerja dan berjalan jika tidak ada semantic
4. Referensi untuk implementor
Semantis akan mencegah suatu gaya bahasa yang tidak kompatibel yang diwujudkan dalam suatu implementasi berbeda walaupun dengan bahasa yang sama
5. Implementasi otomatis
Suatu tool dapat secara otomatis membuat translasi bahasa yan melebihi parsing. Hal ini dapat dilakukan jika semantic sudah dirumuskan.
6. Pemahaman yang lebih baik dari desain bahasa
Jika suatu rumusan semantic sulit untuk dideskripsikan secara formal maka rumusan semantic tersebut juga akan sulit digunakan oleh programmer.

Dua alasan mengapa perlu memahami suatu desain bahasa pemrograman
dengan lebih baik yaitu :

1. Memahami dengan lebih baik suatu desain bahasa pemrograman berarti membantu menguasai dan menggunakan bahasa tersebut.
2. Memahami dengan lebih baik suatu desain bahasa pemrograman secara detail membantu programmer untuk memperbaiki proses pengembangan program menjadi lebih baik.

Teknik Semantic :
1. Operational Semantic
Pendekatan ini mendefenisikan suatu mesin buatan (abstrak) dengan instruksi-instruksi primitive, tidak perlu realistic, tetapi dengan cukup sederhana supaya tidak muncul kesalahpahaman. Deskripsi semantic dari bahasa pemrograman menetukan suatu translasi ke kode. semantik operasional menceritakan bagaimana perhitungan yang dilakukan dengan mendefinisikan bagaimana mensimulasikan pelaksanaan program.

2. Detonational Semantic
menggambarkan apa yang diproses dengan objek matematika Pendefinisian denotasi sebuah bahasa terdiri dari tiga bagian: sintaks abstrak dari bahasa itu, aljabar semantik yang
menggambarkan model komputasi dan fungsi nilai Pada pendekatan ini diberikan suatu fungsi yang memetakan programprogram komputer yang ditunjukkan ke dalam bentuk nilai-nilai abstrak
secara matematika (angka, nilai kebenaran, fungsi matematika, dsb)

3. Axiomatic Semantic
Aksiomatik semantik bahasa pemrograman mendefinisikan sebuah teori
matematika
program yang ditulis dalam bahasa.
Pada pendekatan ini dedefenisikan suatu tindakan program yang
dibangun dengan properti logika yang menyimpan status computer
sebelum dan sesudah dieksekusi.

4. Algebraic Semantic
Semantik Aljabar menggambarkan arti sebuah program dengan definisi
aljabar. Pada pendekatan ini dipertimbangkan suatu objek komputasi yang
menjadi syarat-syarat dalam aljabar multi stored. Program mengimplementasikan fungsi yang dapat diwujudkan dengan suatu persamaan di antara syarat-syarat tersebut.
Contoh :
Defenisi aljabar dari integer Stack
• Domains:
• Nat (the natural numbers
• Stack ( of natural numbers)
• Bool (boolean values)
• Functions:
• newStack: () -> Stack
• push : (Nat, Stack) -> Stack
• pop: Stack -> Stack
• top: Stack -> Nat
• empty : Stack -> Bool
• Axioms: or
• pop(push(N,S)) = S
• top(push(N,S)) = N
• empty(push(N,S)) = false
• empty(newStack()) = true
• Errors:
• pop(newStack())
• Defining Equations:
• newStack() = []
• push(N,S) = [N|S]
• pop([N|S]) = S
• top([N|S]) = N

5. Translation Semantic
Menterjemahkan sebuah program ke bahasa lain, biasanya bahasa mesin
Seperti dalam pengambilan keputusan secara alamiah dengan logika, program diberi suatu arti dari aturan yang diturunkan yang menggambarkan penilaian gagasan suatu bahasa.
Proses analisa sintaks dan analisa semantic merupakan 2 proses yang sangat
erat kaitannya sulit untuk dipisahkan.
Contoh : A:=(A+B)*(C+D)

SYNTAX DIRECTED TRANSLATOR
Kode antara (intermediate code) adalah sebuah representasi yang disiapkan untuk mesin abstrak tertentu. Dua sifat yang harus dipenuhi oleh kode antara adalah :
1. Dapat dihasilkan dengan mudah
2. Mudah ditranslasikan menjadi program sasaran (target program)

fitur-fitur dari sebuah bahasa pemrogramang untuk mencapai tujuan.

1. Heap & Pointer
· Variabel heap adalah variabel yang bisa diciptakan dan dihapus kapansaja.
· Heap variabel tidak memiliki nama dan bisa diakses dengan pointer.
· Heap adalah sebuah blok memori di mana di dalamnya ada potongan-potongan informasi itu dialokasi dan dikosongkan dengan cara tertentu
· Jangka waktu hidup heap itu dimulai dari saat dia dibuat hingga dia tidak diakses lagi.
· Kadang ada sebuah operasi deallocator yang memaksa penghapusan sebuah variabel heap.
· Ketika sebuah variabel heap dihapus dia sebenarnya masih ada dalam memori tapi tidak bisa diakses, sehingga menjadi garbage
· Jika seorang programmer bisa men-dealokasi variabel, akan terjadi masalah. Pointer yang mengarah ke variabel heap yang suda terhapus, maka variabel ini menjadi dangling reference
· Garbage dan dangling reference menjadi sumber kesulitan bagi programmer
· Solusi I: Batasi penggunaannya sehingga reference ke variabel lokal tidak diakses untuk waktu yang lama
· Solusi II: dengan menggunakan reference count
· Solusi III: garbage collection

2. Coroutines
– Memisahkan simulation language dengan problem
– Menyediakan struktur kontrol yang lebih natural dari pada subprogram pada umumnya
– Coroutines dapat diangggap sebagai subprogram yang tidak dibutuhkan untuk menghentikan, kemudian memanggil program dan melaksanakan dari titik dimana eksekusi dihentikan. Tapi
coroutines tidak boleh rekursif.

3. Safety
– Pemeriksaan penulisan nama variabel (konsistensi)
– Pendeklarasian yang tepat Menentukan apakah jenis variabel yang dimaksud sesuai dengan
penggunaan variabel.
– Fasilitas pengecekan yang mengurangi redundansi Compiler cek setiap penggunaan dari setiap entitas agar tidak berulang .

DODY ADHIATMA. Diberdayakan oleh Blogger.

" togetherness that never be forgotten "

" togetherness that never be forgotten "

You can replace this text by going to "Layout" and then "Page Elements" section. Edit " About "