Showing posts with label PEMROGRAMAN. Show all posts
Showing posts with label PEMROGRAMAN. Show all posts
Jenis Algoritma Berdasarkan Penjadwalan

Jenis Algoritma Berdasarkan Penjadwalan

1:59:00 PM 0


Penjadwalan berkaitan dengan permasalahan memutuskan proses mana yang akan dilaksanakan dalam suatu sistem. Proses yang belum mendapat jatah alokasi dari CPU akan mengantri di ready queue. Algoritma penjadwalan berfungsi untuk menentukan proses manakah yang ada di ready queue yang akan dieksekusi oleh CPU.


STRATEGI DASAR PENJADWALAN

Strategi penjadwalan proses secara umum dibedakan menjadi dua kelompok besar, yaitu penjadwalan non-preemptive dan preemptive.
1.      Non-preemptive (run-to-completion)
Pada strategi ini, begitu proses telah berjalan maka sistem operasi maupun proses lain tidak dapat mengmabil alih eksekusi prosesor. Pengalihan hanya dapat terjadi jika proses yang running sudah selesai, baik secara normal maupun abnormal. Strategi ini membahayakan sistem dan proses lain, sebab jika proses yang sedang berjalan mengalami kegagalan, crash ataupun looping tak berhingga maka sistem operasi menjadi tidak berfungsi dan proses lain tidak mendapatkan kesempatan untuk dieksekusi. Strategi penjadwalan non-preemptive umumnya digunakan pada sistem batch atau sekuensial.
2.      Preemptive
Pada strategi ini, sistem operasi dan proses lain dapat mengambil alih eksekusi prosesor tanpa harus menunggu proses yang sedang running menyelesaikan tugasnya. Penjadwalan preemptive merupakan fitur yang penting, terutama pada sistem dimana proses-proses memerlukan tanggapan prosesor secara cepat. Sebagai contoh adalah sistem real-time, dimana jika terjadi interupsi dan tidak segera dilayani maka dapat berakibat fatal. Contoh lain adalah sistem interaktif time-sharing, dimana pengguna sistem mengharapkan tanggapan yang cepat dari sistem. Secara umum, sistem konkuren seperti sistem operasi yang multitasking lebih menghendaki sistem penjadwalan preemptive.

PENJADWALAN PREEMPTIVE

Penjadwalan CPU mungkin akan dijalankan ketika proses dalam keadaan:
  1. Berubah dari running ke waiting state.
  2. Berubah dari running ke ready state.
  3. Berubah dari waiting ke ready state.
  4. Dihentikan.
Penjadwalan Preemptive mempunyai arti kemampuan sistem operasi untuk memberhentikan sementara proses yang sedang berjalan untuk memberi ruang kepada proses yang prioritasnya lebih tinggi. Penjadwalan ini bisa saja termasuk penjadwalan proses atau M/K. Penjadwalan Preemptive memungkinkan sistem untuk lebih bisa menjamin bahwa setiap proses mendapat sebuah slice waktu operasi. Dan juga membuat sistem lebih cepat merespon terhadap event dari luar (contohnya seperti ada data yang masuk) yang membutuhkan reaksi cepat dari satu atau beberapa proses. Membuat penjadwalan yang Preemptive mempunyai keuntungan yaitu sistem lebih responsif daripada sistem yang memakai penjadwalan Non Preemptive.
Dalam waktu-waktu tertentu, proses dapat dikelompokkan ke dalam dua kategori: proses yang memiliki Burst M/K yang sangat lama disebut I/O Bound, dan proses yang memiliki Burst CPU yang sangat lama disebutCPU Bound. Terkadang juga suatu sistem mengalami kondisi yang disebut busywait, yaitu saat dimana sistem menunggu request input(seperti disk, keyboard, atau jaringan). Saat busywait tersebut, proses tidak melakukan sesuatu yang produktif, tetapi tetap memakan resource dari CPU. Dengan penjadwalan Preemptive, hal tersebut dapat dihindari.
Dengan kata lain, penjadwalan Preemptive melibatkan mekanisme interupsi yang menyela proses yang sedang berjalan dan memaksa sistem untuk menentukan proses mana yang akan dieksekusi selanjutnya.
Penjadwalan nomor 1 dan 4 bersifat Non Preemptive sedangkan lainnya Preemptive. Penjadwalan yang biasa digunakan sistem operasi dewasa ini biasanya bersifat Preemptive. Bahkan beberapa penjadwalan sistem operasi, contohnya Linux 2.6, mempunyai kemampuan Preemptive terhadap system call-nya ( preemptible kernel). Windows 95, Windows XP, Linux, Unix, AmigaOS, MacOS X, dan Windows NT adalah beberapa contoh sistem operasi yang menerapkan penjadwalan Preemptive.
Lama waktu suatu proses diizinkan untuk dieksekusi dalam penjadwalan Preemptive disebut time slice/quantum. Penjadwalan berjalan setiap satu satuan time slice untuk memilih proses mana yang akan berjalan selanjutnya. Bila time slice terlalu pendek maka penjadwal akan memakan terlalu banyak waktu proses, tetapi bila time slice terlau lama maka memungkinkan proses untuk tidak dapat merespon terhadap event dari luar secepat yang diharapkan.


