Showing posts with label Algoritma. Show all posts

Perbandingan Perulangan Bahasa Basic, Pascal dan C

Seperti yang telah tertulis dalam artikel sebelumnya, konstruksi perulangan dibedakan menjadi dua macam, yaitu perulangan tak kondisional dan perulangan kondisional. Perulangan kondisional sendiri masih dapat dibagi lagi menjadi dua macam, yaitu perulangan dengan pengecekan kondisinya berada di depan (sebelum setiap langkah dimulai) dan perulangan yang pengecekan kondisinya di bagian belakang atau akhir setiap langkah.


Artikel ini merupakan kelanjutannya, dengan lebih mefokuskan pada penjelasan implementasi konstruksi perulangan di berbagai bahasa pemrograman yang ada saat ini disertai dengan perbandingannya. Walaupun pada akhirnya setiap bahasa memiliki implementasinya sendiri-sendiri namun masih banyak terdapat kemiripan yang muncul karena adanya kesamaan ide dasar.
Sebagai contoh, hampir semua bahasa pemrograman memiliki konstruksi for, walaupun implementasinya berbeda-beda. Perbedaan tersebut muncul dikarenakan perbedaan filosofi bahasanya itu sendiri, yang penitikberatannya bisa pada aspek kemudahan, keringkasan, keunikan atau pada kejelasan. Sehingga masing-masing implementasi memiliki kelebihan maupun kekurangannya masing-masing. Konstruksi for inilah yang sering digunakan untuk mengimplementasikan konsep perulangan tak kondisional. Walaupun begitu tidak semuanya menggunakan kata for. Bahasa pemrograman semacam FORTRAN atau PL/I menggunakan kata do, tapi intinya sama dengan pemakaian kata for pada bahasa yang lainnya.
Beberapa bahasa memiliki konstruksi perulangan yang menggunakan foreach (dari "for each" atau "untuk setiap") yang juga merupakan bentuk perulangan tak kondisional. Bentuk kalimat yang menggambarkan penggunaan foreach ini adalah: "Untuk setiap item di dalam sekumpulan item, lakukan sesuatu".
Bahasa yang full berorientasi pada objek semacam SmallTalk dan Ruby bahkan memiliki konstruksi perulangan yang lebih unik lagi. Dalam bahasa tersebut, perulangan bukan dijadikan sebagai konstruksi bahasa, tetapi merupakan metode dalam class bilangan.
Untuk bentuk perulangan kondisional, bentuk yang paling banyak digunakan adalah konstruksi while. Konstruksi ini digunakan untuk mewakili kalimat semacam "Selama masih memenuhi kondisi, lakukan sesuatu" atau "Lakukan sesuatu selama kondisi masih terpenuhi". Bahasa seperti Pascal juga memiliki konstruksi repeat..until yang pada dasarnya kebalikan dari while. Konstruksi repeat..until digunakan untuk mewakili kalimat semacam "Lakukan atau ulangi sesuatu hingga satu kondisi tertentu terpenuhi". Bahasa BASIC bahkan memiliki konstruksi do..loop yang lebih fleksibel lagi.

Bahasa BASIC

BASIC dibuat dengan sintaks yang sesederhana mungkin sehingga mudah dipahami oleh seorang pemula sekalipun. Seperti kebanyakan bahasa yang lain, BASIC juga menggunakan FOR untuk perulangan tak kondisional-nya. Bentuk umumnya adalah sebagai berikut:
FOR counter = awal TO akhir STEP langkah
  STATEMENTS
NEXT counter
Bentuk di atas digunakan jika nilai counter di setiap langkahnya dinaikkan menggunakan stepping (banyaknya perubahan nilai counter) sejumlah langkah. Nilai stepping digunakan untuk lompatan nilai pada counter. Sehingga nilai counter tidak harus berubah satu-satu tetapi bisa yang lainnya. Untuk melakukan perhitungan mundur (nilai counter menurun atau mengecil) maka cukup dengan menggunakan nilai stepping negatif. Jika nilai stepping atau langkah adalah satu maka cukup ditulis sebagai:
FOR counter = awal TO akhir
  STATEMENTS
