Algoritma dan Pemrograman 1 PENGERTIAN ALGORITMA Algoritma adalah urutan langkah-langkah untuk memecahkan suatu masalah Algoritma adalah deretan langkah-langkah komputasi yang mentransformasikan data masukkan menjadi keluaran Algoritma adalah deretan instruksi yang jelas dalam memecahkan masalah, yaitu untuk memperoleh keluaran yang diinginkan dari suatu masukkan dalam jumlah waktu yang terbatas. Algoritma adalah prosedur komputasi yang terdefinisi dengan baik yang menggunakan beberapa nilai sebagai masukkan dan menghasilkan beberapa nilai yang disebut keluaran. Jadi algoritma adalah deretan langkah komputasi yang mentransformasikan masukkan menjadi keluaran. Algoritma yang ditulis dalam bahasa komputer dinamakan program. Bahasa komputer yang digunakan untuk menulis program dinamakan bahasa pemrograman. Orang yang membuat program komputer disebut pemrogram, dan kegiatan merancang dan menulis program disebut pemrograman, serta ada aktivitas menulis kode program dinamakan coding. Pada pemrograman ditekankan pada pemecahan masalah, rancangan pemecahan masalah berisi urutan langkah- langkah pencapaian solusi ditulis dalam notasi diskriptif (notasi algoritmik) Notasi Algoritmik terdiri 3 (tiga), yaitu: I. Menyatakan langkah-langkah algoritma dengan untaian kalimat diskriptif Contoh Program Euclidean Diberikan dua bilangan tak-negatif m dan n (m ≥ n). Algoritma Euclidean mencari pembagi bersama terbesar, gcd, dari dua bilangan tersebut, yaitu bilangan terbesar yang habis membagi m dan n. ALGORITMA 1. Jika n = 0 maka 2. Bagilah m dan n dan misalkan r adalah sisanya. 3. Ganti nilai m dan nilai n dengan nilai r, lalu ulangi kembali langkah 1
40
Embed
ALGORITMA - pelajarandotcom.files.wordpress.com€¦ · SOAL-SOAL 1. Tuliskan beberapa contoh algoritma dalam kehidupan sehari-hari. Dan tuliskan juga beberapa contoh langkah dalam
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Algoritma dan Pemrograman 1
PENGERTIAN ALGORITMA
Algoritma adalah urutan langkah-langkah untuk memecahkan suatu masalah
Algoritma adalah deretan langkah-langkah komputasi yang mentransformasikan data masukkan
menjadi keluaran
Algoritma adalah deretan instruksi yang jelas dalam memecahkan masalah, yaitu untuk
memperoleh keluaran yang diinginkan dari suatu masukkan dalam jumlah waktu yang terbatas.
Algoritma adalah prosedur komputasi yang terdefinisi dengan baik yang menggunakan beberapa
nilai sebagai masukkan dan menghasilkan beberapa nilai yang disebut keluaran. Jadi algoritma
adalah deretan langkah komputasi yang mentransformasikan masukkan menjadi keluaran.
Algoritma yang ditulis dalam bahasa komputer dinamakan program. Bahasa komputer yang
digunakan untuk menulis program dinamakan bahasa pemrograman. Orang yang membuat
program komputer disebut pemrogram, dan kegiatan merancang dan menulis program disebut
pemrograman, serta ada aktivitas menulis kode program dinamakan coding. Pada pemrograman
ditekankan pada pemecahan masalah, rancangan pemecahan masalah berisi urutan langkah-
langkah pencapaian solusi ditulis dalam notasi diskriptif (notasi algoritmik)
Notasi Algoritmik terdiri 3 (tiga), yaitu:
I. Menyatakan langkah-langkah algoritma dengan untaian kalimat diskriptif
Contoh
Program Euclidean
Diberikan dua bilangan tak-negatif m dan n (m ≥ n).
Algoritma Euclidean mencari pembagi bersama terbesar, gcd, dari dua
bilangan tersebut, yaitu bilangan terbesar yang habis membagi m dan n.
ALGORITMA
1. Jika n = 0 maka
2. Bagilah m dan n dan misalkan r adalah sisanya.
3. Ganti nilai m dan nilai n dengan nilai r, lalu ulangi kembali langkah 1
Algoritma dan Pemrograman 2
II. Menggunakan bagan alir (flowchart)
III. Menggunakan pseudo-code.
Contoh
Program Euclidean
{Diberikan dua bilangan tak-negatif m dan n (m ≥ n).
Algoritma Euclidean mencari pembagi bersama terbesar, gcd, dari dua
bilangan, yaitu bilangan terbesar yang habis membagi m dan n}
DEKLARASI
m, n : integer {bilangan bulat yang dicari pbt nya}
r : integer { sisa hasil bagi }
ALGORITMA:
Read(m,n)
While m ≠ 0 do
r m MOD n
m n
n r
endwhile
write(m)
tidak
Ya
Mulai
Baca m dan n
n=0
r=m MOD n
m=n
n=r
Tulis
m
Selesai
Algoritma dan Pemrograman 3
NO. PERNYATAAN ALGORITMIK BAHASA PASCAL
1 Penugasan :=
2 Pembacaan read read
readln
3 Penulisan write write
writeln
Contoh
Algoritmik: DEKLARASI
Type Titik : record <x:real, y:real>
p: Titik
a,b : integer
NamaArsip, h : string
nilai : real
c : char
ALGORITMA
nilai 1200.0
read(P.x, P.y)
read(NamaArsip)
h Nama Arsip
read(a, b)
read(C)
write(„Nama arsip: „,NamaArsip)
write(„Koordinat titik adalah: „,P.x, „,‟, P.y)
write(b, nilai)
write(„Karakter yang dibaca adalah: „, C)
Pascal: (* DEKLARASI *)
Type
Titik = record
x:real;
y:real;
end;
var
p : Titik
a,b : integer;
NamaArsip, h : string[12];
nilai : real;
c : char;
Algoritma dan Pemrograman 4
(* ALGORITMA *)
Nilai:=1200.0;
readln(P.x, P.y);
readln(NamaArsip);
h := Nama Arsip;
readln(a, b);
readln(C);
writeln(„Nama arsip: „,NamaArsip);
writeln(„Koordinat titik adalah: „,P.x, „,‟, P.y);
writeln(b, nilai);
write(„Karakter yang dibaca adalah: „, C);
SOAL-SOAL
1. Tuliskan beberapa contoh algoritma dalam kehidupan sehari-hari. Dan tuliskan juga beberapa
contoh langkah dalam algoritma.
2. Tiga pasang suami isteri yang sedang menempuh perjalanan sampai ke sebuah sungai. Di situ
mereka menemukan sebuah perahu kecil yang hanya bisa menampung tidak lebih dari dua
orang setiap kali menyeberang. Penyeberangan sungai dirumitkan oleh keadaan bahwa para
suami sangat pencemburu dan tidak amu meninggalkan isteri-isteri mereka jika ada lelaki
lain. Tulis algoritma untuk menunjukkan bagaimana penyebrangan itu bisa dilakukan.
3. Misalkan terdapat dua buah ember, masing-masing mempunyai volum 5 liter dan 3 liter.
Tuliskan algoritma untuk memperoleh air sebanyak 1 liter dengan hanya menggunakan kedua
ember tersebut.
4. Di manakah letak kesalahan algoritma menjalankan sepeda motor berikut:
ALGORITMA menjalankan sepeda motor:
1. Hidupkan starter
2. Masukkan kunci kontak
3. Tekan gigi 1
4. Perbesar gas
5. jalan
5. Definisikan sebuah struktur untuk menyatakan data nasabah di sebuah bank. Data nasabah
terdiri atas field: nomor account, nama nasabah, alamat nasabah, kota nasabah, nomor telpon
nasabah, untuk setiap field, didefinisiakn tipe data yang cocok
6. Definisikan sebuah tipe struktur untuk menyatakan penerbangan di sebuah bandara. Data
penerbangan terdiri atas: nomor penerbangan (missal (GA306), bandara (kota) asal, bandara
Algoritma dan Pemrograman 5
tujuan, tanggal keberangkaran, jam keberangkatan (departure time), jam datang (arrival time).
Untuk setiap field, definisikan tipe data yang cocok.
7. Tuliskan rumus berikut dalam notasi algoritmik:
(a) V = 3
34 r
(b) X1 = a2
ac4bb 2
(c) X12 = a2
ac4bb 2
(d) M = ab
cd
bcad
1
8. Apa perbedaan n n + 2 dari sudut pandang algoritma dan n = n+2 dari sudut pandang
matematika
9. Sebuah mobil melaju dengan kecepatan tetap v km/jam. Jika mobil tersebut berjalan selama t
jam, tuliskan algoritma untuk menghitung jarak yang ditempuh mobil (dalam km). Algoritma
tersebut membaca masukkan berupa v dan t, menghitung jarak dengan rumus s = vt, lalu
mencetak jarak tersebut
10. Translasikan algoritma pada nomor 5 ke dalam program dalam bahasa Pascal, lalu tes
program tersebut dengan bermacam-macam nilai v dan t.
Algoritma dan Pemrograman 6
NOTASI ALGORITMA Pseudo-code
Notasi pseudo-code mempunyai korespondensi dengan notasi bahasa pemrograman sehingga
proses penerjemahan dari pseudo-code ke program menjadi lebih mudah. Tidak ada aturan baku
pada pseudo-code, sembarang versi pseudo-code dapat diterima asalkan bisa dipahami, tidak
seperti pada bahasa pemrograman.
Pernyataan 1 Pernyataan 2 Tulis nilai X dan Y Pernyataan isikan nilai X ke dalam min
write(X,Y) Pseudo-code-nya min X
write(X,Y) Algoritmik min X
write(X,Y); Bahasa Pascal min := X;
Printf(“%d %d”, X,Y); Bahasa C min = X,
Write X,Y Bahasa Basic min = X
Write(*,*) X,Y Bahasa Fortran min = X
Struktur Teks Algoritma
Algoritma Pertama adalah untuk mencetak tulisan Salam
PROGRAM Salam
{Program untuk mencetak “Salam”
Masukkan : -
Keluaran : string “Salam” }
DEKLARASI
{tidak ada}
ALGORITMA
Write(“Salam”)
Algoritma Kedua program untuk mencetak tabel konversi suhu dalam derajat Fahrenheit (F) dan
suhu ekuivalennya dalam derajat Celcius (C) dengan menggunakan rumus: C = 5/9 (F–32)
PROGRAM Fahrenheit_Celcius
{Program untuk mencetak tabel Fahrenheit-Celcius dari x sampai y dengan
kenaikan sebesar step
Masukkan: suhu awal, suhu akhir, step
Keluaran: tabel konversi suhu dalam C dan F }
Algoritma dan Pemrograman 7
DEKLARASI
F, C : real
X, y, step : integer
ALGORITMA
read(x, y, step)
F x
while F ≤ y do
C = 5/9 * (F – 32)
write(F, C)
F F + step
endwhile
Dengan memperhatikan dua algoritma di atas, terlihat bahwa teks algoritma terdiri dari tiga
bagian (blok) yaitu:
1. Bagian judul (header)
2. Bagian deklarasi (declaration)
3. Bagian algoritma
Notasi Algoritma secara umum
PROGRAM Nama Program
{ penjelasan tentang algoritma, uraian singkat masalah, masukkan dan
keluaran}
DEKLARASI
{ semua nama yang digunakan, meliputi nama tipe, nama konstanta, nama
variabel, nama prosedur, dan nama fungsi diumumkan di sini}
ALGORITMA
{ berisi langkah-langkah penyelesian masalah}
Bahasa Pascal
Algoritma dan Pemrograman 8
Program Nama_Program
{ penjelasan tentang program, uraian singkat masalah, masukkan dan
keluaran}
(* Deklarasi *)
[const]
{semua nama tetapan dan harga tetapan didefinisikan di sini}
[tipe]
{semua nama tipe bentukan didefinisikan di sini}
[var]
{semua nama variabel global bentukan didefinisikan di sini}
(* Algoritma *)
begin
{semua instruksi program dituliskan di sini}
end.
Translasi notasi algoritma ke dalam bahasa Pascal untuk program mencetak kata “salam”
dan konversi suhu dari Fahrenheit dan Celcius.
1. Program Mencetak Salam
PROGRAM Salam;
{Program untuk mencetak “Salam”, Masukkan program ini tidak ada.
Keluarannya adalah tulisan „Salam‟ di layar }
(* DEKLARASI *)
{tidak ada}
begin
(* ALGORITMA *)
Write(“Salam”);
end.
2. Program Konversi suhu dari Fahrenheit ke Celcius
PROGRAM Fahrenheit_Celcius;
{Program untuk mencetak tabel Fahrenheit-Celcius dari x sampai y
dengan kenaikan sebesar step. Masukkan: suhu awal, suhu akhir,
step dan Keluaran: tabel konversi suhu dalam C dan F }
(* DEKLARASI *)
F, C : real;
Algoritma dan Pemrograman 9
x, y, step : integer;
Begin
(* ALGORITMA *)
read(x);
read(y);
read(step);
F := x;
while F <= y do
begin
C := 5/9 * (F – 32);
writeln(F, „ „, c);
F := F + step;
end;
end.
Algoritma dan Pemrograman 10
RUNTUNAN
Runtunan adalah struktur algoritma yang paling dasar yang berisi rangkaian instruksi yang
diproses secara skuensial, satu persatu, mulai dari instruksi yang pertama sampai instruksi
yang terakhir.
Algoritma runtunan (squence) satu atau lebih instruksi, yang berarti bahwa
1. tiap instruksi dierjakan satu persatu
2. tiap instruksi dilaksanakan tepat sekali, tidak ada instruksi yang diulang
3. urutan instruksi yang dilaksanakan pemroses sama dengan urutan instruksi
sebagaimana yang tertulis dalam teks algoritmanya
4. akhir dari instruksi terakhir merupakan akhir algoritma
Contoh
1. Mencetak pesan “salam”
a. Algoritma untuk mencetak tulisan “Salam”
PROGRAM Salam
{Program untuk mencetak “Salam”}
DEKLARASI
{tidak ada}
ALGORITMA
Write(‟Salam‟)
b. String Salam disimpan dalam suatu variabel tipe string kemudian baru dicetak
PROGRAM Salam
{Program untuk mencetak “Salam”}
DEKLARASI
Pesan : string
ALGORITMA:
Pesan „Salam‟
Write(pesan)
Algoritma dan Pemrograman 11
c. String Salam disimpan sebagai konstanta kemudian baru dicetak
PROGRAM Salam
{Program untuk mencetak „Salam‟}
DEKLARASI
Const Pesan = „Salam‟
ALGORITMA:
Write(pesan)
2. Algoritma membaca nama seseorang dari papan ketik, lalu menampilkan ucapan
“salam” diikuti nama orang tersebut.
PROGRAM Salam
{ mencetak Salam diikuti nama orang. Nama orang dibaca dahulu }
DEKLARASI
nama : string
ALGORITMA
Read(nama)
Write(„Salam‟, nama)
3. Algoritma membaca dua buah nilai untuk variabel A dan B, lalu mempertukarkan
nilai kedua variabel tersebut.
PROGRAM Pertukaran
{mempertukarkan nilai A dan B. Nilai A dan B dibaca dahulu}
DEKLARASI
A, B, C : integer
ALGORITMA
{A dan B sudah terdefinisi dengan nilai}
{perkukarkan nilai A dan B}
C A {simpan nilai A dipenampung sementara C}
A B {sekarang A dapat diisi nilai B}
B C {isi B dengan nilai A semula yang tadi disimpan di C}
{tulis nilai A dan B setelah pertukaran}
Write(A)
Write(B)
Algoritma dan Pemrograman 12
Pascal:
PROGRAM Pertukaran;
{mempertukarkan nilai A dan B. Nilai A dan B dibaca terlebih
dahulu}
(* DEKLARASI *)
A, B, C : integer;
(* ALGORITMA *)
begin
{baca nilai A dan B}
Write(„A = ?‟); readln(A);
Write(„B = ?‟); readln(B);
{perkukarkan nilai A dan B}
C := A {simpan nilai A dipenampung sementara C}
A := B {sekarang A dapat diisi nilai B}
B := C {isi B dengan nilai A semula yang tadi disimpan di C}
{tulis nilai A dan B setelah pertukaran}
Writeln(„A = ?‟,A);
Writeln(„B = ?‟,B);
end.
4. Algoritma membaca panjang dan lebar kemudian menghitung luas persegi panjang =
panjang kali lebar.
PROGRAM Luas_persegi_panjang
DEKLARASI
Panjang : real
Lebar : real
Luas : real
ALGORITMA
read(panjang, lebar)
luas panjang * lebar
write(luas)
Algoritma dan Pemrograman 13
Pascal:
PROGRAM Luas_persegi_panjang;
(* DEKLARASI *)
Panjang : real;
Lebar : real;
Luas : real;
(* ALGORITMA *)
begin
write(„berapa panjang persegi ? = „); readln(panjang);
3. Tulis algoritma membaca 3 buah bilangan bulat, lalu mengurutkan 3 buah bilangan tersebut dari
nilai yang kecil ke nilai yang besar.
4. Tulislah algoritma yang membaca panjang (integer) tiga buah sisi segitiga a, b, dan c dalam hal ini a ≤
b ≤ c. Tentukan apakah ketiga bilangan tersebut membetuk segitiga siku-siku, segitiga lancip, atau
segitiga tumpul (gunakan teorema Phytagoras)
5. Tulislah algoritma membaca bilangan bulat positif dalam rentang 1 – 10, dan konversikan ke angka
Romawi.
Algoritma dan Pemrograman 27
PENGULANGAN
Pengulangan yang akan dipelajari hanya 3 macam notasi konstruksi, yaitu: 1. Pernyataan FOR,
2. Pernyataan WHILE,
3. Pernyataan REPEAT.
Pernyataan FOR adalah konstruksi pengulangan tanpa kondisi, artinya instruksi-instruksi di
dalam badan pengulangan diulangi sejumlah kali yang dispesifikasikan oleh pemrogram. Pada
sebagian besar masalah kondisi pengulangan tidak diketahui sebelum eksekusi, yang dapat
ditentukan hanya kondisi berhenti pengulangan, ini disebut pengulangan dengan kondisi. Jenis
ini merupakan pengulangan menggunakan pernyataan WHILE dan REPEAT.
a. Pernyataan FOR Bentuk umum pernyataan FOR ada dua macam: menaik (ascending) atau menurun (descending).
FOR menaik
Bentuk umum untuk For menaik
for pencacah nilai_awal to nilai_akhir do
aksi
endfor
Contoh Algoritma
PROGRAM Cetak_banyak_Helloword
{mencetak kata “Hello word” sebanyak 10 kali}
DEKLARASI
i : integer {pencacah pengulangan }
ALGORITMA
for i 1 to 10 do { ulangi sebanyak 10 kali }
writeln(„Hello word‟)
endfor
Program Pascal: PROGRAM Cetak_banyak_Helloword;
{mencetak kata "Hello word" sebanyak 10 kali}
uses wincrt;
(* DEKLARASI *)
var
i : integer; {pencacah pengulangan }
(* ALGORITMA *)
Begin
Algoritma dan Pemrograman 28
clrscr;
for i := 1 to 10 do { ulangi sebanyak 10 kali }
writeln('Hello word');
end.
Contoh lain
PROGRAM PenjumlahanDeret
{ mejumlahkan deret 1 + 2 + ... + N, dengan N bilangan bulat positif }
DEKLARASI
N: integer
i: integer
jumlah : integer
ALGORITMA
read(N)
jumlah 0 { inisialisasi jumlah deret = 0 }
for i to N { ulangi penjumlahan deret sebanyak N }
jumlah jumlah + 1
endfor
write(jumlah)
PASCAL: PROGRAM PenjumlahanDeret;
{ mejumlahkan deret 1 + 2 + ... + N, dengan N bilangan bulat positif }
uses wincrt;
(* DEKLARASI *)
var
N: integer;
i: integer;
jumlah : integer;
(* ALGORITMA *)
Begin
clrscr;
readln(N);
jumlah := 0; { inisialisasi jumlah deret = 0 }
for i := 0 to N do { ulangi penjumlahan deret sebanyak N }
begin
jumlah := jumlah + i;
end;
(* endfor *)
writeln(jumlah)
end.
FOR menurun
Bentuk umum untuk for menurun:
for pencacah nilai_akhir downto nilai_awal do
aksi
Algoritma dan Pemrograman 29
endfor
Contoh:
PROGRAM HitungMundur
{Hitung mundur dari 100}
DEKLARASI
i : integer
ALGORITMA
for i 100 downto 0 do
write(i)
endfor
write(„Go‟)
Pascal: PROGRAM HitungMundur;
{Hitung mundur dari 20}
uses wincrt;
(* DEKLARASI *)
var
i : integer;
(* ALGORITMA *)
Begin
for i:= 20 downto 0 do
writeln(i);
(* endfor *)
write('Go');
end.
Contoh lain:
PROGRAM Bilangan_segitiga
DEKLARASI
i, j : integer
ALGORITMA
for i 5 downto 1 do
for j 1 to i do
writeln(i);
endif
endif
endif
Pascal:
Algoritma dan Pemrograman 30
PROGRAM Bilangan_segitiga;
uses wincrt;
(* DEKLARASI *)
var
i, j : integer;
(* ALGORITMA *)
begin
clrscr;
for i:=5 downto 1 do
begin
for j:=1 to i do
begin
write(i);
end;
writeln;
end;
end.
b. Pernyataan WHILE
Bentuk umum pernyataan WHILE adalah: while kondisi do
aksi
andwhile
Contoh:
PROGRAM Cetak_banyak_Helloword
{mencetak kata “Hello word” sebanyak 10 kali}
DEKLARASI
i : integer {pencacah pengulangan }
ALGORITMA
i 1
while i ≤ 10 do
write(„Hello word‟)
i i + 1
endwhile
Pascal: PROGRAM Cetak_banyak_Helloword;
{mencetak kata "Hello word" sebanyak 10 kali}
uses wincrt;
(* DEKLARASI *)
var
i : integer; {pencacah pengulangan }
Algoritma dan Pemrograman 31
(* ALGORITMA *)
begin
i := 1;
while i < 10 do
begin
writeln('Hello word');
i := i + 1
end;
end.
contoh lain
PROGRAM PenjumlahanDeret
{ mejumlahkan deret 1 + 2 + ... + N, dengan N bilangan bulat positif }
DEKLARASI
N: integer
i: integer
jumlah : integer
ALGORITMA
read(N)
jumlah 0 { inisialisasi jumlah deret = 0 }
i 1
while i ≤ N do
jumlah jumlah + 1
i i + 1
endwhile { i > N }
write(jumlah)
Pascal: PROGRAM PenjumlahanDeret;
{ mejumlahkan deret 1 + 2 + ... + N, dengan N bilangan bulat
positif }
uses wincrt;
(* DEKLARASI *)
var
N: integer;
i: integer;
jumlah : integer;
(* ALGORITMA *)
Begin
Algoritma dan Pemrograman 32
clrscr;
read(N);
jumlah := 0; { inisialisasi jumlah deret = 0 }
i := 1;
while i < N do
begin
jumlah := jumlah + i;
i := i + 1
end;
(*endwhile*) { i > N }
write(jumlah);
end.
c. Pernyataan REPEAT
Bentuk umum pernyataan REPEAT adalah: repeat
aksi
until kondisi
Contoh:
Menuliskan kata Hello word sebanyak 10 baris, menggunakan REPEAT – UNTIL.
PROGRAM Cetak_banyak_Helloword
{mencetak kata “Hello word” sebanyak 10 kali}
DEKLARASI
i : integer {pencacah pengulangan }
ALGORITMA
i 1
repeat
writeln(„Hello word‟)
i i + 1
until i > 10
Pascal:
PROGRAM Cetak_banyak_Helloword;
{mencetak kata "Hello word" sebanyak 10 kali}
uses wincrt;
(* DEKLARASI *)
var
i : integer; {pencacah pengulangan }
Algoritma dan Pemrograman 33
(* ALGORITMA *)
begin
clrscr;
i := 1;
repeat
writeln('Hello word');
i := i + 1;
until i > 10;
end.
Contoh lain:
PROGRAM PenjumlahanDeret
{ mejumlahkan deret 1 + 2 + ... + N, dengan N bilangan bulat positif }
DEKLARASI
N: integer
i: integer
jumlah : integer
ALGORITMA
read(N)
jumlah 0 { inisialisasi jumlah deret = 0 }
i 1
repeat
jumlah jumlah + 1
i i + 1
until i > N
write(jumlah)
Pascal:
PROGRAM PenjumlahanDeret;
{ mejumlahkan deret 1 + 2 + ... + N, dengan N bilangan bulat positif
}
uses wincrt;
(* DEKLARASI *)
var
Algoritma dan Pemrograman 34
N: integer;
i: integer;
jumlah : integer;
(* ALGORITMA *)
begin
read(N);
jumlah := 0; { inisialisasi jumlah deret = 0 }
i := 1;
repeat
jumlah := jumlah + i;
i := i + 1;
until i > N;
write(jumlah);
end.
Algoritma dan Pemrograman 35
PEMECAHAN MASALAH Pada bagian ini akan disajikan beberapa contoh pemecahan masalah, pemecahan masalah
disajikan dari bentuk sederhana sampai pada bentuk yang lebih sulit (kompleks). Pemecahan
masalah diharapkan dapat menjadi pola-pola yang dapat digunakan untuk memecahkan masalah
yang sejenis.
d. PERSAMAAN LINEAR DUA VARIABEL Persamaan linear dua variabel mempunyai bentuk:
a x + b y = p (1)
c x + d y = q (2)
Penyelesaian persamaan linear ada beberapa macam diantaranya: eleminasi, substitusi, grafik,
matriks.
Apabila diselesaikan dengan matriks, maka diperoleh persamaan matriks
= (3)
x = = = (pd-bq)/(ad-bc) (4)
y = = = (aq-cp)/(ad-bc) (5)
dengan syarat ad – bc ≠ 0 (6)
berdasarkan penyelesaian pada persamaan (4) dan (5), disusun algoritmik untuk penyelesaian
persamaan dua variabel.
PROGRAM PersamaanLinear
{ Penyelesaian persamaan linear dua variabel ax + by = p dan cx + dy = q menggunakan
penyelesaian materik, nilai a, b, c, d, p, q dibaca sebagai masukkan dan nilai x dan y dicetak
seagai keluaran }
DEKLARASI
a, b, c, d : real
p, q, det : real
ALGORITMA
readln(a)
readln(b)
readln(c)
readln(d)
det ad – bc
if det <> 0 then
x (pd-bq)/(ad-bc)
y (aq-cp)/(ad-bc)
write(x)
write(y)
else
write(„Tidak dapat diselesaikan‟)
Algoritma dan Pemrograman 36
endif
Program Pascal: e. PROGRAM PersamaanLinear; f. { Penyelesaian persamaan linear dua variabel ax + by = p dan cx + dy = q menggunakan
penyelesaian matrik } g. uses wincrt; h. i. (* DEKLARASI *) j. var k. a, b, c, d : real; l. p, q, det : real; m. x, y : real; n. o. (* ALGORITMA *) p. Begin q. write('a = '); readln(a); r. write('b = '); readln(b); s. write('c = '); readln(c); t. write('d = '); readln(d); u. write('p = '); readln(p); v. write('q = '); readln(q); w. det := a*d - b*c; x. if det <> 0 then y. begin z. x := (p*d-b*q)/det; aa. y := (a*q-c*p)/det; bb. writeln('x = ',x:5:0); cc. writeln('y = ',y:5:0); dd. end ee. else ff. write('Tidak dapat diselesaikan'); gg. (* endif *) hh. end.
ii. AKAR PERSAMAAN KUADRAT Bentuk umum persamaan kuadrat
ax2 + bx + c = 0 dengan syarat a ≠ 0
Akar-akar persamaan kuadrat dapat dihitung dengan menggunakan rumus berikut ini:
x1,2 =
Jenis akar persamaan kuadrat tergantung pada nilai b2 – 4ac (determinan atau D), yaitu:
Jika nilai b2 – 4ac < 0, maka akar-akarnya imaginer,
Jika nilai b2 – 4ac > 0, maka akar-akarnya riil dan berbeda,
Jika nilai b2 – 4ac = 0, maka akar-akarnya riil dan sama.
Permasalahan ini dapat dibagi menjadi tiga kasus,
Kasus 1 : D < 0, akar-akarnya imaginer,
Algoritma dan Pemrograman 37
Kasus 2 : D > 0, akar-akarnya riil dan berbeda,
Kasus 3 : D = 0, akar-akarnya riil dan sama.
PROGRAM AkarPersamaanKuadrat
{ menhitung akar-akar persamaan kuadrat ax2 + bx + c = 0, nilai a, b, c dibaca sebagai masukkan
(a≠0) dan akar-akarnya dicatak sebagai keluaran }
DEKLARASI
a, b, c : real { koefisien persamaan kuadrat }
D : real { determinan persamaan kuadrat}
x1, x2 : real { akar-akar persamaan kuadrat
ALGORITMA
read (a,b,c)
D b*b – 4*a*c
if D < 0 then
write(„akar-akar imaginer‟)
else
if D > 0 then
x1 (-b + SQRT(D))/(2*a)
x2 (-b - SQRT(D))/(2*a)
else { D = 0 }
x1 (-b + SQRT(D))/(2*a)
x2 x1
endif
write(x1,x2)
endif
Pascal: PROGRAM AkarPersamaanKuadrat;
{ menghitung akar-akar persamaan kuadrat, nilai a, b, c sebagai
masukkan (a<>0) dan akar-akarnya dicatak sebagai keluaran }
uses wincrt;
(* DEKLARASI *)
var
a, b, c : real; { koefisien persamaan kuadrat }
D : real; { determinan persamaan kuadrat}
x1, x2 : real; { akar-akar persamaan kuadrat}
(* ALGORITMA *)
begin
read (a,b,c);
D := b*b - 4*a*c;
if D < 0 then
write('akar-akar imaginer')
else
if D > 0 then
begin
Algoritma dan Pemrograman 38
x1 := (-b + SQRT(D))/(2*a);
x2 := (-b - SQRT(D))/(2*a);
end
else { D = 0 }
begin
x1 := (-b + SQRT(D)/(2*a));
x2 := x1;
end;
(* endif *)
writeln('X1 = ',x1:3:0);
writeln('X2 = ',x2:3:0)
(* endif *)
end.
jj. MENGHITUNG PANGKAT (an) n bilangan bulat positif
Buatlah algoritma untuk membaca a dan n bilangan bulat (n≥0) lalu menghitung perpangkatan an.
Perpangkatan an berarti mengalikan a sebanyak n faktor.
an = a x a x a x ... x a (sebanyak n faktor)
Misalkan hasil perpangkatan tersebut adalah p, pertama p diinisialkan 1 bukan 0, karena ia akan
selalu dikalikan dengan a.
Lakukan perkalian p dengan a sebanyak n kali
PROGRAM perpangkatan
{ menghitung perpangkatan an , dengan masukkan a dan n bilangan bulat dan keluaran hasil dari
perpangkatan }
DEKLARASI
a : real { nilai yang dipangkatkan }
n : integer { pangkat }
p : real { hasil perpangkatan }
i : integer { pencacah pengulangan }
ALGORITMA
read(a,n)
p 1
for i 1 to n do
p p * a
endfor
write(p)
Pascal: PROGRAM perpangkatan;
{ menghitung perpangkatan an , dengan masukkan a dan n bilangan
bulat dan keluaran hasil dari perpangkatan }
uses wincrt;
Algoritma dan Pemrograman 39
(* DEKLARASI *)
var
a : real; { nilai yang dipangkatkan }
n : integer; { pangkat }
p : real; { hasil perpangkatan }
i : integer; { pencacah pengulangan }
(* ALGORITMA *)
begin
read(a,n);
p := 1;
for i := 1 to n do
p := p * a;
(* endfor *)
write(p);
end.
MENGHITUNG PANGKAT n bilangan bulat sebarang
Algoritma sebelumnya dapat dikembangkan juga dapat digunakan untuk menghitung an bilangan
bulat (negatif, nol atau positif), algoritma sebelumnya hanya untuk bilangan bulat positif saja.
Gunakan kenyataan bahwa
a-n
=
PROGRAM perpangkatan
{ menghitung perpangkatan an , dengan masukkan a dan n bilangan bulat sembarang dan
keluaran hasil dari perpangkatan }
DEKLARASI
a : real; { nilai yang dipangkatkan }
n,m : integer; { pangkat }
p : real; { hasil perpangkatan }
i : integer; { pencacah pengulangan }
ALGORITMA
begin
read(a,n)
p := 1
for i := 1 to ABS(n) do
p := p * a
Algoritma dan Pemrograman 40
{ tuliskan hasil perpangkatan tergantung pada n }
if n < 0 then
write(1/p:8:3)
else
write(p:8:3);
endif
Pascal:
PROGRAM perpangkatan;
{ menghitung perpangkatan an , dengan masukkan a dan n bilangan
bulat sembarang dan keluaran hasil dari perpangkatan }
uses wincrt;
(* DEKLARASI *)
var
a : real; { nilai yang dipangkatkan }
n,m : integer; { pangkat }
p : real; { hasil perpangkatan }
i : integer; { pencacah pengulangan }
(* ALGORITMA *)
begin
clrscr;
read(a,n);
p := 1;
for i := 1 to ABS(n) do
p := p * a;{tuliskan hasil perpangkatan tergantung pada n}