PENJADWALAN NON PREEMPTIVE


Penjadwalan Non Preemptive ialah salah satu jenis penjadwalan dimana sistem operasi tidak pernah melakukan context switch dari proses yang sedang berjalan ke proses yang lain. Dengan kata lain, proses yang sedang berjalan tidak bisa di- interupt.
Penjadwalan Non Preemptive terjadi ketika proses hanya:
  1. Berjalan dari running state sampai waiting state.
  2. Dihentikan.
Ini berarti CPU menjaga proses sampai proses itu pindah ke waiting state ataupun dihentikan (proses tidak diganggu). Metode ini digunakan oleh Microsoft Windows 3.1 dan Macintosh. Ini adalah metode yang dapat digunakan untuk platforms hardware tertentu, karena tidak memerlukan perangkat keras khusus (misalnya timer yang digunakan untuk menginterupt pada metode penjadwalan Preemptive).

Dispatcher       
Komponen penjadwalan proses lainnya adalah dispatcher. Dispatcher adalah suatu rutin sistem operasi yang berfungsi untuk melakukan pengalihan eksekusi dari proses yang running ke proses yang terseleksi oleh short-term scheduler. Rutin ini memindahkan isi register prosesor, konteks prosesor, ke PCB proses yang dihentikan, kemudian mengubah statusnya menjadi ready, kemudian menginisiasi isi register prosesor menggunakan konteks prosesor yang tersimpan dalam PCB proses terpilih. Durasi waktu yang diperlukan untuk melakukan pengalihan (switching) disebut dengan dispatch latency.

JENIS-JENIS ALGORITMA PENJADWALAN ADALAH

1.  Nonpreemptive, menggunakan konsep :
a. FIFO (First In First Out) atau FCFS (First Come First Serve)
b. SJF (Shortest Job First)
c. HRN (Highest Ratio Next)
d. MFQ (Multiple Feedback Queues)

2.  Preemptive, menggunakan konsep :
a. RR (Round Robin)
b. SRF (Shortest Remaining First)
c. PS (Priority Schedulling)
d. GS (Guaranteed Schedulling)

Klasifikasi lain selain berdasarkan dapat/tidaknya suatu proses diambil secara paksa adalah klasifikasi berdasarkan adanya prioritas di proses-proses, yaitu :
1.  Algoritma penjadwalan tanpa berprioritas.
2.  Algoritma penjadwalan berprioritas, terdiri dari :
a. Berprioritas static
b. Berprioritas dinamis

Algoritma Nonpreemptive

  1. First In First Out (FIFO)
First In First Out (FIFO) merupakan penjadwalan tidak berprioritas. FIFO adalah penjadwalan paling sederhana, yaitu proses-proses diberi jatah waktu pemroses berdasarkan waktu kedatangan. Pada saat proses mendapat jatah waktu pemroses, proses dijalankan sampai selesai.
Penilaian penjadwalan ini berdasarkan kriteria optimasi :
·         Adil, dalam arti resmi (proses yang datang duluan akan dilayani lebih dulu), tapi dinyatakan tidak adil karena job-job yang perlu waktu lama membuat job-job pendek menunggu. Job-job yang tidak penting dapat membuat job-job penting menunggu lama.
·         Efisiensi, sangat efisien.
·         Waktu tanggap sangat jelek, tidak cocok untuk sistem interaktif apalagi untuk sistem waktu nyata.
·         Turn around time kurang baik.
·         Throughtput kurang baik. FIFO jarang digunakan secara mandiri, tetapi dikombinasikan dengan skema lain.
·         Baik untuk sistem batch yang sangat jarang berinteraksi dengan pemakai. Contoh : aplikasi analisis numerik, maupun pembuatan tabel.
·         Sangat tidak baik (tidak berguna) untuk sistem interaktif, karena tidak memberi waktu tanggap yang baik.
·         Tidak dapat digunakan untuk sistem waktu nyata (real-time applications).
Contoh:Ada tiga buah proses yang datang secara bersamaan yaitu pada 0 ms, P1 memiliki burst time 24 ms, P2 memiliki burst time 3 ms, dan P3 memiliki burst time 3 ms. Hitunglah waiting time rata-rata dan turnaround timeburst time + waiting time) dari ketiga proses tersebut dengan menggunakan algoritma FCFS. Waiting time untuk P1 adalah 0 ms (P1 tidak perlu menunggu), sedangkan untuk P2 adalah sebesar 24 ms (menunggu P1 selesai), dan untuk P3 sebesar 27 ms (menunggu P1 dan P2 selesai).
Urutan kedatangan adalah P1, P2 , P3; gantt chart untuk urutan ini adalah:
Waiting time rata-ratanya adalah sebesar(0+24+27)/3 = 17ms. Turnaround timeuntuk P1 sebesar 24 ms, sedangkan untuk P2 sebesar 27 ms (dihitung dari awal kedatangan P2 hingga selesai dieksekusi), untuk P3 sebesar 30 ms. Turnaround time rata-rata untuk ketiga proses tersebut adalah (24+27+30)/3 = 27 ms.
Kelemahan dari algoritma ini:
1.      Waiting time rata-ratanya cukup lama.
2.      Terjadinya convoy effect, yaitu proses-proses menunggu lama untuk menunggu 1 proses besar yang sedang dieksekusi oleh CPU. Algoritma ini juga menerapkan konsep non-preemptive, yaitu setiap proses yang sedang dieksekusi oleh CPU tidak dapat di-interrupt oleh proses yang lain.
Misalkan proses dibalik sehingga urutan kedatangan adalah P3, P2, P1.Waiting time adalah P1=6; P2=3; P3=0. Average waiting time: (6+3+0)/3=3.
  1. Shortest Job First (SJF)