NEXT counter
Sedangkan untuk perulangan kondisional, BASIC menggunakan konstruksi while..wend dan do..loop. Bentuk while..wend merupakan bentuk konstruksi perulangan yang sudah kuno dan sepenuhnya bisa digantikan dengan konstruksi do..loop. Dalam dialek BASIC yang lebih modern semacam Visual Basic, bentuknya digantikan menjadi while..end while. Sintaks konstruksi while dalam BASIC adalah:
WHILE kondisi
  STATEMENTS
WEND
Seperti telah disebutkan sebelumnya, bentuk while sepenuhnya dapat digantikan dengan bentuk do..loop. Konstruksi do..loop ini memiliki 4 variasi penulisan, yaitu do while..loop, do..loop while, do until..loop dan do..loop until. Konstruksi while yang sebelumnya dapat diganti menjadi bentuk do while..loop tanpa perubahan makna. Berikut ini sintaks dari keempat variasi penulisan konstruksi do..loop:
·            &nb  sp;   DO WHILE kondisi
·            &nb  sp;     STATEMENTS
·            &nb  sp;   LOOP
·            &nb  sp;   DO
·            &nb  sp;     STATEMENTS
·            &nb  sp;   LOOP WHILE kondisi
·            &nb  sp;   DO UNTIL kondisi
·            &nb  sp;     STATEMENTS
·            &nb  sp;   LOOP
·            &nb  sp;   DO
·            &nb  sp;     STATEMENTS
·            &nb  sp;   LOOP UNTIL kondisi

Bahasa Pascal atau Delphi

Sebagai bahasa yang diciptakan untuk tujuan edukasi, Bahasa Pascal dikenal dengan sintaksnya yang jelas dan mudah dibaca. Bentuk atau sintaks yang digunakan Pascal untuk konstruksi perulangan pun relatif lebih jelas daripada bahasa lainnya. Pascal membedakan perulangan tak kondisional menjadi dua, yaitu perulangan dengan nilai counter yang menaik dan satunya dengan nilai counter yang menurun.
Untuk perulangan dengan nilai counter naik digunakan sintaks berikut:
for counter := awal to akhir do begin
  Statements;
end;
Sedangkan untuk perulangan dengan nilai counter turun cukup dengan mengganti kata to menjadi downto, sebagai berikut:
for counter := awal downto akhir do begin
  Statements;
end;
Dalam Pascal dimungkinkan untuk menggunakan counter yang selain bilangan (integer). Semua data bertipe ordinal (memiliki urutan pasti) semacam char, boolean, enumeration dan subrange dapat dipakai sebagai counter.
Kelemahan Pascal adalah bahwa nilai counter pada setiap langkahnya hanya dapat berubah (naik atau turun) sebanyak satu nilai saja. Konstruksi for dalam Pascal tidak menyertakan nilai stepping yang secara default diberi nilai satu. Untuk nilai stepping yang lebih dari satu dalam Pascal harus menggunakan konstruksi repeat..until atau while yang jelas-jelas merupakan bentuk perulangan kondisional.
Sintaks untuk konstruksi perulangan kondisional dalam Pascal berturut-turut adalah sebagai berikut:
while Kondisi do begin
  Statements;
end;
dan
repeat
  Statements;
until Kondisi;

Bahasa C

