Senin, 16 November 2009

Contoh Soal LOOPING

Statement While

int bil=1;
while(bil<=5)
cout< ++bil; bil = bil + 1

Bil = 1 Bil<=5 Cetak bil Bil= bil + 1
1 1<=5 1 2
2 2<=5 2 3
3 3<=5 3 4
4 4<=5 4 5
5 5<=5 5 6
6 6<=5

Output: 12345


Statement Do….While

int bil=2;
do
coutwhile (bil>=10);

Bil=2 Cetak bil Bil + 2 Bil>=10 Y/T
2 2 4 4>=10 T
4 4 6 6>=10 T
6 6 8 8>=10 T
8 8 10 10>=10 T
10 10 12 12>=10 Y

output: 2 4 6 8 10

Latihan-latihan 2

Soal no.5

#include
Void main()
{
int I,N;
N = 10;
X = 10;
T = 0;
While (T<=100);
{
T = T + N;
N = N + X;
X = X + 5;
}
Printf (“\n%i,”T);
}

N=10 X=10 T=0 T<=100 Y/T T =T+N N =N+X X=X+5 Cetak T
10 10 0 0<=100 Y 10 20 15
20 15 10 10<=100 Y 30 35 20
35 20 30 30<=100 Y 65 55 25
55 25 65 65<=100 Y 120 80 30
80 30 120 120<=100 T 120

Output: 120

Soal n0.6

#include
Void main()
{
int I,N;
N = 10;
X = 10;
T = 0;
While (T<=100);
{
T = T + N;
Printf (“\n%i,”T);
N = N + X;
X = X + 5;
}
}

N=10 X=10 T=0 T<=100 Y/T T =T+N Cetak T N =N+X X=X+5
10 10 0 0<=100 Y 10 20 15
20 15 10 10<=100 Y 30 30 35 20
35 20 30 30<=100 Y 65 65 55 25
55 25 65 65<=100 Y 120 120 80 30
80 30 120 120<=100 T

Output: 10 30 65 120


Soal Nested FOR

Soal no.1