Penjadwalan ini mengasumsikan waktu berjalannya proses sampai selesai telah diketahui sebelumnya. Mekanismenya adalah menjadwalkan proses dengan waktu jalan terpendek lebih dulu sampai selesai, sehingga memberikan efisiensi yang tinggi dan turn around time rendah dan penjadwalannya tak berprioritas.

Contoh :
Terdapat empat proses (job) yaitu A,B,C,D dengan waktu jalannya masing-masing adalah 8,4,4 dan 4 menit. Apabila proses-proses tersebut dijalankan, maka turn around time untuk A adalah 8 menit, untuk B adalah 12, untuk C adalah 16 dan untuk D adalah 20. Apabila keempat proses tersebut menggunakan penjadwalan shortest job fisrt, maka turn around time untuk B adalah 4, untuk C adalah 8, untuk D adalah 12 dan untuk A adalah 20.

Karena SJF selalu memperhatikan rata-rata waktu respon terkecil, maka sangat baik untuk proses interaktif. Umumnya proses interaktif memiliki pola, yaitu menunggu perintah, menjalankan perintah, menunggu perintah dan menjalankan perintah, begitu seterusnya. Masalah yang muncul adalah tidak mengetahui ukuran job saat job masuk. Untuk mengetahui ukuran job adalah dengan membuat estimasi berdasarkan kelakukan sebelumnya. Prosesnya tidak datang bersamaan, sehingga penetapannya harus dinamis. Penjadwalan ini jarang digunakan karena merupakan kajian teoritis untuk pembandingan turn around time.

  1. Highest Ratio Next (HRN)
Highest Ratio Next merupakan strategi penjadwalan dengan prioritas proses tidak hanya berdasarkan fungsi waktu layanan tetapi juga jumlah waktu tunggu proses. Begitu proses mendapat jatah pemroses, proses berjalan sampai selesai.
Prioritas dinamis HRN dihitung berdasarkan rumus : Prioritas = (waktu tunggu + waktu layanan ) / waktu layanan Karena waktu layanan muncul sebagai pembagi, maka job lebih pendek berprioritas lebih baik, karena waktu tunggu sebagai pembilang maka proses yang telah menunggu lebih lama juga mempunyai kesempatan lebih bagus. Disebut HRN, karena waktu tunggu ditambah waktu layanan adalah waktu tanggap, yang berarti waktu tanggap tertinggi yang harus dilayani.

4.      Multilevel Feedback Queue

Algoritma ini mirip sekali dengan algoritma multilevel queue. Perbedaannya ialah algoritma ini mengizinkan proses untuk pindah antrian. Jika suatu proses menyita CPU terlalu lama, maka proses itu akan dipindahkan ke antrian yang lebih rendah. Hal ini menguntungkan proses interaksi karena proses ini hanya memakai waktu CPU yang sedikit. Demikian pula dengan proses yang menunggu terlalu lama. Proses ini akan dinaikkan tingkatannya. Biasanya prioritas tertinggi diberikan kepada proses dengan CPU burst terkecil, dengan begitu CPU akan terutilisasi penuh dan M/K dapat terus sibuk. Semakin rendah tingkatannya, panjang CPU burst proses juga semakin besar.