Bahasa C yang lebih mengedepankan unsur keringkasan dan efisiensi kode, memiliki sintaks for yang lebih sulit dibaca daripada Pascal. Tentu saja bagi yang sudah terbiasa menjadi tidak sulit lagi, tetapi harus diakui bahwa bagi seorang pemula sintaks C cukup membingungkan. Walaupun demikian, sintaks perulangan dalam Bahasa C ini banyak diadopsi ke berbagai bahasa pemrograman yang lain. Sebut saja bahasa-bahasa semacam C++, Perl, PHP, Java dan JavaSript, semuanya mengadopsi bentuk perulangan itu.
Bentuk umum penulisan sintaks perulangan tak kondisional dalam C adalah:
int counter;
for (counter = awal; counter <= akhir; counter += langkah) {
  statements;
}
Sintaks C ini sebenarnya yang paling dekat dengan pengertian bahwa perulangan tak kondisional bisa ditulis sebagai perulangan kondisional yang menggunakan counter. Struktur perulangan for dalam Bahasa C memanfaatkan tiga ekspresi yang tertulis di dalam tanda kurung dan dipisahkan dengan tanda titik koma. Ekspresi pertama merupakan sebuah statement yang menandakan inisialisasi perulangan, yang pada bentuk di atas digunakan untuk memberi nilai awal pada counter. Ekspresi kedua menyatakan kondisi yang menentukan jalannya perulangan, yang pada bentuk di atas ditandai dengan pengecekan apakah nilai counter masih belum melampaui nilai akhir. Maksudnya jika nilai ekspresi kedua ini masih bernilai true maka perulangan masih akan dijalankan, sebaliknya jika sudah bernilai false maka perulangan akan berakhir. Ekspresi ketiga berisi statement yang akan dijalankan di akhir setiap langkah dalam perulangan tersebut, yang pada bentuk di atas berisi statement untuk mengubah nilai counter ke nilai berikutnya. Jika nilai counter akan dinaikkan satu-satu di setiap langkah maka ekspresi ketiga cukup ditulis counter++ (singkatan dari counter += 1)atau jika diturunkan satu-satu maka cukup ditulis counter--.
Dengan demikian dapat disimpulkan bahwa konstruksi for dalam C ini merupakan konstruksi perulangan yang sangat fleksibel. Penggunaan counter di dalamnya hanyalah bersifat opsional. Bahkan lebih tepat kalau dikatakan bahwa perulangan for pada C sebenarnya adalah bentuk perulangan kondisional, berhubung di dalam ekspresi kedua terkandung suatu kondisi yang menentukan jalannya perulangan. Hanya saja memang kebanyakan programmer C menggunakan bentuk for untuk perulangan tak kondisional (dalam artian menggunakan counter), sedangkan untuk perulangan kondisional-nya lebih memilih menggunakan while atau do..while.
Konstruksi while dalam C memiliki kesamaan arti dengan konstruksi while..wend dalam BASIC atau while dalam Pascal. Sintaksnya adalah:
while (kondisi) {
  statements;
}
Sementara itu konstruksi do..while memiliki arti sama dengan do..loop while dalam BASIC, yang sintaksnya adalah:
do {
  statements;
} while (kondisi);
Bahasa C tidak mengenal bentuk yang menggunakan until atau "hingga" seperti halnya Pascal dan BASIC. Dalam C hanya ada bentuk while atau "selama". Sekali lagi alasannya adalah penitikberatan C pada segi keringkasan bahasa. Bentuk until sebenarnya dapat diwakili menggunakan bentuk while not atau "selama tidak/belum". Contohnya kalimat "Budi terus berlari hingga lelah" sebenarnya sama saja dengan kalimat "Budi terus berlari selama belum lelah".
Dalam C, bentuk while sebenarnya dapat diubah ke dalam bentuk for. Jika ada bentuk while seperti terlihat di bawah ini:
ekspr1;
while (ekspr2) {
  statements;
  ekspr3;
}
maka bentuk tersebut dapat diubah ke dalam bentuk for menjadi:
for (ekspr1; ekspr2; ekspr3) {
  statements;
}
Dari sini jelas sudah penjelasan sebelumnya yang menyatakan kenapa konstruksi for dalam C lebih tepat jika dimasukkan ke dalam kategori perulangan kondisional. Tapi pada kenyataannya memang konstruksi for ini disediakan C untuk men-simulasikan konsep perulangan tak kondisional.

Hirarki Chomsky

