LOGIKA DAN ALGORITMA
A. Pengertian Dasar Logika & Algoritma
1. LOGIKA
Diperkenalkan pertama kali oleh Aristoteles (384-322 SM)
Definisi Logika
1. penalaran atau bentuk pemikiran.
2. ilmu yang memberikan prinsip-prinsip yang harus diikuti agar dapat berfikir valid menurut aturan yang berlaku.
1. penalaran atau bentuk pemikiran.
2. ilmu yang memberikan prinsip-prinsip yang harus diikuti agar dapat berfikir valid menurut aturan yang berlaku.
2. ALGORITMA
Asal usul kata algoritma
dapat Anda baca dalam buku “The Art
of Computer Programming Second Edition Volume I” yang ditulis oleh Donald
E. Knuth (1973, p1- )
Menurut Donald E. Knuth
(1973,p4), algoritma dalam penger tian modern mempunyai
kemiripan dengan istilah resep , proses, metode,
teknik, prosedur, rutin . Algor itma adalah sekumpulan
aturan-aturan berhingga yang memberikan sederetan
operasi-operasi untuk menyelesaikan suatu jenis masalah yang khusus.
Menurut Rinaldi Munir, algoritma adalah
urutan langkah-langkah logis penyelesaian masalah yang disusun
secara sistematis. Berdasarkan dua pengertian algoritma di atas, dapat
disimpulkan bahwa algor itma merupakan suatu istilah yang luas, yang tidak
hanya berkaitan dengan dunia komputer.
B. Tipe-tipe
Algoritma Berdasarkan Format Penulisan
Algoritma adalah independen
terhadap bahasa pemr ograman tertentu, artinya
algoritma yang telah dibuat tidak boleh
hanya dapat diterapkan pada bahasa pemrograman
tertentu. Penulisan algoritma tidak ter ikat
pada suatu aturan tertentu, tetapi harus jelas maksudnya
untuk tiap langkah algoritmanya. Namun pada dasar nya algoritma dibagi menjadi
beberapa macam berdasarkan for mat penulisannya, yaitu:
1. Deskriptif
Algoritma bertipe deskr iptif
maksudnya adalah algoritma yang ditulis dalam
bahasa manusia sehari- hari (misalnya bahasa Indonesia atau bahasa Inggris) dan
dalam bentuk kalimat. Setiap langkah algoritmanya
diterangkan dalam satu atau beberapa kalimat.
Sebagai contoh misalnya algoritma menentukan bilangan
terbesar dari 3 bilangan berikut ini:
Algoritma Menentukan_bilangan_terbesar_dari_3_bilangan
Meminta input 3 bilangan
dari user, misalkan bilangan a, b, dan c.
Apabila
bilangan a lebih besar dari b maupun
c, maka bilangan a merupakan bilangan terbesar.
Jika tidak
(bilangan a tidak lebih besar dari b
atau c) berarti bilangan a sudah pasti
bukan bilangan terbesar. Kemungkinannya tinggal
bilangan b atau c. Apabila bilangan b
lebih besar dari c, maka b merupakan
bilangan terbesar. Sebaliknya apabila bilangan b
tidak lebih besar dari c, maka bilangan c merupakan yang terbesar.
Selesai.
2. Flow Chart (Diagram
Alir)
Selain dalam bentuk tulisan, algoritma juga dapat ditulis
dalam bentuk diagram- diagram dengan anak panah sebagai penunjuk urutan
langkah algoritmanya. Algor itma yang ditulis dengan simbol-simbol demikian
yang dinamakan flow chart .
Mengenai lambang- lambang yang
digunakan akan dibahas pada bagian selanjutnya.
Sekarang diberikan suatu contoh algoritma menentukan bilangan terbesar dar i 3
bilangan seperti yang dicontohkan sebelumnya, tetapi ditulis dalam bentuk flow
chart.
3. Pseudocode
Pseudo berarti imitasi
dan code ber arti kode yang dihubungkan dengan
instruksi yang ditulis dalam bahasa komputer
(kode bahasa pemrograman). Apabila diterjemahkan secar
a bebas, maka pseudocode berarti tiruan
atau imitasi dari kode bahasa pemrograman. Pada
dasarnya, pseudocode merupakan suatu bahasa
yang memungkinkan programmer untuk berpikir terhadap per masalahan yang
harus dipecahkan tanpa harus memikirkan syntax
dar i bahasa pemrogr aman yang tertentu. Tidak
ada aturan penulisan syntax di
dalam pseudocode. Jadi pseudocode digunakan untuk
menggambarkan logika urut-urutan dari program tanpa memandang bagaimana bahasa
pemrogramannya.
Walaupun pseudocode tidak ada aturan penulisan syntax, di
dalam buku ini akan diberikan suatu aturan-aturan penulisan syntax
yang cukup seder hana agar pembaca dapat lebih
mudah dalam mempelajari algoritma-algor itma yang
ada di dalam buku ini. Pseudocode yang
ditulis di dalam buku ini akan menyerupai
(meniru) syntax- syntax dalam bahasa Pascal. Namun dibuat sesederhana
mungkin sehingga tidak akan ada kesulitan bagi pembaca
untuk memahami algoritma- algor itma dalam buku
ini walaupun pembaca belum pernah mempelajar i bahasa Pascal.
Contoh algoritma menentukan
bilangan terbesar dar i tiga bilangan yang
ditulis dalam bentuk pseudocode bergaya buku ini.
01|
ALGORITMA Menentukan_terbesar_dari_3_bilangan
02|
Deklarasi:
03|
a,b,c, terbesar : integer
04|
05|
Deskripsi:
06|
Read(a,b,c)
07|
If (a>b) and (a>c) then
08|
Terbesar a
09|
Else
10|
If b>c then
11|
Terbesar b
12|
Else
13|
Terbesar c
14|
Endif
15|
Endif
16|
Write(terbesar)
C. Flow
Chart (Diagram Alir)
1. Pengertian
Diagram alir atau flow chart adalah suatu bagan yang
menggambarkan arus logika dar i data yang akan dipr oses dalam suatu
program dari awal sampai akhir. Diagram alir terdiri dar i simbol-simbol
yang mewakili fungsi-fungsi langkah program dan garis alir (flow lines)
menunjukkan urutan dari simbol-simbol yang akan diker jakan.
Algoritma
Diagram Alur sering digunakan untuk menggambarkan sebuah
algoritma.
Dalam matematika dan komputasi, algoritma merupakan
kumpulan perintah untuk menyelesaikan suatu masalah. Perintah-perintah ini
dapat diterjemahkan secara bertahap dari awal hingga akhir. Masalah tersebut
dapat berupa apa saja, dengan catatan untuk setiap masalah, ada kriteria
kondisi awal yang harus dipenuhi sebelum menjalankan algoritma. Algoritma akan
dapat selalu berakhir untuk semua kondisi awal yang memenuhi kriteria, dalam
hal ini berbeda dengan heuristik. Algoritma sering mempunyai langkah
pengulangan (iterasi) atau memerlukan keputusan (logika Boolean dan
perbandingan) sampai tugasnya selesai.
Desain dan analisis algoritma adalah suatu cabang khusus
dalam ilmu komputer yang mempelajari karakteristik dan performa dari suatu
algoritma dalam menyelesaikan masalah, terlepas dari implementasi algoritma
tersebut. Dalam cabang disiplin ini algoritma dipelajari secara abstrak,
terlepas dari sistem komputer atau bahasa pemrograman yang digunakan. Algoritma
yang berbeda dapat diterapkan pada suatu masalah dengan kriteria yang sama.
Kompleksitas dari suatu algoritma merupakan ukuran
seberapa banyak komputasi yang dibutuhkan algoritma tersebut untuk
menyelesaikan masalah. Secara informal, algoritma yang dapat menyelesaikan
suatu permasalahan dalam waktu yang singkat memiliki kompleksitas yang rendah,
sementara algoritma yang membutuhkan waktu lama untuk menyelesaikan masalahnya
mempunyai kompleksitas yang tinggi.
Sejarah istilah "algoritma"Kata algoritma
berasal dari latinisasi nama seorang ahli matematika dari Uzbekistan Al Khawārizmi (hidup sekitar abad ke-9), sebagaimana tercantum
pada terjemahan karyanya dalam bahasa latin dari abad ke-12 "Algorithmi de
numero Indorum". Pada awalnya kata algorisma adalah istilah yang merujuk
kepada aturan-aturan aritmetis untuk menyelesaikan persoalan dengan menggunakan
bilangan numerik arab (sebenarnya dari India, seperti tertulis pada judul di
atas). Pada abad ke-18, istilah ini berkembang menjadi algoritma, yang mencakup
semua prosedur atau urutan langkah yang jelas dan diperlukan untuk
menyelesaikan suatu permasalahan.
Jenis-jenis Algoritma
Terdapat beragam klasifikasi algoritma dan setiap
klasifikasi mempunyai alasan tersendiri. Salah satu cara untuk melakukan
klasifikasi jenis-jenis algoritma adalah dengan memperhatikan paradigma dan
metode yang digunakan untuk mendesain algoritma tersebut. Beberapa paradigma
yang digunakan dalam menyusun suatu algoritma akan dipaparkan dibagian ini.
Masing-masing paradigma dapat digunakan dalam banyak algoritma yang berbeda.
Divide and Conquer, paradigma untuk membagi suatu permasalahan besar menjadi
permasalahan-permasalahan yang lebih kecil. Pembagian masalah ini dilakukan
terus menerus sampai ditemukan bagian masalah kecil yang mudah untuk
dipecahkan. Singkatnya menyelesaikan keseluruhan masalah dengan membagi masalah
besar dan kemudian memecahkan permasalahan-permasalahan kecil yang terbentuk.
Dynamic programming, paradigma pemrograman dinamik akan sesuai jika digunakan pada suatu
masalah yang mengandung sub-struktur yang optimal (, dan mengandung beberapa
bagian permasalahan yang tumpang tindih . Paradigma ini sekilas terlihat mirip
dengan paradigma Divide and Conquer, sama-sama mencoba untuk membagi
permasalahan menjadi sub permasalahan yang lebih kecil, tapi secara intrinsik
ada perbedaan dari karakter permasalahan yang dihadapi.
Metode serakah. Sebuah algoritma
serakah mirip dengan sebuah Pemrograman dinamik, bedanya jawaban dari
submasalah tidak perlu diketahui dalam setiap tahap;
dan menggunakan pilihan "serakah" apa yang
dilihat terbaik pada saat itu.
PERLUNYA PERINTAH BAHASA PEMROGRAMAN DI DALAM ALGORITMA
Meskipun sudah dikatakan, bahwa sewaktu kita menyusun
algoritma kita tidak perlu tahu bahasa pemrograman apa yang akan digunakan
kelak, namun, untuk penulisan algoritma yang lebih efisien dan efektif, maka
penggunaan sebagian perintah yang ada di dalam bahasa pemrograman perlu
dilakukan juga.
Adapun perintah bahasa pemrograman yang paling sering digunakan untuk menyusun algoritma adalah bahasa pemrogrman yang terstrukutur, seperti
Pascal, C, SNOBOL, PL/1, dan sebagainya. Misalkan saja, untuk contoh berikut ini :
Langkah 1 : Beri nilai 10 ke variabel S
Maka, akan lebih mudah jika ditulis sebagai :
Langkah 1 : S := 10;
Belum lagi jika algoritma yang ditulis harus melakukan perulangan langkah
ke langkah-langkah sebelumnya (looping).
10 Mulai I:= 1;
11 Lakukan perbandingan data ke I dengan data ke I+1
12 Jika data ke I+1 lebih kecil, maka tukar tempat keduanya
13 Tambahkan I dengan 1
14 Lakukan langkah 11 hingga langkah 13 selama nilai I < 10
15 selesai
Tentu akan lebih ringkas jika kita tulis (perintah BASIC) :
10 For I= 1 to 10
20 If A(i) > A(I+1) then SWAP A(i), A(j)
30 next
40 end
Adapun perintah bahasa pemrograman yang paling sering digunakan untuk menyusun algoritma adalah bahasa pemrogrman yang terstrukutur, seperti
Pascal, C, SNOBOL, PL/1, dan sebagainya. Misalkan saja, untuk contoh berikut ini :
Langkah 1 : Beri nilai 10 ke variabel S
Maka, akan lebih mudah jika ditulis sebagai :
Langkah 1 : S := 10;
Belum lagi jika algoritma yang ditulis harus melakukan perulangan langkah
ke langkah-langkah sebelumnya (looping).
10 Mulai I:= 1;
11 Lakukan perbandingan data ke I dengan data ke I+1
12 Jika data ke I+1 lebih kecil, maka tukar tempat keduanya
13 Tambahkan I dengan 1
14 Lakukan langkah 11 hingga langkah 13 selama nilai I < 10
15 selesai
Tentu akan lebih ringkas jika kita tulis (perintah BASIC) :
10 For I= 1 to 10
20 If A(i) > A(I+1) then SWAP A(i), A(j)
30 next
40 end
Jadi terlihat, jika algoritma tersebut sederhana, maka penyusunan algoritma akan sama dengan penyusunan sebuah program (karena semua perintahnya
sudah sesuai dengan kaidah penulisan di bahasa pemrogramannya). Apakah semuanya akan demikian ?. Tentu saja tidak, misalkan, kita diminta untuk menentukan bilangan terkecil dari seratus buah bilangan yang akan dimasukkan ke komputer, ini masih dapat langsung dibuatkan programnya. Algoritma (program)nya bisa kita susun sebagai berikut :
1 DIM A(100)
2 FOR M = 1 TO 100
3 INPUT A(M) : NEXT : KECIL = A(1)
4 FOR M = 2 TO 100
5 IF KECIL > A(M) THEN X = KECIL: KECIL = A(M) : A(M) = X
6 NEXT : PRINT KECIL : END
2 FOR M = 1 TO 100
3 INPUT A(M) : NEXT : KECIL = A(1)
4 FOR M = 2 TO 100
5 IF KECIL > A(M) THEN X = KECIL: KECIL = A(M) : A(M) = X
6 NEXT : PRINT KECIL : END
Tetapi, misalkan jika kita diminta untuk mengalihkan
notasi infix menjadi postfix melalui stack, hal itu sulit untuk dilakukan.
Algoritmanya bisa menggunakan gabungan kalimat dengan bahasapemrograman, berikut contoh penggalannya.
Contoh :
1. Asumsi : deretan notasi infix dimasukkan ke dalam sebuah variabel array
bernilai string, nama variabelnya D
2. S adalah variabel string untuk menyimpan susunan data di dalam stack
3. H adalah variabel string untuk menyimpan hasil
4. P = banyaknya elemen array
5. For I = 1 to p
If top(s) = empty then
{top(s) adalah posisi atas stack)
if D(i) = operand then
H = D(i)
Else
S = S + D(i)
Top(s) = D(i)
Endif
Else
If D(i) = operator then
If derajat D(i) > derajat Top(s) then
Algoritmanya bisa menggunakan gabungan kalimat dengan bahasapemrograman, berikut contoh penggalannya.
Contoh :
1. Asumsi : deretan notasi infix dimasukkan ke dalam sebuah variabel array
bernilai string, nama variabelnya D
2. S adalah variabel string untuk menyimpan susunan data di dalam stack
3. H adalah variabel string untuk menyimpan hasil
4. P = banyaknya elemen array
5. For I = 1 to p
If top(s) = empty then
{top(s) adalah posisi atas stack)
if D(i) = operand then
H = D(i)
Else
S = S + D(i)
Top(s) = D(i)
Endif
Else
If D(i) = operator then
If derajat D(i) > derajat Top(s) then
CARA
MASUK & MEMULAI BORLAND C++ :
·
Klik
Start pilih All Program
·
Pilih
Borland C++ 5.02 lalu Klik
·
Klik
Menu File – New – Text Edit
Struktur
Program C++
|
#include <File.Header>
main()
{
Pernyataan_program;
}
|
File
Header/Include dasar input output terdiri dari :
#inlude
<stdio.h> : scanf, printf, puts
#inlude
<conio.h> : getch, clrscr, getche
#inlude
<iostream.h> : cout, cin, endl
#inlude
<iomanip.h> : setprecision,setw, setiosflags
Contoh:
#include<stdio.h>
#include<conio.h>
main()
{
lrscr();
printf("\nHaloo
Apa khabar");
printf("\nPerkenalkan
Saya Borland C++");
getch();
}
Menjalankan
Program Borland C++ :
·
Alt
+ F9 (untuk Compile), lalu tekan Ctrl + F9 (Run) atau
·
Pilih
Menu Debug – Klik Run (Ctrl + F9)
TIPE –TIPE DATA
|
Tipe
Data
|
Ukuran
Memori
|
Jangkauan
Nilai
|
Jumlah
Digit
|
|
Char
|
1
Byte
|
-128
s.d 127
|
|
|
Int
|
2
Byte
|
-32768
s.d 32767
|
|
|
Short
|
2
Byte
|
-32768
s.d 32767
|
|
|
Long
|
4
Byte
|
-2147435648
s.d 2147435647
|
|
|
Float
|
4
Byte
|
3.4X10-38 s.d
3.4X1038
|
5-7
|
|
Double
|
8
Byte
|
1.7X10-308 s.d
1.7X10308
|
15-16
|
|
Long
Double
|
10
Byte
|
3.4X10-4932 s.d
1.1X104932
|
19
|
1.
KONSTANTA
Konstanta
adalah suatu nilai yang nilainya tetap. Terbagi menjadi 2 bagian:
o
Konstanta
Bilangan
o
Konstanta
Text Deklarasi Konstanta:
const
nama_konstanta=nilai konstanta;
Contoh:
const x= 89;
2.
VARIABEL
Adalah
suatu tempat menampung data atau konstanta di memori yang mempunyai nilai atau
data yang dapat berubah-ubah selama proses program.
Dalam
Pemberian Nama Variabel mempunyai ketentuan antara lain:
o
Tidak
boleh ada spasi (contoh: gaji bersih) dan dapat menggunakan tanda garis bawah
(_) sebagai penghubung (contoh : gaji_bersih).
o
Tidak
Boleh diawali oleh angka dan menggunakan operator Aritmatika.
|
Tipe Variabel
|
Simbol deklarasi
|
|
Integer
|
Int
|
|
Floating Point
|
Float
|
|
Double Precision
|
Double
|
|
Karakter
|
Char
|
|
Unsigned Integer
|
Unsigned int
|
|
Unsigned Character
|
Unsigned char
|
|
Long Integer
|
Long int
|
|
Unsigned Long Integer
|
Unsigned long int
|
Bentuk
Penulisan Deklarasi:
Tipe
data nama_variabel;
Contoh:
int
nama_mahasiswa;
char
grade;
float
rata_rata;
int
nilai;
·
PERINTAH MASUKAN
scanf(),
gets(), cin(), getch(), getche()
Tabel penentu format scanf()
|
TIPE
DATA
|
Penentu
Format untuk printf()
|
|
Integer
|
%d
|
|
Floating
Point
|
|
|
Bentuk
Desimal
|
%f
|
|
Bentuk
Berpangkat
|
%e
|
|
Bentuk
desimal dan Pangkat
|
%g
|
|
Double
Precision
|
%lf
|
|
Character
|
%c
|
|
String
|
%s
|
|
Unsigned
Integer
|
%u
|
|
Long
Integer
|
%ld
|
|
Long
Unsigned Integer
|
%lu
|
|
Unsigned
Hexadesimal Integer
|
%x
|
|
Unsigned
Octal Integer
|
%o
|
OPERATOR BAHASA C++
1.
Operator Aritmatika dikenal sebagai
operator binary
|
Operator
|
Prioritas
|
Keterangan
|
Contoh
|
|
*
|
+
- - Tertinggi
|
Perkalian
|
2
* 3
|
|
/
|
-
|
Pembagian
|
7
/ 2
|
|
%
|
*
/ %
|
Sisa
pembagian
|
7
% 2
|
|
+
|
+
- Terendah
|
Penjumlahan
|
5
+ 4
|
|
-
|
Pengurangan
|
5
– 4
|
2.
Operator Penugasan adalah berupa simbol
sama dengan (=)
Contoh
:
A=1;
B=2+b;
A=2+(b=1)
3.
Operator Penurunan (Decrement) Dan
Penaikan (Increment) adalah
operator yang digunakan untuk menurunkan dan menaikkan nilai variabel sebesar
satu, penempatannya dapat dilakukan di muka atau di belakangnya.
|
Operator
|
Keterangan
|
|
+
+
|
Operator Penaikkan
|
|
-
-
|
Operator Penurunan
|
Contoh
:
X
= x + 1; dapat ditulis menjadi + + x;
Y
= y – 1; dapat ditulis menjadi y - - ;
4.
Operator Relasi adalah operator untuk
membandingkan dua buah nilai.
|
Operator
|
Keterangan
|
|
= =
|
Sama
Dengan ( bukan penugasan)
|
|
!=
|
Tidak
Sama Dengan
|
|
>
|
Lebih
Dari
|
|
<
|
Kurang
Dari
|
|
>=
|
Lebih
Dari atau Sama Dengan
|
|
<=
|
Kurang
Dari atau Sama Dengan
|
5.
Operator Logika adalah digunakan
untuk menghubungkan dua buah ungkapan kondisi menjadi sebuah ungkapan kondisi
yaitu 1 (True) dan 2 atau 0 (false). Operator ini berupa:
o
&&
(operator logika AND)
o
||
(operator logika OR)
o
!
(operator logika NOT)
6.
Operator Bitwise adalah
manipulasi data dalam bentuk bit. Borland C++ menyediakan enam buah operator
bitwise.
|
Operator
|
Keterangan
|
Contoh
|
|
~
|
Bitwise
NOT (bukan)
|
~25
|
|
<<
|
Geser
bit ke kiri (left shift)
|
25<<2
|
|
>>
|
Geser
bit ke kanan (right shift)
|
25>>2
|
|
&
|
Bitwise
AND (dan)
|
25&2
|
|
^
|
Bitwise
XOR
|
25^2
|
|
|
|
Bitwise
OR (atau)
|
25|2
|
Nama : Septia Rahayu (12155418)
Manajemen Informatika 121H13
septiarahayu19.blogspot.com
Tidak ada komentar:
Posting Komentar