Gambar 14.7. Multilevel Feedback Queue
Algoritma ini didefinisikan melalui beberapa parameter, antara lain:
a.       Jumlah antrian.
b.      Algoritma penjadwalan tiap antrian.
c.       Kapan menaikkan proses ke antrian yang lebih tinggi.
d.      Kapan menurunkan proses ke antrian yang lebih rendah.
e.       Antrian mana yang akan dimasuki proses yang membutuhkan.
Dengan pendefinisian seperti tadi membuat algoritma ini sering dipakai, karena algoritma ini mudah dikonfigurasi ulang supaya cocok dengan sistem. Tapi untuk mengatahui mana penjadwal terbaik, kita harus mengetahui nilai parameter tersebut.
Multilevel feedback queue adalah salah satu algoritma yang berdasar pada algoritma multilevel queue. Perbedaan mendasar yang membedakan multilevel feedback queue dengan multilevel queue biasa adalah terletak pada adanya kemungkinan suatu proses berpindah dari satu antrian ke antrian lainnya, entah dengan prioritas yang lebih rendah ataupun lebih tinggi, misalnya pada contoh berikut.
1.      Semua proses yang baru datang akan diletakkan pada queue 0 ( quantum= 8 ms).
2.      Jika suatu proses tidak dapat diselesaikan dalam 8 ms, maka proses tersebut akan dihentikan dan dipindahkan ke queue 1 ( quantum= 16 ms).
3.      Queue 1 hanya akan dikerjakan jika tidak ada lagi proses di queue 0, dan jika suatu proses di queue 1 tidak selesai dalam 16 ms, maka proses tersebut akan dipindahkan ke queue 2.
4.      Queue 2 akan dikerjakan bila queue 0 dan 1 kosong, dan akan berjalan dengan algoritma FCFS.
Disini terlihat bahwa ada kemungkinan terjadinya perpindahan proses antarqueue, dalam hal ini ditentukan oleh time quantum, namun dalam prakteknya penerapan algoritma multilevel feedback queue akan diterapkan dengan mendefinisikan terlebih dahulu parameter-parameternya, yaitu:
1.      Jumlah antrian.
2.      Algoritma internal tiap queue.
3.      Aturan sebuah proses naik ke antrian yang lebih tinggi.
4.      Aturan sebuah proses turun ke antrian yang lebih rendah.
5.      Antrian yang akan dimasuki tiap proses yang baru datang.
Contoh: Terdapat tiga antrian; Q1=10 ms, FCFS Q2=40 ms, FCFS Q3=FCFS proses yang masuk, masuk ke antrian Q1. Jika dalam 10 ms tidak selesai, maka proses tersebut dipindahkan ke Q2. Jika dalam 40 ms tidak selesai, maka dipindahkan lagi ke Q3. Berdasarkan hal-hal di atas maka algoritma ini dapat digunakan secara fleksibel dan diterapkan sesuai dengan kebutuhan sistem. Pada zaman sekarang ini algoritma multilevel feedback queue adalah salah satu yang paling banyak digunakan.

Algoritma Preemptive

1.      Round Robin
Algoritma ini menggilir proses yang ada di antrian. Proses akan mendapat jatah sebesar time quantum. Jika time quantum-nya habis atau proses sudah selesai, CPU akan dialokasikan ke proses berikutnya. Tentu proses ini cukup adil karena tak ada proses yang diprioritaskan, semua proses mendapat jatah waktu yang sama dari CPU yaitu (1/n), dan tak akan menunggu lebih lama dari (n-1)q dengan q adalah lama 1 quantum.
Algoritma ini sepenuhnya bergantung besarnya time quantum. Jika terlalu besar, algoritma ini akan sama saja dengan algoritma first come first served. Jika terlalu kecil, akan semakin banyak peralihan proses sehingga banyak waktu terbuang.
Permasalahan utama pada Round Robin adalah menentukan besarnya time quantum. Jika time quantum yang ditentukan terlalu kecil, maka sebagian besar proses tidak akan selesai dalam 1 quantum. Hal ini tidak baik karena akan terjadi banyak switch, padahal CPU memerlukan waktu untuk beralih dari suatu proses ke proses lain (disebut dengan context switches time). Sebaliknya, jika time quantum terlalu besar, algoritma Round Robin akan berjalan seperti algoritma first come first servedTime quantum yang ideal adalah jika 80% dari total proses memiliki CPU burst time yang lebih kecil dari 1 time quantum.


  1. Shortest Remaining First (SRF)

Merupakan :
·         Penjadwalan berprioritas.dinamis.
·         Preemptive untuk timesharing
·         Melengkapi SJF