Automata
Automata adalah mesin abstrak yang dapat mengenali (recognize), menerima (accept), atau membangkitkan (generate) sebuah kalimat dalam bahasa tertentu.
Beberapa Pengertian Dasar :
• Simbol adalah sebuah entitas abstrak (seperti halnya pengertian titik dalam geometri). Sebuah huruf atau sebuah angka adalah contoh simbol.
• String adalah deretan terbatas (finite) simbol-simbol. Sebagai contoh, jika a, b, dan c adalah tiga buah simbol maka abcb adalah sebuah string yang dibangun dari ketiga simbol tersebut.
• Jika w adalah sebuah string maka panjang string dinyatakan sebagai |w| dan didefinisikan sebagai cacahan (banyaknya) simbol yang menyusun string tersebut. Sebagai contoh, jika w = abcb maka |w|= 4.
• String hampa adalah sebuah string dengan nol buah simbol. String hampa dinyatakan dengan simbol ε (atau ^) sehingga |ε|= 0. String hampa dapat dipandang sebagai simbol hampa karena keduanya tersusun dari nol buah simbol.
• Alfabet adalah hinpunan hingga (finite set) simbol-simbol.
Grammar dan Klasifikasi Chomsky
Grammar G didefinisikan sebagai pasangan 4 tuple : VT, VN, S, Q dan dituliskan sebagai G(VT ,VN ,S , Q), dimana:
VT             : himpunan simbol-simbol terminal (atau himpunan token -token, atau alfabet).
VN            : himpunan simbol-simbol non terminal.
S ∈ VN    : simbol awal (atau simbol start).
Q               : himpunan produksi.
Berdasarkan komposisi bentuk ruas kiri dan ruas kanan produksinya (α → β), Noam Chomsky mengklasifikasikan 4 tipe grammar :
1. Grammar tipe ke-0 : Unrestricted Grammar (UG)
.    Ciri : α, β ∈ (VT | VN) *, α> 0
2. Grammar tipe ke-1 : Context Sensitive Grammar (CSG)
.    Ciri : α, β ∈ (VT | VN) *, 0 < α ≤ β
3. Grammar tipe ke-2 : Context Free Grammar (CFG)
.    Ciri : α ∈ VN, β ∈ (VT | VN) *
4. Grammar tipe ke-3 : Regular Grammar (RG)
.    Ciri : α ∈ VN, β ∈ { VT , VT VN} atau α ∈ VN, β ∈ { VT , VN VT}
.
Automata Hingga (AH)
AH didefinisikan sebagai pasangan 5 tupel : (Q, V T , σ, q0, F):
• Q     : himpunan hingga stata
• VT  : himpunan hingga simbol input (alfabet)
• σ     : fungsi transisi, menggambarkan transisi stata AH akibat pembacaan simbol input.
Fungsi transisi ini biasanya diberikan dalam bentuk tabel.
• q0 ∈ Q   : stata awal
• F ⊂ Q     : himpunan stata penerima
Ada dua jenis automata hingga : deterministik (AHD, DFA = deterministic finite automata) dan non deterministik (AHN, NFA = non deterministik finite automata).
- AHD : transisi stata AH akibat pembacaan sebuah simbol bersifat tertentu.
.                 σ (AHD) : Q × V T → Q
- AHN : transisi stata AH akibat pembacaan sebuah simbol bersifat tak tentu.
.                  σ (AHN) : Q × V T → 2Q
Automata Hingga Deterministik (AHD)
Berikut ini sebuah contoh AHD F(Q, V T , σ, q0, Z), dimana :
Q = {q0, q1, q2}                                                                    σ   diberikan dalam tabel berikut :

Gambar1.  Tabel AHD
Ilustrasi graf untuk AHD F adalah sebagai berikut :
Lambang stata awal adalah node dengan anak panah.
Lambang stata awal adalah node ganda.

Gambar 2.   Grafik AHD
Contoh kalimat yang diterima AHD                : a, b, aa, ab, ba, aba, bab, abab, baba
Contoh kalimat yang tidak diterima AHD     : bb, abb, abba
AHD ini menerima semua kalimat yang tersusun dari simbol a dan b yang tidak mengandung substring bb. sebuah kalimat diterima oleh AHD jika tracingnya berakhir di salah satu stata penerima.

.
Automata Hingga Nondeterministik (AHN)
Berikut ini sebuah contoh AHN F(Q, V T , σ, q0, Z), dimana :
Q = {q 0 , q1, q 2 ,q 3 , q 4 }                                                σ diberikan dalam tabel berikut :
Gambar3.   Tabel AHN
Ilustrasi graf untuk AHN F adalah sebagai berikut :