#include
Void main()
{
int I.J;
for (I = 1, 1<=3;I++);
{
for(J=1;J<=5;J++);
{
Printf(“\n%i”,I);
}
}

I=1 I<=3 Y\T J=1 J<=5 Y\T Cetak I J++ I++
1 1<=3 Y 1 1<=5 Y 1 2
2 2<=5 Y 1 3
3 3<=5 Y 1 4
4 4<=5 Y 1 5
5 5<=5 Y 1 6
6 6<=5 T--------------------------> 2
2 2<=3 Y 1 1<=5 Y 2 2
2 2<=5 Y 2 3
3 3<=5 Y 2 4
4 4<=5 Y 2 5
5 5<=5 Y 2 6
6 6<=5 T--------------------------> 3
3 3<=3 Y 1 1<=5 Y 3 2
2 2<=5 Y 3 3
3 3<=5 Y 3 4
4 4<=5 Y 3 5
5 5<=5 Y 3 6
6 6<=5 T----------------------------> 4
4 4<=3 T

Output:
1 1 1 1 1
2 2 2 2 2
3 3 3 3 3


Soal no.2

#include
Void main()
{
int I.J;
for (I = 1, 1<=3;I++);
{
for(J=1;J<=5;J++);
{
Printf(“\n%i”,J);
}
}

I=1 I<=3 Y\T J=1 J<=5 Y\T Cetak J I++ J++
1 1<=3 Y 1 1<=5 Y 1 2
2 2<=3 Y 1 3
3 3<=3 Y 1 4
4 4<=3 T---> 2
1 1<=3 Y 2 2<=5 Y 2 2
2 2<=3 Y 2 3
3 3<=3 Y 2 4
4 4<=3 T---> 3
1 1<=3 Y 3 3<=5 Y 3 2
2 2<=3 Y 3 3
3 3<=3 Y 3 4
4 4<=3 T---> 4
1 1<=3 Y 4 4<=5 Y 4 2
2 2<=3 Y 4 3
3 3<=3 Y 4 4
4 4<=3 T---> 5
1 1<=3 Y 5 5<=5 Y 5 2
2 2<=3 Y 5 3
3 3<=3 Y 5 4
4 4<=3 T---> 6
6 6<=5 T

Output:
1 1 1
2 2 2
3 3 3
4 4 4
5 5 5

Latihan-latihan

Soal no.1

#include
void main()
{
int I,N;
N=45;
I=1;
while(I<=5)
{
printf(“\n%i”,N);
N=N+5;
I=I+1;
}
}

N=45 I=1 I<=5 Y/T Cetak N N=N+5 I=I+1
45 1 1<=5 Y 45 50 2
50 2 2<=5 Y 50 55 3
55 3 3<=5 Y 55 60 4
60 4 4<=5 Y 60 65 5
65 5 5<=5 Y 65 70 6
70 6 6<=5 T

Output : 45 50 55 60 65

Soal no.2

#include
void main()
{
int I,N;
N=45;
I=1;
while(I<=5)
{
N=N+5;
I=I+1;
}
printf(“\n%i”,N);
}

N=45 I=1 I<=5 Y/T N=N+5 I=I+1 CetakN
45 1 1<=5 Y 50 2
50 2 2<=5 Y 55 3
55 3 3<=5 Y 60 4
60 4 4<=5 Y 65 5
65 5 5<=5 Y 70 6
70 6 6<=5 T

Output : 70

Soal no.3

#include
void main()
{
int I,N;
N=45;
I=1;
while(I<=5)
{
N=N+5;
printf(“\n%i”,N);
I=I+1;
}
}

N=45 I=1 I<=5 Y/T N=N+5 Cetak N I=I+1
45 1 1<=5 Y 50 50 2
50 2 2<=5 Y 55 55 3
55 3 3<=5 Y 60 60 4
60 4 4<=5 Y 65 65 5
65 5 5<=5 Y 70 70 6
70 6 6<=5 T

Output: 50 55 60 65 70

Soal no.4

#include
Void main()
{
int I,N;
N = 10;
I = 10;
While (N<=100);
{
N = N + I
Printf (“\n%i,”N);
I = I + 5;
}
}

N=10 I=1 N<=100 Y/T N = N + 1 Cetak N I = I + 5
10 10 10<=100 Y 20 20 15
20 15 15<=100 Y 35 35 20
35 20 20<=100 Y 55 55 25
55 25 25<=100 Y 80 80 30
80 30 30<=100 Y 110 110 35
110 35 35<=100 T

Output: 20 35 55 80 110

TUGAS LOGIKA 2

Latihan 5.7

1.Buatlah program untuk menghitung 10 deret bilangan genap :

#include
#include
#include
main()
{
char kode;
clrscr();
cout<<"program untuk menghitung 10 deret bilangan genap";
cout<<"masukan kode bilangan genap:";cin>>kode;
switch (kode)
{
case'a':
cout<<"2";
break;
case'b':
cout<<"2+4=6";
break;
case'c':
cout<<"2+4+6=12";
break;
case'd':
cout<<"2+4+6+8=20";
break;
case'e':
cout<<"2+4+6+8+10=30";
break;
case'f':
cout<<"2+4+6+8+10+12=42";
break;
case'g':
cout<<"2+4+6+8+10+12+14=54";
break;
case'h':
cout<<"2+4+6+8+10+12+14+16=70";
break;
case'i':
cout<<"2+4+6+8+10+12+14+16+18=88";
break;
case'j':
cout<<"2+4+6+8+10+12+14+16+18+20=110";
break;
default:
cout<<"hasil nilai deret angka genap";
break;
}
getch();
}

Output:
2+4+6+8+10+12+14+16+18+20=110

2. Buatlah program untuk menghitung 10 deret bilangan ganjil:

#include
#include
#include
main()
{
char kode;
clrscr();
cout<<"program untuk menghitung 10 deret bilangan ganjil";
cout<<"masukan kode bilangan ganjil:";cin>>kode;
switch (kode)
{
case'a':
cout<<"1";
break;
case'b':
cout<<"1+3=4";
break;
case'c':
cout<<"1+3+5=9";
break;
case'd':
cout<<"1+3+5+7=16";
break;
case'e':
cout<<"1+3+5+7+9=25";
break;
case'f':
cout<<"1+3+5+7+9+11=36";
break;
case'g':
cout<<"1+3+5+7+9+11+13=49";
break;
case'h':
cout<<"1+3+5+7+9+11+13+15=64";
break;
case'i':
cout<<"1+3+5+7+9+11+13+15+17=81";
break;
case'j':
cout<<"1+3+5+7+9+11+13+15+17+19=100";
break;
default:
cout<<"hasil nilai deret angka ganjil";
break;
}
getch();
}

Output:
1+3+5+7+9+11+13+15+17+19=100

TUGAS LOGIKA 1

Soal No 1.
#include
#include
#include
#include
#include
main()
{
int a;
clrscr();
for (a=1;a<=5;++a)
cout<<""<cout<<"\n";
for (a=1;a<=4;++a)
cout<<""<cout<<"\n";
for (a=1;a<=3;++a)
cout<<""<cout<<"\n";
for (a=2;a<=3;++a)
cout<<""<cout<<"\n";
for (a=1;a<=1;++a)
cout<<""<
cout<<"\n";
getch();
}
Hasil cetak:
1 2 3 4 5
1 2 3 4
1 2 3
1 2
1





Soal no2

#include
#include
#include
main()
{
int a;
clrscr();
for (a=1;a<=5;++a)
cout<<""<
cout<<"\n";
for (a=6;a<=10;++a)
cout<<""<
cout<<"\n";
for (a=11;a<=15;++a)
cout<<""<
cout<<"\n";
getch();
}

Hasil cetak:

1 2 3 4 5
6 7 8 9 10
11 12 13 14 15



Soal no 3

#include
#include
#include
main()
{
int a;
clrscr();
for (a=1;a<=5;++a)
cout<<""<
cout<<"\n";
for (a=6;a<=9;++a)
cout<<""<
cout<<"\n";
for (a=10;a<=12;++a)
cout<<""<
cout<<"\n";
for (a=13;a<=14;++a)
cout<<""<
cout<<"\n";
for (a=15;a<=15;++a)
cout<<""<
cout<<"\n";
getch();
}

Hasil cetak:

1 2 3 4 5
6 7 8 9
10 11 12
13 14
15


Selasa, 10 November 2009

Struktur Rekursif

Struktur Rekursif

Rekursif adalah suatu proses dari suatu subprogram yang dapat berupa fungsi atau prosedur yang memanggil dirinya sendiri.
Perulangan Rekursif dan Perulangan Iteratif.
Perulangan rekursif merupakan salah satu metode didalam pemrograman yang mana dalam sebuah fungsi terdapat intruksi yang memanggil fungsi itu sendri, atau lebih sering disebut memanggil dirinya sendiri.

Perulangan iteratif merupakan perulangan yang melakukan proses perulangan terhadap sekelompok intruksi. Perulangan dilakukan dalam batasan syarat tertentu. Ketika syarat tersebut tidak terpenuhi lagi maka perulangan aka terhenti.

Persamaan :
1.Iteratif dan rekursif merupakan metode atau teknik didalam perulangan(looping)
2.Sama-sama memiliki bagian yang berfungsi sebagai batas dalam sebuah perulangan

Perbedaan :
Iteratif dalam melakukan perulangan membutuhkan suatu instruksi program seperti for, repeat until dan while do, sedangkan rekursi tidak memakai instruksi program seperti itu. Cukup dengan fungsi tersebut.

Procedure Rekursif;<--nama fungsi: rekursif.
Begin
Write(‘AMIK BSI ’);
Rekursif;<--fungsi bernama rekursif ini dikatakan
Sebagai fungsi rekursi karena dia memanggil
Dirinya sendiri
End;
Begin
Rekursif;
End.

Pada contoh diatas: sebuah fungsi/prosedur adalah sebuah proses.
Contoh fungsi rekursif diatas adalah sebuah proses, dan didalam fungsi rekursif tersebut terdapat perintah/proses yang mengerjakan/memanggil proses rekursif (memanggil dirinya sendiri),sehingga fungsi/prosedur rekursif ini dinamakan fungsi rekursi.
Pada contoh diatas proses rekursi ini tidak memiliki batas berhenti.
Untuk mengetahui contoh fungsi rekursif ini silahkan melihat pada slide perkuliahan.

Catatan:

Fungsi/prosedur dalam sebuah bahasa pemrograman disebut juga subrutin/sub program.
Subprogram ini berisi perintah –perintah khusus yang sering digunakan untuk proses pemrograman. Sehingga untuk menghindari penulisan kode program yang sering digunakan maka dibuatlah fungsi (subprogram).

Cara untuk menggunakan subprogram yaitu dengan memanggil nama_fungsi tersebut melalui blok program utama.
Contoh pemanggilan terdapat pada program faktorial.

FUNGSI FAKTORIAL
0! = 1
N! = N x (N-1)! Untuk N > 0

function faktorial(N:integer):integer;
var i:integer;
begin
if N = 0 then
begin
faktorial :=1;
exit;
end
else
faktorial := n * faktorial(n-1);

end;

begin
write('Masukan Bilangan = '); readln(Bil);
write('jumlah faktorial = ',faktorial(Bil));
readln;
end.
HASIL:
Masukan Bilangan = 5
jumlah faktorial = 120

-->MENARA HANOI
Ini merupakan salah satu permasalahan rekursif yang terkenak dan pertama kali ditemukan oleh seorang pendeta Budha di Hanoi, Vietnam yang kemudian konsep tersebut dikenal dengan konsep menara Hanoi (The Tower of Hanoi). Menurut legenda pendeta tersebut akan memindahkan 64 buah piringan yang tidak sama besarnya dari satu menara ke menara lainnya.Mungkin karena terlalu sulit, pendet Budha tersebut mengatakan bahwa menara-menara tersebut berhasil dipindahkan.
Seperti permasalahan tersebut, bahwa permasalahan pada konsep ini adalah bagaimana cara memindahkan sejumlah piringan dari satu menara ke menara lainnya dengan satu menara bantu, dengan besar piringan tidak sama dan hanya boleh dilakukan hanya 1 kali.

Tujuan permainan ini adalah memindahkan n buah piringan dari tonggak asal A melalui tonggak bantu B menuju tonggak tujuan C. dengan aturan piring yang lebuh kecil tidak boleh berada dipiringan yang lebih besar.



Bayangkan keadaan berikut:
Ada 3 tiang (a, b, c) tempat piringan dengan ukuran yang bervariasi dapat ditumpuk. Pada mulanya semua piringan ada di “a”. Tugasnya adalah Memindah semua piringan ke “c” dengan aturan sbb:

• pada satu saat hanya boleh memindah 1 piringan
• setiap perpindahan berupa pengambilan piringan teratas dari satu tiang dan memasukannya ketiang lain, diatas piringan lain yang mungkin sudah ada pada tiang tersebut.
• Tidak boleh meletakan piringan diatas piringan lain yang lebih kecil. (piringan yang lebih besar tidak boleh berada di atas piringan yang lebih kecil).
• pada setiap akhir pemindahan semua piringan harus berada di tiang

Untuk Penyelesaian masalah kita daftarkan terlebih dahulu langkah-langkah penyelesaiannya:
a.ketika kondisi piringan  N= 1
Piringan 1 dipindahkan dari A ke C.
b.N =2
-->Pindahkan piringan 1 dari A ke B
-->Pindahkan piringan 2 dari A ke C
-->Pindahkan piringan 1 dari B ke C

Dari langkah – langkah penyelesaian diatas, maka dapat disimpulkan :
Untuk memindahkan piringan dari tonggak asal (A) ke tonggak tujuan (C) maka piringan ke N harus berada di tonggak tujuan (C).
Sedangkan piringan ke 1 sampai dengan (N-1) harus berada ditonggak bantu(B).
Setelah piringan ke 1 s/d N-1 berada di B, Kemudian pindahkan piringan ke 1 sampai dengan N-1 dari tonggak bantu (B) ke tonggak tujuan (C).


Untuk menyelesaikan masalah tersebut dapat digunakan algoritma Rekursif :

uses crt;
procedure Hanoi(n:integer;asal,bantu,tujuan:char);
begin
if n=0 then exit;
hanoi(n-1,asal,tujuan,bantu);
writeln('. Pindahkan piringan ke ',n,' dari ',asal,' ke ',tujuan);
hanoi(n-1,bantu,asal,tujuan);
end;

var N : integer;

begin
clrscr;
write('Jumlah Piringan = ');
readln(N);
hanoi(N,'A','B','C');
readln;
end.
Hasil :
Jumlah Piringan = 4
. Pindahkan piringan ke 1 dari A ke B
. Pindahkan piringan ke 2 dari A ke C
. Pindahkan piringan ke 1 dari B ke C
. Pindahkan piringan ke 3 dari A ke B
. Pindahkan piringan ke 1 dari C ke A
. Pindahkan piringan ke 2 dari C ke B
. Pindahkan piringan ke 1 dari A ke B
. Pindahkan piringan ke 4 dari A ke C
. Pindahkan piringan ke 1 dari B ke C
. Pindahkan piringan ke 2 dari B ke A
. Pindahkan piringan ke 1 dari C ke A
. Pindahkan piringan ke 3 dari B ke C
. Pindahkan piringan ke 1 dari A ke B
. Pindahkan piringan ke 2 dari A ke C
. Pindahkan piringan ke 1 dari B ke C

Hasil 2 :
Jumlah Piringan = 3
. Pindahkan piringan ke 1 dari A ke C
. Pindahkan piringan ke 2 dari A ke B
. Pindahkan piringan ke 1 dari C ke B
. Pindahkan piringan ke 3 dari A ke C
. Pindahkan piringan ke 1 dari B ke A
. Pindahkan piringan ke 2 dari B ke C
. Pindahkan piringan ke 1 dari A ke C

Referensi :
http://jkw1.wordpress.com/
http://yusriel.wordpress.com/
Yulikuspartono.2004.Pengantar Logika dan Algoritma,Yogyakarta.

ARRAY(Larik)

"LARIK (ARRAY)"

Didalam Bahasa Pemrograman Pascal (juga di bahasa pemrog. Yang lain) memiliki berbagai macam tipe data.

Tipe data dikelompokkan menjadi :
1.Tipe data sederhana
2.Tipe data terstruktur
3.Tipe data enumerated
4.Tipe data Pointer

Di Pertemuan telah dibahas:
tipe data sederhana (integer, Boolean, real, string, char dsb).

@ Tipe data terstruktur
Didalam tipe data terstruktur dikenal ada 2 tipe data:
1.Larik (array)
2.Record.

Larik/ Array-->tIpe data terstruktur yang terdiri dari sejumlah komponene yang memepunyai tipe yang sam dan berjumlah tetap. Komponen tersebut disebut tipe komponen atau tipe basis.

Bentuk umum :
Nama _larik:array[tipe indeks] of tipe larik

Ciri-ciri Array :
-setiap elemen data array diacu melalui indeksnya
-karena elemen disimpan secara berurutan , indek array harus lah suatu tipe yang mempunyai keterurutan (ada suksesor dan predecessor).
Contoh bertipe data : integer, karakter atau tipe data enumerasi.

Jika indeks integer maka keterturutan indeks sesuai dengan urutan integer (0,1,2,3,4,5,6,..)
Jika indeks Karakter maka keterturutan indeks sesuai dengan urutan karakter (a,b,c,d,e ….).

contoh : x:array[1..11] of integer;
var gaji:array[5..10] of char;

DIMENSI LARIK /ARRAY

1. Larik dimensi 1-->larik yang memiliki 1 index
2. Larik Dimensi 2 atau lebih  larik yang memiliki indek > 1. (larik dengan banyak dimensi)

Pada bahasa pemrograman Pascal sangat memungkinkan kiat menggunakan larik dimensi tiga bahkan lebih.. Ini hnya dibatasi oleh kapasitas memori computer (RAM). Secar prinsip, larik lebih dari 2 penanganannya sama dengan larik dimensi 2.

Untuk deklarasi Array 1 dimensi ada pada contoh diatas.

Array dua dimensi mawakili suatu bentuk table atau matrik,yaitu indeks yang pertama menunjukkan baris dan indeks yang kedua dapat menunjukkan kolom baris atau matriks.

Untuk deklarasi Array 2 dimensi:

nama array=array[tipeindeks1,tipeindeks2] of tipe array

contoh :
A : array[1..3,1..2] of byte;

Sallah satu implemantasi array 2 dimensi ini digunakan untuk membuat program MATRIK (Aljabar Linear).

Contoh Matrik dengan ordo 2 x 2

A=1 5
2 4
Matrik A diatas adalah matrik dengan ordo 2x2 sehingga matrik tersebut memiliki elemen : A[1,1] = 1, A[1,2] = 5, A[2,1]= 2 dan A[2,2]=4.

Untuk membuat deklarasi tipe array dari kasus diatas (dalam Bahasa Pascal) :

Var A : array [1..2,1..2] of integer;

Untuk mengisi elemen matrik A diatas :

A[1,1] := 1;
A[1,2] := 5;
A[2,1] := 2;
A[2,2] := 4;

Untuk menampilkan isi elemen matrik A :
Write(A[1,1]);
Write(A[1,2]);
Write(A[2,1]);
Write(A[2,2]);

Selain cara diatas, untuk mengefisienkan penulisan kode program dalam menampilkan isi Matrik A, maka digunakan proses perulangan :

For i:=1 to 2 do
For j:=1 to 2 do
Write(A[i,j]);

DEKLARASI TIPE INDEKS

Index larik menunjukan maksimum banyaknya elemen dari larik itu sendiri.

CONTOH:

#Akan mendeklarasikan array gaji yang bertipe real, mempunyai 10 elemen dengan indexnya menggunakan tipe subjangkauan int, dan mempunyai batas bawah 1 dan batas atas 10.
Var Gaji : array[1…10] of real.

#Deklarasi indeks array bertipe subjangkauan integer

Type Batas = 1…100
Var Nilai : array[1..100] of integer;

# Deklarasi indeks array bertipe terbilang

Type Bulan = (jan…..desb);
Var penghasilan : array[Bulan] of integer

LOOPING (Perulangan)

LOOPING (Perulangan)

Struktur looping digunakan untuk mengulangi langkah-langkah sebelumnya yang telah dikerjakan, kondisi perulangan dilakukan sampai suatu kondisi berhenti terpenuhi.

proses Perulangan digunakan contohnya untuk membuat algortima :
-->“menampilkan bilangan berurutan dari 1 sampai dengan 10”
-->“menampilkan deret : 3, 7, 11, 15 …… N, sampai sejumlah N”
-->“menampilkan bilangan dari 10 sampai dengan 1 “

Bentuk umum proses perulangan:
1.while [ kondisi ] do [……….] end_while
2.repeat until [ kondisi ]
3.for [……….] end_for
for [nilai awal] to [nilai akhir] do
for [nilai akhir] to [nilai awal] do
Nested for (perulangan for bersarang)

@ Perulangan
-->while do: Evaluasi kondisi dilakukan di bagian awal

Statement dan contoh program
while (kondisi) do
(statement)
Contoh:
i := 1;
while (i<10) do
begin
i := i + 2;
writeln(i);
end;
hasil : 3 5 7 9 12

-->Repeat loop:
Evaluasi kondisi dilakukan di bagian akhir.

Statement dan contoh program
repeat
(statement);
...
(statement);
until (kondisi);
Contoh:
i := 1;
repeat
i := i + 2;
write(i);
until i >=10;
Hasil = 3 5 7 9 12

-->for..loop:
Perulangan dengan
increment nilai

Statement dan contoh program
for counter := lower to upper do
(statement)
Atau
for counter := upper downto lower do
(statement)

Contoh:
for i := 1 to 10 do
write(i);

hasil : 1 2 3 4 5 6 7 8 9 10

-->Nested Loop for

Statement dan contoh program
for i := 1 to 10 do
begin
write(i);
for j := 10 downto i do
write(j);
writeln;
end;

DIAGRAM ALUR(FLOWCHART)

#Diagram Alur / Flowchart#

Flowchart
-->Flowchart adalah representasi grafik dari langkah-langkah yang harus diikuti dalam menyelesaikan suatu permasalahan yang terdiri atas sekumpulan simbol, dimana masing-masing simbol merepresentasikan suatu kegiatan tertentu.
-->Flowchart diawali dengan penerimaan input, pemrosesan input, dan diakhiri dengan penampilan output.
-->bagan yang menggambarkan urutan logika dari suatu prosedur pemecahan masalah.
-->suatu diagram yang menggambarkan susunan logika suatu program




Simbol yang digunakan :
@menunjukkan awal dan akhir dari program
@memberikan niai awal pada suatu variabel atau counter
@menunjukkan pengolahan aritmatika dan pemindahan data
@menunjukkan proses input atau output
@untuk mewakili operasi perbandingan logika
@proses yang ditulis sebagai sub program, yaitu prosedur/ fungsi
@penghubung pada halaman yang sama
@penghubung pada halaman yang berbeda

Simbol Flowchart dan fungsinya :


Flowchart terdiri dari 3 struktur :
1.Struktur Squence /sederhana
Diagram yang alurnya mengalir secara berurutan dari ataske bawah atau dengan kata lain tidak adanya percabangan atau pengulangan
Flowchart dengan struktur yang beurutan  alirannya dari atas kebawah secara berurutan.



Contoh : flowchart dari algoritma mencari luas persegi panjang, Luas Lingkaran.

2. Struktur Branching / Percabangan

Diagram yg alurnya terjadi/terdapat alih kontrol berupa percabangan.

Flowchart dengan stuktur percabangan digunakan untuk meyeleksi kondisi dan menentukan pilihan proses selanjutnya.

Bentuk flowchart tersebut seperti :



contoh : flowchart dari algoritma menentukan apakah bilangan yang dimasukan ganjil atau genap

3. Struktur Looping / Perulangan

Flowchart dengan Struktur perulangan digunakan untuk mengulangi langkah-langkah sebelumnya sampai suatu kondisi terpenuhi.

Bentuk flowchart tersebut seperti:


Flowchart Looping
Contoh dari flowchart ini misalnya algoritma untuk menentukan bilangan ganjil dibawah nilai 20. Sehingga proses mencetak bilangan tersebut akan dilakukan sampai kondisi terpenuhi yaitu 20.

{Catatan}:
Ketiga struktur diatas dapat digunakan secara bersamaan pada satu diagram alur.

@ VARIABEL

Digunakan sebagai tempat untuk menyimpan nilai yang sejenis. Terdiri dari nama dari variabel itu sendiri dan nilai yang disimpan.
Contoh pemberian nilai ke variabel :
A = 5 –> artinya Variabel A akan diberi nilai 5
A = B –> artinya Variabel A akan diberi nilai sama dengan nilai variabel B.
A = A + 1 –> Variabel A dirubah isinya dengan variabel A yang dijumlahkan dengan 1.

Jenis variabel terbagi atas:
1. Variabel numerik –> berisi angka numerik / bilangan.
2. Variabel string –> berisi karakter / untaian karakter
Catatan: Flowchart yang dibuat bisa juga merupakan gabungan dari ketiga struktur diatas.
VARIABEL
Variabel, sebagai tempat untuk menyimpan suatu nilai yang sejenis. Terdiri dari nama dari variable itu sendiri dan nilai yang disimpan.

variabel / Peubah-->suatu nilai yg dapat berubah harganya.
Contoh pemberian nilai ke variabel :
A = 5--> variabel A diberi nilai 5.
A = B-->variabel A diberi nilai sama dengan nilai variabel B.variabel B sudah memiliki nilai sebelumnya
A = A +1--> variabel A dirubah isinya dengan variabel A yang dijumlahkan dengan 1. (proses increament)
Jenis variabel terbagi atas :
1.Variabel numerik--> berisi angka numerik /bilangan
2.Variabel String-->berisi karakter.

STRUKTUR BRANCHING /Percabangan
1.Bersyarat
Diagram yg alurnya ada/banyak terjadi alih kontrol berupa percabangan & terjadi apabila kita dihadapkan pada suatu Kondisi dengan dua pilihan BENAR/ SALAH
Struktur :
A. If then
Bentuk umum penulisannya:
IF K THEN
S
ELSE---boleh ditulos atau tidak
K adalah kondisi….S adalah statement…..

B.If then else
IF K THEN S1 ELSE S2
Dengan K adalah suatu kondisi, S1 dan S2 adalah statement….
C.If then else if
D. Case of.
2.Tidak BersyaraT
Struktur : GO TO
Bentuk umum penulisannya adalah
GO TO Label;
CONTOH:
Hitung statement;
Statenment;
Statement;
Statement;
Goto hitung;

Soal Latihan :
1.Algoritma konversi jam ke menit. Dengan masukannya jam dan menit.
2.Algoritma untuk menghitung jumlah yang harus dibayar oleh pembeli dari sejumlah barang yang dibeli, setelah mendapatkan diskon 10% dengan syarat jumlah total pembelian > Rp.1.500.000,-

Jawaban Tugas 1 dan 2 (Pertemuan 1)
1.Algoritma untuk menampilkan bilangan Ganjil dari 1 sampai dengan 10
model 1:

1.Mulai
2.Tetapkan nilai Bilangan = 1 dan Batas_Bilangan = 10
3.Jika sisa pembagian (Bilangan/2) tidak sama dengan 0 (bilangan mod 2 <> 0) maka Cetak “Bilangan”, dan kelangkah 5.
4.Jika (Bilangan = Batas_Bilangan) maka ke-langkah 6
5.Nilai Bilangan ditambah 1 (Bilangan=Bilangan+1) dan kembali kelangkah 3
6.Selesai

2.Menghitung jumlah deret dari 1+2+3+ ….+ N.

1.Mulai
2.Masukan Nilai N
3.Tetapkan Bilangan = 1, Deret = 0
4.Hitung Deret = Deret + Bilangan
5.Jika Bilangan = N maka cetak Deret dan stop
6.Jika tidak, Bilangan ditambah 1 (Bilangan = Bilangan + 1) dan kembali kelangkah 4.

KONSEP TIPE DATA

KONSEP TIPE DATA

Bahasa Pemrograman PASCAL

Pascal , merupakan bahasa pemrograman tingkat tinggi.
Pascal dirancang oleh Prof. Niklaus Writh (Technical University di Zurich, Switzerland) pada tahun 1971
Nama Pascal diambil sebagai penghargaan kepada Blaise Pascal (ahli matematika dan philosopi dari Perancis).

TIPE DATA

1.Tipe data Sederhana
Disebut juga sebagai tipe data skalar, yakni bahwa dalam sebuah perubah hanya dimungkinkan untuk menyimpan sebuah nilai data, yakni bahwa tipe data skalar menunjukkan untuk data tersebut nilainya terbentuk menurut suatu urutan tertentu.

Tipe data sederhana terbagi menjadi:

-->Tipe Ordinal (berurutan)
adalah sebuah subset dari tipe data sederhana. Semua tipe sederhana disebut sebagai data dengan tipe ordinal kecuali tipe real. Dalam bahasa pascal, tipe data skalar menunjukkan bahwa untuk data tersebut nilainya terbentuk menurut urutan tertentu, yaitu nilainya ada dalam urutan.

Yang termasuk tipe data ordinal :
a.Integer  tipe data untuk bilangan bulat (short int,word, byte dll).
b.Boolean  tipe data yang memiliki nilai TRUE dan FALSE
c.Char  tipe data yang berisi 1 buah karakter.
d.Terbilang
e.Sub Jangkauan

-->Real  tipe data untuk menampung bilangan pecahan.

2.Tipe data String
tipe data yang terdiri dari sekumpulan karakter.

3.Tipe data Terstruktur
Array, Record, Set, File, objek

1.Tipe data Sederhana

# TIPE ORDINAL
tipe data yang merupakan subset dari tipe data sederhana, tipe sederhana adalah semua tipe data sederhana kecuali tipe data numerik real.

Macam tipe data ordinal :

a.Integer  tipe data yang digunakan untuk menyimpan bilangan bulat.
Tipe Jangkauan Ukuran
Shortint 128…127 Signed 8 bit
Integer -32768…32767 Signed 16 bit
Longint -2147483648…2147483647 Signed 32 bit
Byte 0…255 UnSigned 8 bit
Word 0…65535 UnSigned 16 bit

b.Boolean  yang hanya dapat bernilai benar atau salah (TRUE or FALSE).
c.Char  tipe data yang digunakan untuk menyimpan data alfanumeris, seperti ‘A’,’Z’,’@’,’$’,’1’,’9’ dsb.
tipe data yang digunakan untuk menyimpan data alfanumeris. Dalam program Pascal, nilai data tipe char ditulis diantara tanda petik, seperti: ‘A’, ‘Z’, ‘8′, ‘*’, dsb. Ada empat fungsi yang telah didefinisikan dapat digunakan untuk memanipulasi data tipe char, yaitu:

1.Fungsi ordinal, ORD(kar), dan kar adalah adalah data tipe char yang nilai ORD(kar) adalah angka urutan dalam kode ASCII yang digunakan untuk melambangkan karakter tersebut. Sebagai contoh ORD(‘A’) adalah 65.
2.Fungsi karakter, CHR(I) dengan I bilangan bulat positif, merupakan kebalikan dari fungsi ORD. Nilai yan diperoleh merupakan karakter ASCII yang dinyatakan dengan urutan ke I, contohnya: CHR(65) adalah ‘A’
3.Fungsi pendahulu, PRED(kar), dengan Kar adalah data tipe char dimana nilai PRED(kar) adalah karakter yang dalam urutannya mendahului kar. Contoh:PRED(‘B’) adalah ‘A’
4.Fungsi penerus, SUCC(kar) dengan nilai SUCC(kar) adalah karakter yang dalam ururtannya sesudah kar. Contoh: SUCC(‘B’) adalah ‘A’
d.Terbilang  digunakan untuk memberi nama pada beberapa nilai tertentu.(tipe data yang didefinisikan sendiri oleh pembuatnya  dikenal juga tipe data enumerated)
contoh :
Type
Hari = (Minggu, Senin, Selasa, Rabu, Kamis, Jumat, Sabtu ) ;
e.Sub Jangkauan  digunakan untuk mendeklarasikan tipe yang berada pada jangkauan tertentu. Pada dasarnya tipe subjangkuan hampir sama dengan tipe bilangan bulat, bedanya kita bebas menentukan jangkauan dari tipe ini, misalnya dari 1 sampai 100.
Contoh :
Type
Nilai = 0..100;

Karakteristik tipe Ordinal adalah
•Merupakan Himpunan Berurutan (ordered set).  nilai dari tipe data ordinal memiliki nilai yang berurutan
•Memiliki Fungsi standard ORD/Ordinalitas (digunakan untuk menghasilkan nilai urutannya.)
•Memiliki Fungsi standard PRED/Predecessor (digunakan untuk menghasilkan nilai urutan sebelumnya.).
•Memiliki Fungsi standard SUCC/Successor(digunakan untuk menghasilkan nilai urutan sesudahnya)

Contoh Program :
uses crt;
type
Colors = (MERAH,BIRU,HIJAU);

begin
clrscr;
Writeln('BIRU mempunyai nilai ordinal ',Ord(BIRU));
Writeln('kode ASCII dari "c" adalah ', Ord('c'), ' desimal');
writeln;

Writeln('predecessor dari 5 adalah ',Pred(5));
Writeln('successor dari 10 adalah ',Succ(10));

if Succ(MERAH) = BIRU then
Writeln('DALAM TIPE Colors ,MERAH merupakan ',
'predecessor dari BIRU.');
readln;
end.
HASIL :
BIRU mempunyai nilai ordinal 1
kode ASCII dari "c" adalah 99 desimal

predecessor dari 5 adalah 4
successor dari 10 adalah 11
DALAM TIPE Colors ,MERAH merupakan predecessor dari BIRU.

Note ! Fungsi (seperti: ord,pred,succ,chr,length,concat dsb )adalah sebuah perintah / instruksi program yang digunakan untuk keperluan pemrograman yang disediakan oleh bahasa pemrograman PASCAL

TIPE REAL
Tipe data yang digunakan untuk menyimpan bilangan real/pecahan.
Tipe data Jangkauan Digit penting Ukuran
Real 2.9 * 10-39 … 1.7 * 1038 11-12 6 byte
Single 1.5 * 10-45 … 3.4 * 1038 7-8 4 byte
Double 5.0 * 10-324 … 1.7 * 10308 15-16 8 byte
Extented 3.4 * 10-39 … 1.1 * 104932 19-20 10 byte
Comp -263+1 … 1063-1 19-20 8byte

1.TIPE STRING
adalah tipe data yang digunakan untuk menyimpan data yang berupa gabungan dari beberapa karakter, seperti: ‘Pascal’, ‘Logika dan Algoritma’, dsb. Besarnya adalah antara 1 sampai dengan 255 karakter.

Bentuk umum penulisan tipe data ini adalah:
Type
Pengenal = String[panjang];
dengan:
Pengenal = nama tipe data
Panjang = bilangan bulat yang menunjukkan jumlah karakter
Sebagai contoh:
Type
Kata = String[50]
Var
Nama1, Nama2 : Kata;
OPERASI STRING
Operasi string terbagi mencadi dua macam, yaitu:
A. Prosedur Standar
Prosedur-prosedur standar pada operasi string ada beberapa macam, yaitu:
# DELETE
→ Berfungsi menghapus sebagian karakter dari sebuah string.
Sintaks: DELETE (S,Index,Count)
Keterangan:
S = String
Index = Posisi awal karakter yang akan dihapus
Count = Banyaknya karakter yang akan dihapus
Contoh:
S = ‘BINA SARANA INFORMATIKA’
DELETE (S,5,7)
hasilnya adalah: ‘BINA INFORMATIKA’
Perlu diperhatikan bahwa spasi juga dihitung sebagai satu karakter.
# INSERT
→ Berfungsi menyisipkan satu atau beberapa karakter kedalam sebuah string.
Sintaks: INSERT (Source, Var S, Index)
Keterangan:
Source = Sumber string untuk disisipkan (string)
Var S = String tujuan yang akan disisipi oleh string Source (string)
Index = posisi mulai (integer)
CONTOH
S = ‘LOGIKA’
T = ‘ALGORITMA’
INSERT (‘ALGO’,S,3)
INSERT(T,S,1)
# STR
Sintaks: Str (N [:lebar [:desimal]],var S : string);
→ Digunakan untuk merubah nilai numerik (ditunjukkan oleh nilai N) menjadi nilai string (ditunjukkan oleh pengenal variabel S). Nilai N dapat berupa bilangan real atau integer. Nilai lebar menunjukkan format panjang dari nilai utuh dan nilai desimal menunjukkan format dari panjang nilai dibelakang koma.
Keterangan :
N = data tipe integer atau real
S = data tipe string.
Contoh:
N = 1234
STR (N,S)
STR(N:8,S)
# VAL
Sintaks: VAL (S:String,N,PosisiSalah)
→ Digunakan untuk mengkonversi suatu nilai string menjadi nilai numerik. Variabel S harus berisi angka atau tanda plus/minus bila tidak berarti salah dan letak kesalahannya ditunjukkan oleh nilai PosisiSalah. Nilai dari PosisiSalah akan nol jika tidak terjadi kesalahan.
Contoh:
S = ‘-123′
VAL (S,N,PosisiSalah)
S = ‘123.A5′
VAL (S,N,PosisiSalah)
B. Fungsi Standar
# COPY
Sintaks :
COPY (s : string, index : integer, count : integer) : string
Digunakan untuk menyalin sejumlah karakter (jumlah karakter yang disalin ditunjukkan oleh nilai count) mulai dari posisi yang ditunjukkan oleh nilai integer index dari nilai string yang ditunjukkan oleh s.
Contoh:
S = ‘INFORMATIKA’
P = COPY (S,1,4)
Q = COPY (S,6,4)
# CONCAT
Sintaks :
CONCAT (s1 [,s2, ... , sn] : string) : string
Digunakan untuk merangkai beberapa nilai string yang ditunjukkan oleh nilai string s1, s2, …. , sn
Contoh:
S = ‘INFORMATIKA’
P = ‘BINA’
Q = ‘SARANA’
V = CONCAT (P,Q,S)
W = CONCAT(P,’_',Q,’_',S)
# POS
Sintaks :
POS (Substr : string, s: string) : byte
Digunakan untuk mencari posisi letak dari suatu nilai string (ditunjukkan oleh Substr) yang ada didalam nilai string yang lain (ditunjukkan oleh s). Nilai yang dihasilkan adalah berupa nilai byte yang menunjukkan letaknya. Bila bernilai nol berarti nilai string yang dicari tidak ada.
Contoh:
S = ‘INFORMATIKA’
P = POS(‘ATI’,S)
Q = POS(‘FORMASI’,S)
# LENGTH
Sintaks :
LENGTH (s : string) : integer
Digunakan untuk menghitung panjang atau jumlah karakter yang ada dinilai string yang ditunjukkan oleh s. Hasil dari fungsi ini adalah nilai numerik integer positif.
Contoh:
S = ‘INFORMATIKA’
Q = ‘BINA’
P = LENGTH(S)
R = LENGTH(CONCAT(S,Q))

2.TIPE TERSTRUKTUR
Pada tipe ini setiap perubah dapat menyimpan lebih dari sebuah nilai data yang masing-masing nilai data disebut komponen. Karakteristik tipe data terstruktur ini adalah ditentukan berdasarkan cara penstrukturan dan tipe masing-masing komponen. Ukuran tipe terstruktur dalam bahasa pemrograman Turbo Pascal maksimum 65520 byte. Pada tipe ini terdapat empat buah tipe data terstruktur, yaitu larik, rekaman, himpunan, dan berkas

a.ARRAY / larik
yaitu tipe data berindeks yang terdiri dari satu atau lebih elemen/komponen yang memiliki tipe data yang sama. (mendeklarasikan kumpulan variabel yang bertipe sama)

Bentuk umum penulisan
type pengenal =array[topt index] of tipe;dengan
pengenal =nam tope data
topt index =tipe data untuk tiap nomor index
tipe =tipe data komponen
penulisan :
Var
Nama_larik : array [batas_bawah..batas_atas] of tipe larik;
Var
a: array[1..8] of longint;
Sama artinya dengan :
a1, a2, a3, a4, a5, a6, a7, a8 : longint;

b.RECORD / Rekaman
Tipe data ini digunakan untuk merepresentasikan kumpulan elemen/komponen yang memiliki satu jenis atau lebih tipe data. Tiap element disebut juga field atau property atau attribute.
Type
TKaryawan = record;
Nama : string;
Alamat : string;
Gaji : longint;
End;

c.SET / Himpunan
kumpulan objek yang mempunyao tope data yang sama dan urutan penilosan nya tidak doperhatikan. Setiap objek dalam suatu set dosebut anggota atau elemen himpunan.
Type
HimpunanKarakter = set of char;

d.FILE
tipe data untuk mengakses file.
Type
Nomorfile = file of integer;

e. Tipe file atau berkas
adalah kumpulan sejumlah komponen yang bertipe sama yang jumlahnya tidak tertentu dan biasanya tersimpan dalam suatu media penyimpanan luar.

f. Tipe pointer
adalah fasilitas yang memungkinkan pemakai menggunakan perubah yang bersifat dinamis

g. Tipe terbilang atau enumerated,
disebut demikian karena semua nilai yang ada disebut dengan cara satu persatu.
Contoh:
Type TOKO = (baru,ramai,sukses,rapi);
TypeHARI =(minggu,senin,selasa,rabu,kamis,jum’at,sabtu,minggu);
TypeBULAN =(jan,feb,mar,apr,mei,jun,jul,ags,sep,okt,nop,des);
typeSEKOLAH=(tk,sd,smp,sma,universitas);

Type Subjangkauan atau subrange merupakan batas nilai suatu variable dari tipe data yang telah didefinisikan.

Bentuk umum penulisannya:
Type pengenal =konstanta1….konstanta2;dengan
Pengenal =nama tipe data yang dideklarasikan
Konstanta1 =batas bawah suatu nilai data
Konstanta2 =batas atas nilai data
Contoh:
Type nilai =0….100;kemarau=apr…okt;
Hari kerja =senin…..sabtu

MENGENAL PEMROGRAMAN PASCAL
Secara ringkas, struktur bahasa PASCAL dapat terdiri dari:
1.Judul Program
2.Blok Program
-deklarasi label
-definisi konstanta
-definisi tipe
-deklarasi variabel
-deklarasi prosedur
-deklarasi fungsi
3.Bagian Pernyataan (statetement program/baris perintah)

PROGRAM nama_program; {judul Program}
USES nama_unit; {deklarasi unit yang dipakai}
VAR { Deklarasi Variabel }
BEGIN dan END-->Blok Program Utama

a.Deklarasi variabel
Untuk membuat variabel/pengenal/indentifier pada pascal yaitu dengan menuliskan nama variabel dan tipe datanya pada bagian deklarasi variabel
Format penulisan: [ nama_identifier : tipe_data; ]
contoh :
Var
I : integer;
nama : string;
Jenis_kelamin : boolean;
Luas,Panjang,Lebar : integer;

b.Operator Aritmatika
contohnya:
Operator Operasi Tipe Operand Tipe Hasil
* Perkalian real, real real
integer, integer integer
real, integer real
DIV Pembagian bulat integer, integer Integer
/ Pembagian real real, real real
integer, integer real
real, integer real
Contoh :
operasi perkalian antara variabel PANJANG dan LEBAR di masukan kedalam variabel LUAS
LUAS := PANJANG * LEBAR;

c.Operator pemberi nilai (assignment operator)
Menggunakan sintax : “ := “ (titik dua sama dengan)
contoh:
LUAS := PANJANG * LEBAR
(hasil perkalian PANJANG * LEBAR dimasukan kedalam variabel LUAS)

d.Pernyataan masukan dan keluaran

READ dan READLN
Digunakan untuk meminta masukan dari papan ketik untuk diolah computer.
READ (nama);memasukan nilai ke variabel

WRITE dan WRITELN
Digunakan untuk menampilkan data kelayar.
WRITE (‘Halo ’);menampilkan string halo
WRITE (nama);menampilkan isi variable nama.

@ Perbedaan WRITE dengan WRITELN yaitu ketika perintah write ini dikerjakan kursor tidak akan ganti baris (tetap diposisi semula) sedangkan ketika perintah writeln ini dikerjakan kursor akan pindah baris.

LOGIKA DAN ALGORITMA

PENGERTIAN DASAR LOGIKA DAN ALGORITMA

Sejarah Algoritma

Asal kata Algoritma berasal dari nama Abu Ja’far Mohammed Ibn Musa al-Khowarizmi, ilmuan Persia yang menulis kitab al jabr w’al-muqabala (rules of restoration and reduction) sekitar tahun 825 M.
Logika berasal dari bahasa Yunani kuno “logos”yang berarti hasil pertimbangan dari akal pikiran yang diutarakan lewat kata dan diterjemahkan lewat bahasa.Selain itu ada juga definisi menurut suatu kamud bahasa Webster Dictionary bahwa algoritma adalah suatu metode khusus yang doginakan untuk menyelesaikan suatu masalah yang nyata.

Definisi Algoritma
1. Langkah-langkah yang dilakukan agar solusi masalah dapat diperoleh
2. Suatu prosedur yang merupakan urutan langkah-langkah yang berintegrasi
3. Suatu metode khusus yang digunakan untuk menyelesaikan suatu masalah yang nyata.(Webster Dictionary)



@ Alur pemikiran dalam menyelesaikan suatu pekerjaan yang dituangkan secara tertulis.
Alur pikiran yang artinya algoritma seseorang dapat berbeda dari algoritma orang lain.
tertulis, yang artinya dapat berupa kalimat, gambar, atau tabel tertentu.

Dalam bidang komputer, algoritma sangat diperlukan dalam menyelesaikan berbagai
masalah pemrograman, terutama dalam komputasi numeris. Tanpa algoritma yang dirancang
baik maka proses pemrograman akan menjadi salah, rusak, atau lambat dan tidak efisien.

Note:
Algoritma Di butuhkan untuk memerintah computer mengambil langkah-langkah tertentu untuk menyelesaikan masalah
Algoritma  Pemrograman  Program
Agar algoritma dapat memerintah (diproses) komputer, maka dirubah menjadi bentuk program (melalui proses pemrograman).

@ Kriteria Pemilihan Algoritma

1. Ada output: mengacu pada definisi algoritma, suatu algoritma haruslah mempunyai output yang harus merupakan solusi dari masalah yang sedang diselesaikan.

2. Efektifitas dan Efisiensi ikatan efektif jika algoritma tersebut menghasilkan suatu solusi yang sesuai dengan masalah yang diselesaikan dalam arti algoritma harus tepat guna.Dikatakan efisiensi jika waktu proses suatu algoritma relatif lebih singkat dan penggunaan memori komputernya lebih sedikit.

3. Jumlah langkahnya berhingga : maksudnya adalah barisan instruksi yang dibuat harus dalam suatu urutan tertentu atau harus berhingga agar masalah yang dihadapi dapat diselesaikan dengan tidak memerlukan waktu relatif lama.

4. Berakhir à (Semi Algoritma) : proses didalam mencari penyelesaian suatu masalah harus berhenti dan berakhir dengan hasil akhir yang merupakan solusinya atau berupa informasi yang tidak diketemukan solusinya. Artinya baik dalam kondisi solusi ada atau tidak ada, proses akan tetap harus berakhir dan berhenti. Istilah lain dalam algoritma dikenal sebagai SEMI ALGORITMA, yaitu suatu prosedur yang hanya akan berhenti jika mempunyai atau menghasilkan solusi, sedangkan jika tidak menghasilkan solusi, maka prosedur tersebut akan berjalan tanpa henti.

5. Terstruktur : yaitu urutan barisan langkah-langkah yang digunakan harus disusun sedemikian rupa agar proses penyelesaian tidak berbelit-belit sedemikian sehingga bagian-bagian proses dapat dibedakan dengan jelas mana bagian input, proses dan output sehingga memudahkan user melakukan pemeriksaan ulang.

Kesimpulannya:
Suatu Algoritma yang terbaik(The Best) : “Suatu algoritma harus menghasilkan output yan tepat guna(efektif) dalam waktu yang relatif singkat & penggunaan memori yang relatif sedikit(efisien) dengan langkah yang berhingga & prosedurnya berakhir baik dalam keadan diperoleh suatu solusi ataupun tidak ada solusinya”

Contoh:

A. Algoritma untuk mengirimkan surat

1. Tulis surat pada secarik kertas surat
2. Ambil sampul surat atau amplop
3. Masukkan surat ke dalam amplop
4. Tutup amplop surat dengan lem perekat
5. Tulis alamat surat yang dituju, jika tidak diingat, lebih dahulu ambil buku alamat & cari alamat yang dituju, lalu tulis alamat tersebut pada amplop surat
6. Tempelkan perangko pada amplop surat
7. Bawa surat ke kantor pos untuk diserahkan pada pegawai pos atau menuju ke bis surat untuk memasukkan surat ke dalam kotak/bis surat.
B. Algoritma untuk menentukan bilangan akar kuadrat dari suatu bilangan bulat positif yang diinput.
1. Baca bilangan bulat positif yang diinput, sebut saja sebagai A.
2. Dinyatakan Nilai B adalah 0
3. Jika Nilai C sama dengan Nilai A, maka Nilai B adalah Akar dari Nilai A, lalu stop
4. Jika tidak, maka nilai B akan bertambah 1
5. Kembali ke langkah pada No.

Penulisan Algoritma :

1.Menggunakan bahasa natural (Bahasa manusia: Indonesia, Inggris)
Kelemahannya masih sering membingungkan (ambigu) / sulit dipahami.
2.Menggunakan Flowchart
Baik karena alur algoritma dapat dilihat secara visual, tetapi repot pembuatannya jika algoritma panjang
3.Menggunakan Pseudocode
Sudah dekat dengan bahasa pemrograman, tetapi sulit dimengerti oleh orang yang belum tahu pemrograman

A.Tahap Analisa Algoritma

1.Bagaimana merencanakan algoritma
Menentukan beberapa model atau desain sebagai penyelesaian dari suatu masalah untuk mendapat sebuah solusi yan mungkin. Dengan demikian, akan banyak terdapat variasi desain atau model yang dapat diambil yang terbaik.

Contoh : Permasalahan menghitung luas lingkaran,dengan data yang diketahui adalah diameter lingkaran.
Rumus : ∏ . r2 dengan Phi = 3.14 atau 22/7.

2.Bagaimana menyatakan suatu algoritma (menulis algoritma)
Menentukan model suatu algoritma yang digunakan sehingga dapat membuat barisan langkah secara berurutan guna mendapatkan solusi penyelesaian masalah. Menentukan model tersebut agar dapat digunakan dengan cara:

@ Dengan psudocode
suatu cara penulisan algoritma agar ide dan logika dari algoritma dapat disampaikan/diekspresikan menggunakan gaya bahasa pemrograman pemrograman tertentu.

@ Dengan flowchart / diagram alir
Program Flowchart
Yaitu bagan yang menggambarkan urutan logika dari suatu prosedur pemecahan masalah.



Simbol yang digunakan :
: menunjukkan awal dan akhir dari program
: memberikan niai awal pada suatu variabel atau counter
: menunjukkan pengolahan aritmatika dan pemindahan data
: menunjukkan proses input atau output
: untuk mewakili operasi perbandingan logika
: proses yang ditulis sebagai sub program, yaitu prosedur/ fungsi
: penghubung pada halaman yang sama
: penghubung pada halaman yang berbeda

Contoh :


- Dengan Statement Program/Penggalan Program

Contoh:
Read Alas
Read Tinggi
Luas=(Alas*Tinggi)/2
Write(luas)

3. Bagaimana validitas suatu algoritma
Yakni jika penyelesaian memenuhi solusi yang sebenarnya, artinya solusi yang didapat merupakan penyelesaian suatu masalah dan bukannya membuat masalah baru.

4. Bagaimana menganalisa suatu algoritma
Caranya melihat running time atau waktu tempuh yang digunakan dalam menyelesaikan masalah serta jumlah memori yang digunakan dalam penyelesaian masalah tersebut.

5. Bagaimana menguji program dari suatu algoritma
Yaitu dengan cara menyajikannya dalam salah satu bahasa pemrogramana, misalnya BASIC, PASCAL, FORTRAN, dBase, atau yang lainnya.

Studi Kasus :
Buatlah Algoritma untuk memilih bilangan terbesar dari 3 buah bilangan ?

Dengan Bahasa Natural
1.Ambil bilangan pertama dan set maks sama dengan bilangan pertama
2.Ambil bilangan kedua dan bandingkan dengan maks
3.Apa bila bilangan kedua lebih besar dari maks, set maks sama dengan bilangan kedua
4.Ambil blangan ketiga dan bandingan dengan maks
5.Apabila bilangan ketiga lebih besar dari maks, set maks sama dengan bilangan ketiga
6.Variabel maks berisi bilangan terbesar. Tampilkan hasilnya

Dengan Flowchart

Dengan Pseudo-code

Maks ←bilangan pertama
if (maks < bilangan kedua)
maks←bilangan kedua
if (maks < bilangan ketiga)
maks ← bilangan ketiga

B.Tahap Proses Uji Algoritma

Fase Debugging, yaitu fase dari suatu proses program eksekusi yang akan melakukan koreksi terhadap kesalahan program. Yang dimaksud disni adalah error atau salah dalam penulisan program baik logika maupun sintaksnya.

Fase Profilling, yaitu fase yang akan bekerja jika program tersebut sudah benar atau telah melalui proses pada fase debugging. Fase ini bekerja untuk melihat dan mengukur waktu tempuh atau running time yang diperlukan serta jumlah memori/storage yang digunakan dalam menyelesaikan suatu algoritma.

C.Analisis Algoritma

(Untuk melihat faktor efisiensi & efektifitas dari algoritma tersebut), dapat dilakukan terhadap suatu algoritma dengan melihat pada:

Waktu tempuh(Running Time) dari suatu algoritma: adalah satuan waktu yang ditempuh atau diperlukan oleh suatu algoritma dalam menyelesaikan suatu masalah.

Hal-hal yang dapat mempengaruhi daripada waktu tempuh adalah:

Banyaknya langkah: Makin banyak langkah atau instruksi yang digunakan dalam menyelesaikan masalah, maka makin lama waktu tempuh yang dibutuhkan dalam proses tersebut

Besar dan jenis input data: Besar dan jenis input data pada suatu algoritma akan sangat berpengaruh pada proses perhitugan yang terjadi. Jika jenis data adalah tingkat ketelitian tunggal(Single precision), maka waktu tempuh akan menjadi relatif lebih cepat dibandingkan dengan tingkat ketelitian ganda(double precesion),atau triple, quadruple precision.

Jenis operasi: Waktu tempuh juga dipengaruhi oleh jenis operasi yang digunakan. Jenis operasi tersebut meliputi operasi matematika, nalar atau logika, atau yang lainnya. Sebagai contoh, operasi perkalian atau pembagian akan memakan waktu lebih lama dibandingkan operasi penjumlahan atau pengurangan.

Komputer dan kompilator: hal terakhir yang mempengaruhi waktu tempuh suatu proses algoritma adalah komputer dan kompilatornya, walaupun sebenarnya faktor ini diluar tahap rancangan atau tahap pembuatan algoritma yang efisien. Algoritma dibuat untuk mencapai waktu tempuh yang seefektif dan seefisien mungkin, tetapi kesemuanya itu akan sangat bergantung pada kemampuan komputer yang tentunya harus sesuai dengan jumlah program atau langkah yang diperlukan oleh algoritma, begitu juga dengan kompilator tersebut, misalnya PC XT 8086 akan kalah cepat dibandingkan 8088 atau dengan AT 80286 atau 80386 atau 80486 dan seterusnya.

Jumlah Memori Yang digunakan: banyaknya langkah yang digunakan dan jenis variabel data yang dipakai dalam suatu algoritma akan sangat mempengaruhi penggunaan memori. Dalm hal ini, diharapkan dapat memperkirakan seberapa banyak kebutuhan memori yang diperlukan selama proses berlangsung hingga proses selesai dikerjakan. Dengan demikian, dapat disiapkan storage yang memadai agar proses suatu algoritma berjalan tanpa ada hambatan atau kekurangan memori.

D.Sifat-sifat Algoritma

Aspek Penting Algoritma :

Banyaknya langkah instruksi harus berhingga: pelaksanaan sebuah algoritma yang terprogram haruslah dapat diakhiri atau diselesaikan melalui sejumlah langkah operasional yang berhingga. Jika tidak demikian, kita tidak akan dapat mengharapkan bahwa pelaksaan algoritma tersebut dapat menghasilkan suatu solusi yang baik.

Langkah atau instruksi harus jelas: artinya bahwa penulisa setiap langkah yang terdapat didalam sebuah algoritma harus memiliki arti yang khusus atau spesifik sehingga dapat dibedakan antara penulisan langkah untuk komputer(program/pemrograman) dengan penulisan langkah bagi manusia(pesudocode). Manusia akan lebih mudah memahami algoritma yang terdiri atas simbol-simbol(Contoh: pembuatan algoritma dengan diagram alur/flowchart) sedangkan komputer hanya membutuhkan sebuah penulisan algoritma dengan kode-kode yang dituangkan dalam bahasa yang dimengerti oleh komputer itu sendiri(bahasa pemrograman).

Proses harus jelas dan mempunyai batasan: rangkaian suatu proses yang berisi langkah-langkah instruksi dari suatu algoritma yang akan dilaksanakn harus ditetapkan dengna jelas, baik dan pasti sebab sebuah algoritma harus memiliki instruksi dasar tertentu dimana setiap instruksi harus memiliki unsur pelaksana yang berfungsi sebagai pemroses data yang akan dimasukkan dalam sebuah komputer. Dengan demikian, sebuah algoritma harus ditulis dengan jelas tentang batasa-batasan proses yang akan dilaksanakan oleh komputer.

Input dan Output harus mempunyai batasan: input merupakan data yang dimasukkan ke dalam algoritma yang untuk kemudian akan dilaksanakan oleh komputer. Dengan begitu, input yang diberikan harus sesuai dengan jenis dari bahasa pemrograman yang digunakan, sedangkan ouput merupakan hasil yang diperoleh dari pekerjaan yang dilaksanakan komputer untuk kepentingan user yang merupakan pihak diluar komputer. Algoritma harus menghasilkan output karena merupaka solusi yang diharapkan dari suatu masalah yang timbul.

Efektifitas: instruksi yang diberikan pada komputer agar hanya menjalankan atau melaksanakan proses yang mampu dilaksanakannya. Yang dimaksud mampu adalah bahwa suatu algoritma atau instruksi-instruksi dalam sebuah program hanya akan dapat dilaksanakan jika informasi yang diberikan oleh instruksi-instruksi tersebut lengkap, benar dan jelas.

Adanya batasan ruang lingkup, sebuah algoritma yang baik adalah hanya ditujukan bagi suatu masalah tertentu saja. Susunana input harus ditentukan lebih dulu sebab susunan tersebut enentukan sifat umum dari algoritma yang bersangkutan.

Langkah-langkah yang membentuk suatu algoritma dapat dibagi menjadi 3 kelompok proses:
1.Sequence Process--> instruksi dikerjakan secara berurutan satu persatu dimulai dari langkah pertama sampai terakhir.
2.Selection Process-->instruksi pemilihan proses (percabangan), sehingga apabila memenuhi persyaratan tertentu maka instruksi akan dikerjakan.
Contoh :
jika pembayaran tunai diberi diskon 10%
Jika dilakukan secara redit maka diskon 0 %.
(dalam pernyataan diatas, hanya boleh melakukan 1 instruksi dari 2 alternatif instruksi.
3.Iteration Process-->suatu instruksi yang dikerjakan berulang-ulang selama beberapa kali selama masih memenuhi suatu kondisi.

KONSEP ALGORITMA

@ Algoritma Variabel Pe-ubah
Adalah variabel yang nilainya BUKAN konstanta (selalu berubah – sesuai dengan kondisi Variabel terKINI)

Sintaks : P = Q
Algoritma : P <- Q
Arti : Bahwa Nilai P diberi harga Nilai Q
Nilai P akan SAMA DENGAN nilai Q dan Nilai Q TETAP
Contoh Soal 1:
Diketahui P=0, Q=5 dan R=10. Diberikan algoritma P=Q, Q=R, maka nilai P, Q, R sekarang ?
Jawab
Diketahui P = 0, Q = 5, R = 10
P = Q –> Pada saat ini nilai dari Variabel P akan diberi nilai dari Variabel Q (P = 5)
Q = R –> Pada saat ini nilai dari Variabel Q akan diberi nilai dari Variabel R (Q = 10)
Maka nilai P, Q dan R sekarang adalah P = 5, Q = 10 dan R = 10

Contoh Soal 2:
Diketahui Algoritma P=10, P=P+1 dan Q = P. Berapakah nilai P dan Q ?

Jawab
Algoritma:
P = 10 –> Pada saat ini nilai dari Variabel P akan diberi nilai 10
P = P + 1 –> Pada saat ini nilai dari Variabel P yang baru adalah nilai dari variabel P yang lama ditambah 1 (10 + 1 = 11)
Q = P –> Pada saat ini nilai dari variabel Q diberi nilai dari variabel P yang baru (Q =11)

Contoh Soal 3:
Diketahui 3 varibael peubah P, Q dan R. Agar isi Q ditaruh di P, isi R ditaruh di Q dan isi P ditaruh di R,maka Algoritma yang dapat ditulis adalah ..?

Jawab
Agar isi Q ditaruh di P, algoritma yang dapat ditulis adalah (P <- Q atau P=Q)
Agar isi R ditaruh di Q, algoritma yang dapat ditulis adalah (Q <- R atau Q=R)
Agar isi P ditaruh di R, algoritma yang dapat ditulis adalah (R <- P atau R=P)

@ Algoritma Variabel Pertukaran
Berfungsi mempertukarkan masing-masing isi Variabel sedemikian sehingga Nilai dari tiap Variabel akan berubah/bertukar.

Contoh Soal:
Diketahui 2 peubah K = 10 dan L = 20. Buat Algoritma untuk mempertukarkan isi K dan L .. ?

Jawab
Untuk menyelesaikan algoritma pertukaran, dibutuhkan satu buah peubah (variabel) tambahan untuk menyimpan nilai dari salah satu peubah. Algoritma pertukaran untuk masalah diatas adalah (dimisalkan variabel tambahan adalah T).
T = K –> Pada algoritma ini nilai dari variabel T (variabel tambahan) akan diisi dengan nilai dari variabel K (T = 10)
K = L –> Pada algoritma ini nilai dari Variabel K akan diisi dengan variabel L (K = 20)
L = T –> Pada algoritma ini nilai dari Variabel L akan diisi dengan variabel T (L = 10)
Setelah algoritma ini dijalankan dapat dilihat bahwa algorita diatas telah mempertukarkan nilai dari variabel-variabel tersebut. Sebelumnya variabel K = 10 dan L = 20, menjadi variabel K = 20 dan L = 10

KONSEP ALGORITMA

Contoh Soal :
3.Diketahui 3 variabel peubah P,Q dan R. Agar isi Q ditaruh di P, isi R ditaruh di Q dan isi P ditaruh di R, maka Algoritma yang dapat ditulis adalah : ……….

Buatlah Algortimanya?
Setelah selesai cek lah algoritma nya, misalkan dengan P=10, Q=20, R=30.
Sehingga hasil akhir menjadi : P=20, Q=30 dan R=10.

4.Diketahui 2 peubah K = 10 dan L = 20. Buat Algoritma untuk mempertukarkan isi K dan L. :

@ Studi Kasus:
Algoritma TUKAR ISI BEJANA
Diberikan dua buah bejana A dan B,
bejana A berisi larutan berwarna merah,
bejana B berisi larutan berwarna biru.
Pertukarkan isi kedua bejana itu sedemikian sehingga bejana A berisi larutan
berwarna biru dan bejana B berisi larutan berwarna merah.

algoritma :
Tuangkan larutan dari bejana A ke dalam bejana B
Tuangkan larutan dari bejana B ke dalam bejana A.

-->Apakah cara di atas BENAR ?
Apakah hasil yang didapat sesuai dengan penyelesaian masalah?
Apa hasil yang didapat ?
Algoritma TUKAR ISI BEJANA di atas tidak menghasilkan pertukaran yang benar.
Langkah di atas tidak logis, hasil pertukaran yang terjadi adalah percampuran kedua larutan tersebut.

Penyelesaian :
Untuk mempertukarkan isi duah bejana, diperlukan sebuah bejana tambahan sebagai tempat penampungan sementara, misalnya bejana C.

Algoritma yang menghasikan pertukaran yang benar sebagai berikut:
Tuangkan larutan dari bejana A ke dalam bejana C.
Tuangkan larutan dari bejana B ke dalam bejana A.
Tuangkan larutan dari bejana C ke dalam bejana B.