Pada SRF,  proses dengan sisa waktu jalan diestimasi terendah dijalankan, termasuk proses-proses yang baru tiba.Pada SJF, begitu proses dieksekusi, proses dijalankan sampai selesai.Pada SRF, proses yang sedang berjalan (running) dapat diambil alihproses baru dengan sisa waktu jalan yang diestimasi lebih rendah.
Kelemahan :
·         Mempunyai overhead lebih besar dibanding SJF. SRF perlu penyimpanan waktu layanan yang telah dihabiskan job dan kadang-kadang harus menangani peralihan.
·         Tibanya proses-proses kecil akan segera dijalankan.
·         Job-job lebih lama berarti dengan lama dan variasi waktu tunggu lebih lama dibanding pada SJF.
SRF perlu menyimpan waktu layanan yang telah dihabiskan , menambah overhead. Secara teoritis, SRF memberi waktu tunggu minimum tetapi karena overhead peralihan, maka pada situasi tertentu SFJ bisa memberi kinerja lebih baik dibanding SRF.
3.      Priority Scheduling
Priority Scheduling merupakan algoritma penjadwalan yang mendahulukan proses yang memiliki prioritas tertinggi. Setiap proses memiliki prioritasnya masing-masing.
Prioritas suatu proses dapat ditentukan melalui beberapa karakteristik antara lain:
1.      Time limit.
2.      Memory requirement.
3.      Akses file.
4.      Perbandingan antara burst M/K dengan CPU burst.
5.      Tingkat kepentingan proses.
Priority scheduling juga dapat dijalankan secara preemptive maupun non-preemptive. Pada preemptive, jika ada suatu proses yang baru datang memiliki prioritas yang lebih tinggi daripada proses yang sedang dijalankan, maka proses yang sedang berjalan tersebut dihentikan, lalu CPU dialihkan untuk proses yang baru datang tersebut. Sementara itu, pada non-preemptive, proses yang baru datang tidak dapat menganggu proses yang sedang berjalan, tetapi hanya diletakkan di depan queue.
Kelemahan pada priority scheduling adalah dapat terjadinya indefinite blockingstarvation). Suatu proses dengan prioritas yang rendah memiliki kemungkinan untuk tidak dieksekusi jika terdapat proses lain yang memiliki prioritas lebih tinggi darinya.
Solusi dari permasalahan ini adalah aging, yaitu meningkatkan prioritas dari setiap proses yang menunggu dalam queue secara bertahap.
Contoh: Setiap 10 menit, prioritas dari masing-masing proses yang menunggu dalam queue dinaikkan satu tingkat. Maka, suatu proses yang memiliki prioritas 127, setidaknya dalam 21 jam 20 menit, proses tersebut akan memiliki prioritas 0, yaitu prioritas yang tertinggi (semakin kecil angka menunjukkan bahwa prioritasnya semakin tinggi).

  1. Guaranteed Schedulling (GS)
Penjadwalan ini memberikan janji yang realistis (memberi daya pemroses yang sama) untuk membuat dan menyesuaikan performance adalah jika ada N pemakai, sehingga setiap proses (pemakai) akan mendapatkan 1/N dari daya pemroses CPU. Untuk mewujudkannya, sistem harus selalu menyimpan informasi tentang jumlah waktu CPU untuk semua proses sejak login dan juga berapa lama pemakai sedang login. Kemudian jumlah waktu CPU, yaitu waktu mulai login dibagi dengan n, sehingga lebih mudah menghitung rasio waktu CPU. Karena jumlah waktu pemroses tiap pemakai dapat diketahui, maka dapat dihitung rasio antara waktu pemroses yang sesungguhnya harus diperoleh, yaitu 1/N waktu pemroses seluruhnya dan waktu pemroses yang telah diperuntukkan proses itu. Rasio 0,5 berarti sebuah proses hanya punya 0,5 dari apa yang waktu CPU miliki dan rasio 2,0 berarti sebuah proses hanya punya 2,0 dari apa yang waktu CPU miliki. Algoritma akan menjalankan proses dengan rasio paling rendah hingga naik ketingkat lebih tinggi diatas pesaing terdekatnya. Ide sederhana ini dapat diimplementasikan ke sistem real-time dan memiliki penjadwalan berprioritas dinamis.

sumber : http://raudatulatun.blogspot.com/2014/10/jenis-algoritma-berdasarkan-penjadwalan.html

Rangkuman Tentang Variabel, Konstanta, Percabangan dan Pengulangan

11:22:00 AM 0


KONSTANTA, VARIABEL, PERCABANGAN, DAN PERULANGAN



50287_119828558037116_4250380_n.jpg 





NAMA : LALU MOH BANU FEBRIANTO

JURUSAN : TI (TEKNIK INFORMATIKA)

NIM : TI10130018

SEMESTER : II (DUA)

MATA KULIAH : STRUKTUR DATA

PENDAHULUAN

Dengan mengucapkan puji syukur Alhamdulillah kepada Allah SWT, yang telah melimpahkan segala rahmat dan hidayah-Nya. Alhamdulillah pada kesempatan kali ini kita masih di beri kemudahan dalam melakukan segala sesuatu guna memenuhi kewajiban kami sebagai seorang Mahasiswa yang dimana setiap orang mempunyai tugas yang telah di tentukan.

Kami berharap makalah ini dapat memberikan motivasi kepada para mahasiswa-mahasiswi.Kami juga meminta maaf yang sebesar-besarnya apabila ada kekurangan, kesalahan bahkan kata-kata yang tidak berkenan di hati dan disisi lain kami sangat mengharapkan ada masukan baik kritik maupun saran dari saudara. Sehingga penyusun dapat memperbaiki apa yang jadi kekurangan kami karena tidak ada manusia yang sempurna kecuali Allah SWT.