Gambar4.  Grafik AHN
Contoh kalimat yang diterima AHN di atas              : aa, bb, cc, aaa, abb, bcc, cbb
Contoh kalimat yang tidak diterima AHN di atas   : a, b, c, ab, ba, ac, bc
Fungsi transisi σ sebuah AHN dapat diperluas sebagai berikut :
1. σ (q, ε) = {q} untuk setiap q ∈ Q
2. σ (q, t T) = ∪ σ (p i , T) dimana t ∈ V T , T adalah V T *, dan σ (q, t) = {p i }
3. σ ({q1, q2, …, qn}, x) = ∪ σ (q i ,x), untuk x ∈ V T *
Sebuah kalimat di terima AHN jika salah satu tracing-nya berakhir di stata penerima, atau himpunan stata setelah membaca string tersebut mengandung stata penerima.
.
Ekuivalensi AHN, AHD, dan GR
AHD bisa dibentuk dari AHN.
GR bisa dibentuk dari AHD. AHN
AHN bisa dibentuk dari GR. AHD GR
Pembentukan AHD dari AHN:
Diberikan sebuah AHN F = (Q, V T , σ, q0, Z). Akan dibentuk sebuah AHD F’ = (Q’, VT ’, σ’, q0’, Z’) dari AHN F tersebut. Algoritma pembentukannya adalah sbb. :
1. Tetapkan : q0’ = q0 dan V T ’ = V T
2. Copykan tabel AHN F sebagai tabel AHD F’. Mula-mula Q’ = Q dan σ’ = σ
3. Setiap stata q yang merupakan nilai (atau peta) dari fungsi σ dan q ∉ Q, ditetapkan sebagai elemen baru dari Q’. Tempatkan q tersebut pada kolom Stata σ’, lakukan pemetaan berdasarkan fungsi σ.
4. Ulangi langkah (3) sampai tidak diperoleh stata baru.
5. Elemen Z’ adalah semua stata yang mengandung stata elemen Z.
Berikut ini diberikan sebuah contoh AHN F = (Q, V T , σ, q0, Z) dengan :
Q = {A, B, C}, V T = {a, b}, q0 = A, Z = {C}, dan σ didefinisikan sebagai berikut:

Gambar5.   Tabel AHN yang akan dikonversikan menjadi AHD
Tentukan AHD hasil transformasinya.
Jawab :
Berdasarkan algoritma di atas, maka :
1. q0’ = q0 = A, V T ’ = V T = {a, b}.
2. Hasil copy tabel AHN F menghasilkan tabel AHD F’ berikut :
Gambar6.   Tabel AHD F’
3. Pada tabel AHD F’ di atas terdapat stata baru yaitu [A,B]. Pemetaan [A,B] adalah :
σ ([A,B],a) = σ (A,a) ∪ σ (B,a) = [A,B] ∪ A = [A,B], dan σ ([A,B],b) = σ (A,b) ∪ σ (B,b) = C ∪ B = [B,C], sehingga diperoleh tabel berikut :

Gambar7.   Tabel AHD F’ yang sudah mempunyai satu stata baru
4. Langkah (3) di atas menghasilkan stata baru yaitu [B,C]. Setelah pemetaan terhadap [B,C] diperoleh tabel berikut :

Gambar8.   Tabel AHD F’ yang sudah jadi
5. Setelah langkah (4) di atas tidak terdapat lagi stata baru.
Dengan demikian AHD F’ yang dihasilkan adalah : AHD F’ = (Q’, V T ’, σ’, q0’,= Z’), dimana : Q’ = {A, B, C, [A,B], [B,C]}, V T ’ = {a, b}, q0’ = A, Z’ = {C, [B,C]}. Fungsi transisi σ’ serta graf dari AHD F’ adalah sebagai berikut :
Gambar9.  Tabel AHD F’ yang akan dijadikan graf dan
Grafik AHN Menjadi AHD
By http://freezcha.wordpress.com

Sekilas Mengenai Sintaks

Dalam linguistik, sintaksis (dari Yunani Kuno: συν- syn-, "bersama", dan τάξις táxis, "pengaturan") adalah ilmu mengenai prinsip dan peraturan untuk membuat kalimat dalam bahasa alami. Selain aturan ini, kata sintaksis juga digunakan untuk merujuk langsung pada peraturan dan prinsip yang mencakup struktur kalimat dalam bahasa apapun, sebagaimana "sintaksis Irlandia Modern."