Dengan bangga kali ini kami akan menulis beberapa bait pengetahuan kami tentang “Konstanta, Variabel, Percabangan dan Pengulangan” yang dimana masing-masing kata tersebut memiliki arti sendiri yang dimana Konstanta mempunyai ciri jika nilai datanya sepanjang program berjalan tidak berubah-ubah, maka sebuah variabel lebih baik diperlakukan sebagai konstanta. Sedangkan Variabel memiliki ciri-ciri mempunyai nama (identifier) dan nilai, dan Percabangan dan Perulangan akan dibahas lebih lengkap pada artikel kami, selamat menyimak dan Semoga bermanfaat untuk kawan-kawan semua.

Akhir kata kami mengharapkan makalah ini banyak manfaatnya bagi saya sendiri khususnya maupun semua pihak pada umumnya.

















KONSTANTA

Konstanta adalah variabel yang nilai datanya bersifat tetap dan tidak bisa diubah. Jika nilai datanya sepanjang program berjalan tidak berubah-ubah, maka sebuah variabel lebih baik diperlakukan sebagai konstanta. Pada sebuah kode program, biasanya nilai data dari konstanta diberikan langsung di bagian deklarasi konstanta. Sedangkan untuk variabel biasanya hanya ditentukan nama variabel dan tipe datanya tanpa isian nilai data. Aturan penamaan variabel juga berlaku untuk penamaan konstanta. Demikian juga aturan penetapan tipe data. konstanta dibagi menjadi 4:
Konstanta integer, berupa integer biasa, integer panjang (long int) dan integer tak bertanda (unsigned integer). Nilainya dapat berupa desimal, oktal atau hexadesimal.
Konstanta floating point, dapat mengandung nilai pecahan, yang biasa ditulis dalam bentuk pecahan biasa maupun bentuk eksponensial dan selalu dinyatakan dalam double, kecuali jika diakhiri dengan F atau f (menyatakan konstanta float).
Konstanta string, merupakan deretan karakter yang diawali dan diakhiri dengan tanda petik ganda (“…“). Juga dapat mengandung karakter yang menggunakan tanda \ yang disebut karakter escape (escape sequence).
Konstanta karakter, selalu diawali dan diakhiri dengan tanda petik tunggal (‘…’). Beberapa konstanta karakter dapat diawali dengan tanda \ (penempatannya setelah tanda petik tunggal).

Sebagai contoh, jika kita membuat program perhitungan matematik yang menggunakan nilai pi (3.14159) yang mungkin akan muncul dibanyak tempat pada kode program, kita dapat membuat pi sebagai konstanta. Penggunaan konstanta pi akan lebih memudahkan penulisan kode program dibanding harus mengetikkan nilai 3.14159 berulang-ulang.

Contoh Konstanta Dalam Pemrograman Pascal :
Menggunakan direktive Preprocessor yaitu #define
Menggunakan conts





1.Menggunakan direktive Preprocessor yaitu #define

Kita dapat menggunakan direktive Preprocessor untuk konstanta yang sangat sering kita gunakan tanpa harus memanggil tipe data. Formatnya begini :

#define nama_konstanta nilai_konstanta


Contoh penggunaannya :

// mendefinisikan konstanta : keliling lingkaran

#include

using namespace std;

#define phi 3.14159

int main ()

{

double r=10; // jari-jari

double keliling;

keliling = 2 * phi * r;

cout << keliling;

return 0;

}

Source code di atas menggunakan baris #define phi 3.14159 untuk mendefinisikan konstanta phi dengan nilai 3.14159. Kita juga telah menggunakan tipe data double untuk bilangan desimal.






2. Menggunakan conts
Format penggunaannya:

const type_data nama_konstanta = nilai_konstanta;

Jadi dengan menggunakan conts, kita harus menentukan tipe datanya terlebih dahulu. Contoh penggunaannya:

// mendefinisikan konstanta : keliling lingkaran

#include

using namespace std;

int main ()

{

const double phi = 3.14159;

double r=10; // jari-jari

double keliling;

keliling = 2 * phi * r;

cout << keliling;

return 0;

}













VARIABEL

Variabel adalah tempat dimana kita dapat mengisi atau mengosongkan nilainya dan memanggil kembali apabila dibutuhkan. Setiap variabel akan mempunyai nama (identifier) dan nilai. Pada sebagian besar bahasa pemrograman, variabel harus dideklarasikan lebih dulu untuk mempermudah compiler bekerja. Apabila variabel tidak dideklarasikan maka setiap kali compiler bertemu dengan variabel baru pada kode program akan terjadi waktu tunda karena compiler harus membuat variabel baru. Hal ini memperlambat proses kerja compiler. Bahkan pada beberapa bahasa pemrograman, compiler akan menolak untuk melanjutkan proses kompilasi.
Pemberian nama variabel harus mengikuti aturan yang ditetapkan oleh bahasa pemrograman yang kita gunakan. Namun secara umum ada aturan yang berlaku untuk hampir semua bahasa pemrograman. Aturan-aturan tersebut yaitu:
Nama variabel harus diawali dengan huruf.
Tidak boleh menggunakan spasi pada satu nama variabel. Spasi bisa diganti dengan karakter underscore (_).
Nama variabel tidak boleh mengandung karakter-karakter khusus, seperti : .,+, -, *, /, <, >, &, (, ) dan lain-lain.
Nama variabel tidak boleh menggunakan kata-kata kunci di bahasa pemrograman.

Contoh Variabel Dalam Pemrograman Pascal :

//mendefinisikan variabel
//merupakan instruksi directive
//-----------------------------
#include
#include
int y ;
#define x 500
void main()
{
#ifdef x
cout<<"nila x saat ini telah di defenisikan"< cout<<"nilai x saat ini adalah="< cout<<"nilai y saat ini adalah="<#else
cout<<"nilai x saat ini tidak di definisikan"< cout<<"nilai x saat ini adalah="< cout<<"nilai y saat ini adalah="< #endif
#undef x
int x, y;
x=0;
y=0;
#ifdef x
cout<<"nilai x saat ini telah di definisikan"< cout<<"nilai x saat ini adalah="< cout<<"nilai y saat ini adalah="< #else
cout<<"nilai x saat ini telah di definisikan"< cout<<"nilai x saat ini adalah="< cout<<"nilai y saat ini adalah="< #endif
cout<<"input nilai y=";
cin>>y;
#define x y
#ifdef x
cout<<"nilai x saat ini telah di definisikan dari nilai y="< cout<<"nilai x saat ini adalah="< cout<<"nilai y saat ini adalah="< #else
cout<<"nilai x saat ini telah di definisikan"< cout<<"nilai x saat ini adalah="< cout<<"nilai y saat ini adalah="< #endif
getch();
} <<;
<<;
<<;
<<;
<<;
<<;


PERCABANGAN

Percabangan adalah pemilihan statemen pada kondisi dua pilihan atau banyak pilihan, yang akan dieksekusi selanjutnya di mana pemilihan tersebut didasarkan atas kondisi tertentu. Dalam bahasa C terdapat dua buah jenis percabangan, yaitu struktur if dan struktur switch.
Macam-macam struktur perulangan dalam bahasa C++
a. Struktur If
Struktur if adalah struktur perulangan ynag paling sederhana, biasanya if sering digunakan untuk menyeleksi satu buah ekspresi saja.
Bentuk umum struktur if dengan satu kondisi :



if(kondisi)
statement;
Bentuk umun struktur if…else :
if(kondisi)
statemen-1
else
statemen-2
Bentuk umum struktur if dengan banyak kondisi :
if(kondisi)
{
Statement
}
Else if(kondisi)
{
Statement
}
Else
{
Statement
}
Contoh program I

/*Program kondisi sederhana dengan satu buah ekspresi*/

#include
Int main()
{
Int a;
a=35;
if (a == 35)
printf(“ angka ini adalah tiga puluh lima : %d \n ”, a);
}


Output contoh program I
angka ini adalah tiga puluh lima : 35

Sedikit ulasan : mula-mula variabel a dideklarasikan bertipe data integer, selanjutnya a ditetapkan bernilai 35, sehingga data menjadi konstanta (bernilai tetap) /*penyeleksian kondisi */ karena kondisi terpenuhi yaitu a sama dengan 35 maka program akan mengeksekusi statmen berikutnya yaitu mencetak tulisan “angka ini adalah tiga puluh lima “ diikuti konstanta a di mana a bernilai 35.

Contoh program II menggunakan if :

else
#include
Int main()
{
Int a;
Printf(“Masukkan nilai anda :”);
Scanf(“%d”, &a);
If (a >= 70)
Printf(“\n Selamat anda lulus !!!! \n”);
Else
Printf(“\n Anda belum lulus, terus berusaha. JIAYO!!! \n”)}