Penelitian modern dalam sintaks bertujuan untuk menjelaskan bahasa dalam aturan ini. Banyak pakar sintaksis berusaha menemukan aturan umum yang diterapkan pada setiap bahasa alami. Kata sintaksis juga kadang digunakan untuk merujuk pada aturan yang mengatur sistem matematika, seperti logika, bahasa formal buatan, dan bahasa pemrograman komputer.

Sejarah Awal

Karya mengenai tata bahasa telah ditulis jauh sebelum sintaksis modern datang; Aṣṭādhyāyī dari Pāṇini sering disebut sebagai contoh karya pra-modern yang menyebutkan teori sintaksis modern.[1] Di Barat, penggunaan pikiran yang kemudian dikenal sebagai "tata bahasa tradisional" berawal dari karya Dionysius Thrax.
Selama berabad-abad, karya mengenai sintaksis didominasi oleh suatu kerangka kerja yang dikenal sebagai grammaire générale, pertama dijelaskan tahun 160 oleh Antoine Arnauld dalam buku dengan nama yang sama. Sistem ini mengambil dasar pikirnya berupa anggapan bahwa bahasa adalah refleksi langsung dari proses pemikiran dan karena itu ada sebuah cara yang alami untuk mengekspresikan pikiran. Cara itu, secara kebetulan, adalah cara yang sama yang diekspresikan dalam bahasa Perancis.
Tetapi, dalam abad ke-19, dengan pengembangan ilmu bahasa perbandingan sejarah, para pakar bahasa mulai menyadari keragaman bahasa manusia, dan mempertanyakan anggapan dasar mengenai hubungan antara bahasa dan logika. Mulai jelas bahwa tidak ada cara yang paling alami untuk mengekspresikan pikiran, dan logika tak bisa lagi dijadikan sebagai dasar untuk mempelajari struktur bahasa.
Tata bahasa Port-Royal membuat pembelajaran sintaksis terhadap logika (memang, sebagian besar Port-Royal Logic disalin atau diadaptasi dari Grammaire générale[2]). Kategori sintaksis diidentifikasikan dengan kategori logika, dan semua kalimat diteliti dalam struktur "Subyek - Penghubung - Predikat". Awalnya, pandangan ini diadopsi oleh pakar bahasa perbandingan awal seperti Franz Bopp.
Peran penting sintaksis dalam ilmu bahasa teoritis menjadi lebih jelas pada abad ke-20, sehingga dijuluki "abad teori sintaksis" karena ilmu bahasa juga dilibatkan. Untuk survei yang lebih mendetil dan jelas mengenai sejarah sintaksis dalam dua abad terakhir, lihat karya monumental oleh Graffi (2001).

By wikipedia

Konsep Dasar Pemprograman


PROGRAM : Merupakan himpunan atau kumpulan instruksi tertulis yang dibuat oleh programer atau suatu bagian executable 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.

Tahap Pengembangan Pogram

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
numerik yaitu menyimpan data berupa angka.
- Integer : merupakan bilangan bulat positif dan negatif
- Subrange : merupakan sebuah subtype dari tipe data integer dan terdiri 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 Digityang 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

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.

DEFINISI SINTAKS, SEMANTIK DAN PRAGMATIS
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

Apa itu Flowchart ?


Flowchart merupakan sebuah diagram dengan symbol symbol symbol grafis yang menyatakan tipe operasi program yang berbeda.Sebagai representasi dari sebuah program, flowchart maupun algoritma dapat menjadi alat bantu untuk memudahkan perancangan alur urutan logika suatu program, memudahkan pelacakkan sumber kesalahan program, dan alat untuk menerangkan logika program. Gambar berikut adalah symbol flowchart yang umum digunakan.

* 1 Simbol Proses
* 2 Simbol Keputusan

Digunakan untuk penyeleksian kondisi di dalam program

* 3 Simbol input / output data

Digunakan untuk mewakili input atau output data

* 4 Simbol titik terminasi

Digunakan untuk awal atau akhir suatu program

* 5 Simbol garis alir

Digunakan untuk menunjukkan arus dari suatu proses
By Wikipedia