Output Program ke-II
Ex : Nilai yang diinput adalah 89 (hasil output akan berbeda jika anda memasukkan nilai kurang dari 70

Masukkan nilai anda : 89
Selamat anda lulus !!!!

Output program ke-II jika inputan kurang dari 70
Masukkan nilai anda : 69
Anda belum lulus, terus berusaha. JIAYO!!!


Contoh Program III if dengan banyak kondisi
#include
int main()
{
int a;
printf("Masukkan sembarang angka : " );
scanf("%d", &a);
if ((a > 0) && (a % 2 == 0))
{
printf("\n Bilangan tersebut adalah bilangan positif & bilangan genap ");
}
else if ((a > 0) && (a %2 !=0))
{
printf("\n bilangan tersebut adalah bilangan positif & bilangan ganjil ");
}
else if (a < 0 ) { printf("\n Bilangan tersebut adalah bilangan negatif"); } else { printf("\n Anda memasukkan angka 0"); } }







b. Struktur Kondisi “Switch....Case”

Struktur ini akan melaksanakan salah satu dari beberapa pernyataan ‘case’ tergantung nilai kondisi yang ada di dalam switch. Jika nilai switch sama dengan nilai pada salah satu case, maka statement di bawah case tersebut akan dieksekusi, pengeksekusian berakhir ketika program bertemu dengan kata break, kemudian program akan lompat ke akhir dari stuktur selektif switch. Jika tidak ada nilai pada case yang equivalen dengan nilai kondisi, maka program akan mengksekusi statement di bawah default. Bentuk umum dari struktur kondisi ini adalah :

switch(Condition) { case 1 : statement 1; break; case 2 : statement 2; break; ..... ..... …. case n : statement n; break; default : statement } Contoh Program #include
int main()
{
int pil, alas, tinggi, luas, p, l, luas_pp;

printf(" ***** MENU ***** \n");
printf("\n 1. Menghitung luas segi tiga");
printf("\n 2. Menghitung luas Persegi panjang ");
printf("\n 3. Keluar ");
printf("\n Masukkan pilihan anda (1...3) : ");
scanf("%d", &pil);
switch (pil)
{
case 1:
printf("\n Masukkan Alas :");
scanf("%d", &alas);
printf("\n Masukkan tinggi : ");
scanf("%d", &tinggi);
luas = .5*alas*tinggi;
printf("\n Luas segitiga tersebut adalah : %d", luas);
break;
case 2:
printf("\n Masukkan Panjang : ");
scanf("%d", &p);
printf("\n Masukkan Lebar : ");
scanf("%d", &l);
luas_pp = p*l;
printf("\n Luas Persegi panjang tersebut adalah : %d", luas_pp);
break;
case 3:
break;
default :
printf("\n Pilihan tidak tersedia, pilihan yang tersedia 1,2,3");
}
}



Contoh Program Perulangan Sederhana dalam Pascal :



For…to…do

program kelipatan_3;

uses wincrt;

var i:integer;

begin

writeln('kelipatan 3 sampai 21:');

for i:=3 to 21 do

if i mod 3 =0 then

writeln(i);

end.

While…do…

Inisialisasi=1

Program whiledo1;

Uses wincrt;

Var i:byte;

Begin

Writeln('Kelipatan 7 sampai 70:');

i:=1;

While i<=70 Do

Begin

If i mod 7 = 0 then

Writeln(i);

i:=i+1;

end;

end.

Inisialisasi=0

Program whiledo0;

Uses wincrt;

Var i:byte;

Begin

Writeln('Bilangan cacah ganjil sampai 20:');

i:=0;

While i<=20 Do

Begin

If i mod 2 = 1 then



Writeln(i);

i:=i+1;

end;

end.

Repeat…until

Inisialisasi=0

program rufaktorial;

uses wincrt;

var

i,n,f:integer;

begin

write('n = '); read(n);

i:=0;

f:=1;

repeat

i:=i+1;

f:=f*i;

until i=n;

writeln(n,' faktorial = ',f);

end.



Inisialisasi=1

Program ru1;

Uses wincrt;

Var x:integer;

Begin

x:=1;

repeat

writeln(x,'. Selvidiah Mutiara adalah seorang Mahasiswi Prodi Matematika');

x:=x+1;

until x>9;

end.





















KESIMPULAN

Struktur data merupakan salah satu bahan dasar pembuatan program. Pemakaian struktur data yang tepat di dalam proses pemrograman, akan menghasilkan algoritma yang jelas dan tepat sehingga menjadikan program secara keseluruhan lebih sederhana. Array merupakan bagian dari struktur data yaitu termasuk kedalam struktur data sederhana yang dapat di definisikan sebagai pemesanan alokasi memory sementara pada komputer.Apabila kita membuat program dengan data yang sudah kita ketahui batasnyamaka kita menggunakan Array (type data statis), namun apabila datanya belum kita ketahui batasnya maka gunakan pointer (type data dinamis)

































DAFTAR PUSTAKA

http://kuliahinformatika.wordpress.com/2009/12/06/tipe-data-perulangan-percabangan-perbedaan-do-while-while-for-break-continue-goto/

http://www.aquagaze.mwb.im/rangkuman-tentang-variabel-konstanta-per.xhtml


http://viselvi.blogspot.com/2013/05/contoh-program-perulangan-sederhana.html

http://atikafw.blogspot.com/2012/05/contoh-coding-c-mendefinisikan-variabel.html

http://www.kangarif.com/2012/12/konstanta-pada-pemrograman-c.html

http://tungditung.blogspot.com/2013/03/pengertian-variabel-konstanta-dan-tipe.html