Anda di halaman 1dari 50

KU-1072 PTI-B:

ALGORITMA dan
PEMROGRAMAN MODULAR

FTI 2011

PTI-B FTI 2011


Silabus
 Program Komputer
 Algoritma
 Pseudo-code
 Flowchart
 Pemrograman Bahasa C

PTI-B FTI 2011


KOMPUTER
• Orang awam: “barang canggih yang pintar”
• Orang paham: “perangkat untuk mengolah data
digital berdasarkan program tertentu”
• Misal ingin mengurutkan bilangan
dari kecil ke besar:
45,35,40, 24, 60.
• Bagaimana menyuruh komputer
melakukannya ??

?? Diselesaiakan dengan
MASALAH menggunakan komputer

PTI-B FTI 2011


PENGEMBANGAN PROGRAM
Langkah-Langkah dalam Pengembangan Program
 Tetapkan Kebutuhan (Spesifikasi) dari Masalah
 Analisa Masalah
 Disain Teknik Penyelesaian Masalah (Algoritma)
 Implementasikan Algoritma (Kodifikasi)
 Kompilasi dan Jalankan Program
 Pengujian dan Debugging Program
 Pemeliharaan dan Perbaikan Program

PTI-B FTI 2011


ALUR PEMBUATAN PROGRAM

Pernyataan atau sesuatu yang


MASALAH
harus diselesaikan

Urutan langkah/prosedur untuk


ALGORITMA
menyelesaikan masalah

Algoritma yang ditulis dalam


PROGRAM
bahasa komputer

PTI-B FTI 2011


BELAJAR PEMROGRAMAN
 Memprogram : mempelajari metodologi pemecahan
masalah lalu menuliskan algoritma untuk pemecahan
masalah tersebut dalam notasi tertentu
 Bahasa pemrograman : mempelajari suatu bahasa
komputer : sintak, instruksi, kompilasi

Algoritma Bahasa
Masalah? Bahasa Mesin
Pemrograman

Translasi Kompilasi
Solusi

High level language Low level language

PTI-B FTI 2011


Program Komputer

Program
1. Read Input, Mem[1]
2. Read Input, Mem[2]
3. Add Mem[1],Mem[2]
4. Store Mem[3]
5. Write Mem[3], Output

Input CPU Output

Memory

PTI-B FTI 2011


PENDEFINISIAN MASALAH
 Tiga langkah dalam pendefinisian masalah
 Tentukan input yang diperlukan
 Tentukan output yang diinginkan
 Tentukan proses yang harus dijalankan
 Beberapa hal yg dapat membantu pendefinisian masalah :
 Cobalah untuk mengerti permasalahan dengan mengajukan
pertanyaan
 Lihatlah pada hal-hal yang sudah familiar (Do not reinvent the
wheel !!)
 Buatlah analogi masalah yang dihadapi dengan masalah yang
lain yang sudah pernah dipecahkan.
 Memiliki pengalaman yang luas akan membuat anda menjadi
programmer yang baik
 Bagi masalah yang besar kedalam masalah yang kecil-kecil untuk
memudahkan penyelesaian masalah (modular programming)

PTI-B FTI 2011


PENDEFINISIAN MASALAH
 Tentukan input yang diperlukan
Tentukan input dan sumber data yang diperlukan

 Tentukan output yang diinginkan


Jelaskan secara detil output data yang harus dihasilkan

 Tentukan proses yang harus dijalankan


Buatlah suatu proses yang dapat mengubah input
menjadi output

PTI-B FTI 2011


CONTOH : PENDEFINISIAN MASALAH
Menghitung Luas Lingkaran
PROBLEM STATEMENT
 Tulis program yang menghitung luas lingkaran dari
masukan jari-jari lingkaran.

Menghitung Luas Lingkaran :


Input : Jari-jari lingkaran
Output : Luas Lingkaran
Proses : Cari solusi yang menghubungkan input
dengan output
Luas = π (jari-jari)2

PTI-B FTI 2011


CONTOH : PENDEFINISIAN MASALAH
Hitung Jumlah N buah bilangan :
PROBLEM STATEMENT
 Tulis program yang menerima masukan berupa
deretan angka sampai ketemu angka 0 kemudian
keluarkan jumlah semua bilangan tersebut.

Hitung Jumlah N buah bilangan :


Input : Deretan angka diakhiri angka 0
Output : Jumlah seluruh bilangan yang di-input-kan
Process: Cari proses yg dapat mengubah input
menjadi output.
Output = Jumlah seluruh Input

PTI-B FTI 2011


Algoritma
 Tahap-tahap menyelesaikan masalah secara:
 Sistematis: terurut secara logis
 Realistis: bisa dilaksanakan
 Efektif : solusi yang benar bisa didapat
 Efisien : dengan cepat dan hemat sumber daya
 Elegan : logis dan cerdas
 Terminated: berhenti pada suatu titik
 Algoritma TIDAK hanya di dunia komputer !

PTI-B FTI 2011


STRUKTUR DASAR ALGORITMA
 Pernyataan (Statement)
Setiap langkap dalam algoritma dinyatakan dalam
sebuah pernyataan (statement) atau disebut juga
instruksi

Misal :
 READ input
 WRITE “Hello”

 KALIKAN input dengan 2

PTI-B FTI 2011


STRUKTUR DASAR ALGORITMA
 Konstruksi Dasar
Sequence Selection Repetition

Statement 1 Statement 1
Statement1

Statement2 Statement2 Statement2

Statement3 Statement3 Statement3

PTI-B FTI 2011


NOTASI ALGORITMA
 Non Formal
 Bahasa deskriptif sehari-hari
 Formal
 Matematik
 Pseudo Code
 Mendekati bahasa pemrograman
 FlowChart
 Diagramatik

PTI-B FTI 2011


PSEUDO-CODE
 Algoritma dalam bentuk tek non formal namun
dengan kosa kata yang lebih terbatas dan terdefinisi
dengan baik serta dekat dengan bahasa
pemrograman
 Tidak ada notasi baku dalam penulisan pseudo-code.
Hanya saja , perlu diuji masalah kemudahan dalam
mentranslasikan notasi pseudo-code yang dibuat
kedalam notasi bahasa pemrograman
 Pseudo-code pada umumnya dapat dikelompokan
menjadi grup input, output, iterasi, pemilihan, proses,
assignment dan fungsi

PTI-B FTI 2011


KOSA KATA PSEUDO-CODE
Grup Kata kunci/operator Contoh
Input READ, INPUT, GET, OBTAIN READ x, y;
Output PRINT, WRITE, SHOW, DISPLAY PRINT(“nama saya :”, nama)
Pemilihan IF <kondisi> THEN IF (x== y) then
(Selection) pernyataan PRINT (“sama”)
ENDIF ENDIF
IF<kondisi> IF(x== y)
THEN pernyataan1 THEN PRINT (“sama”)
ELSE pernyataan2 ELSE PRINT (“tidak sama”)
ENDIF ENDIF
Iterasi REPEAT REPEAT
(Iteration) pernyataan x = x +1
UNTIL <kondisi> UNTIL (x > 100)
DOWHILE <kondisi> DOWHILE (x <= 100)
pernyataan x = x +1
ENDDOWHILE ENDDOWHILE
FOR <var> = <start value> O<stop value> FOR i = 1 TO 100
pernyataan x=x+1
ENDFOR ENDFOR

PTI-B FTI 2011


KOSA KATA PSEUDO-CODE
Grup Kata kunci/operator Contoh
Proses ADD, SUBSTRACT, COMPUTE, SET, ADD 3 to x
INIT COMPUTE x + 5 giving new x

Assignment <variable><variable>; x  y + 2;
<variable> = <variable>;

Fungsi function <function name>(<arguments>) function rata2 (x,y)


do statement with arguments; rata = (x + y)/2;
return <expression>; return rata;
Pemanggilan fungsi
<function name>(<arguments>)
rata2(10,6);

PTI-B FTI 2011


PSEUDO-CODE
Pada dasarnya tersusun atas tiga bagian :
 Judul Algoritma : terdiri dari nama algoritma yg diikuti
penjelasan mengenai algoritma, berisi uraian singkat mengenai
apa yang dikerjakan oleh algoritma tersebut yg disebut
spesifikasi algoritma
 Deklarasi Algoritma : berisi semua nama yang digunakan
dalam algoritma , mencakup nama-nama tipe, konstanta,
variabel, prosedur, fungsi yang didefinisikan pada algoritma.
 Deskripsi Algoritma : berisi semua langkah-langkah
algoritma. Urutan langkah dibaca dari atas kebawah dan
menentukan urutan pelaksanaan perintah
Setiap bagian dilengkapi komentar, untuk memperjelas teks
yang dituliskan. Komentar ditulis dalam tanda kurung
kurawal

PTI-B FTI 2011


CONTOH PSEUDO-CODE
 PROGRAM : Penjumlahan 100 Integer Pertama
{menjumlahkan bilangan integer dari 1 sampai 100}
 DEKLARASI:
Sum : integer
i : integer
 DESKRIPSI:
Sum0
for i=1 to 100
sumsum+1
endfor
print sum

PTI-B FTI 2011


CONTOH PSEUDO-CODE 2
 PROGRAM : Menjumlahkan N buah Bilangan Integer
{Menjumlahkan deret 1+2+3+….+N , dengan N bilangan bulat positif
yang dibaca di perangkat masukan. Jumlah deret ditampilkan diperangkat
keluaran}
 DEKLARASI:
N : integer {banyaknya suku}
k : integer {suku deret ke-”k”}
jumlah: integer {jumlah deret}
 DESKRIPSI:
read(N) {membaca banyaknya suku}
jumlah 0 {inisialisasi jumlah deret}
k 1 {suku deret ke-”k=1”}
repeat
jumlah jumlah+k
k  k +1 {suku deret berikutnya}
while k < N
write (jumlah)

PTI-B FTI 2011


FLOWCHART
• Flowchart berisi kumpulan diagram berbagai bentuk
yang dihubungkan dengan garis panah. Masing-masing
bentuk diagram mewakili langkah-langkah dalam
SIMBOL NAMA FUNGSI
Terminator Permulaan/akhir algoritma

Garis alir / flow line Arah aliran program


Preparation Proses inisialisasi/pemberian harga
awal
Proses Proses perhitungan/proses
pengolahan data
Input/output data Proses input/output data, parameter,
informasi
Predefined process/ Permulaan sub program/proses
subprogram menjalankan sub program

PTI-B FTI 2011


FLOWCHART

SIMBOL NAMA FUNGSI


Decision Perbandingan pernyataan,
penyeleksian data yang memberikan
pilihan untuk langkah selanjutnya
On Page Connector Penghubung bagian-bagian flowchart
yang berada pada satu halaman
Off Page Connector Penghubung bagian-bagian flowchart
yang berada pada halaman yang
berbeda
. .
. .
. .

PTI-B FTI 2011


ATURAN UMUM FLOWCHART
 Seluruh diagram flowchart terhubung dengan tanda
panah (bukan garis)
 Simbol flowchart memiliki titik masuk pada bagian
atas dan titik keluar pada bagian bawah kecuali
simbol pemilihan (decision)
 Simbol pemilihan (decision) memiliki dua keluaran di
kedua sisi atau bawah dengan samping
 Simbol konektor digunakan untuk memotong dan
menghubungkan flowchart dengan flowchart yang
lain, misalnya ketika pindah halaman
 Program subroutine memiliki flowchart tersendiri
 Flowchart dimulai dan berakhir pada suatu terminal

PTI-B FTI 2011


Kasus 1

• Non Formal
– Jumlahkan bilangan 1 s/d 100
• Formal
100

S   I
I 1

PTI-B FTI 2011


Kasus 1 :
Jumlahkan 100 bilangan integer pertama
• Pseudo Code • FlowChart (ini salah-coba betulkan)
• PROGRAM :
Start
Penjumlahan 100 Integer
Pertama {menjumlahkan bilangan
integer dari 1 sampai 100} sum=0
i=1
• DEKLARASI:
Sum : integer
i : integer Sum>100
• DESKRIPSI:
Sum0 write sum
sum=sum+1
for i=1 to 100
i=i+1
sumsum+1
endfor
stop
print sum

PTI-B FTI 2011


CONTOH KASUS 2: MASALAH
 Ali membeli tiga buah buku, dia ingin tahu harga total
buku-buku yang dia beli serta harga rata-rata buku
tersebut

Deskripsi masalah :
 Input : harga 3 buah buku (harga_b1, harga_b2,
harga_b3)
 Output : harga total 3 buah buku dan harga rata-rata
 Batasan masalah : jumlah buku = 3 buah
 Proses : Cari solusi yang menghubungkan input dengan
output.
Harga Total = harga_b1 +harga_b2+harga_b3
Rata-rata = Harga Total /3

PTI-B FTI 2011


CONTOH KASUS 2 : ALGORITMA
 PROGRAM : Menghitung Harga Rata-rata 3 Buah Buku
{Program ini menghitung harga rata-rata 3 buah buku yang dimasukan
menggunakan piranti masukan}
 DEKLARASI:
harga_b1, harga_b2, harga_b3, sum, rata2, : integer
 Deskripsi:
READ harga_b1, harga_b2, harga_b3
{Hitung jumlah total }
sum = harga_b1+ harga_b2+ harga_b3
{Hitung harga rata-rata}
rata2 = sum/3
PRINT “Harga total dari 3 buah buku =“ sum
PRINT ”Harga rata-rata dari 3 buah buku = “ rata2

PTI-B FTI 2011


CONTOH LAIN :
Swap Dua Nilai (menukarkan dua nilai)
 Uraian permasalahan:
Input dua nilai integer, cetak berdasarkan urutan
pada saat input dimasukan dan dengan urutan
berlawanan (setelah ditukarkan)

 Spesifikasi input:
Dua bilangan integer

PTI-B FTI 2011


CONTOH LAIN :
Swap Dua Nilai (menukarkan dua nilai)
PROBLEM STATEMENT
 Tukarkan dua buah bilangan Integer.

Tukarkan Dua Bilangan Integer:


Input : Dua bilangan integer
Output : Dua bilangan integer sebelum dan setelah
ditukarkan
Proses : Cari proses yg dapat mengubah input
menjadi output.
x2 = y1 dan y2 = x1
Indek 1 dan 2 menyatakan, sebelum dan sesudah
ditukarkan

PTI-B FTI 2011


CONTOH LAIN :
Swap Dua Nilai (menukarkan dua nilai)
Swap Dua Nilai (1)
{Menukarkan nilai x dan y. Nilai x dan y dibaca dari
perangkat masukkan. Nilai x dan y dituliskan keperangkat
keluaran}
 Deklarasi :
x : integer
y : integer

PTI-B FTI 2011


Deskripsi :

PRINT “Masukan dua angka Masukan dua angka integer


integer”
READ x x = 10

READ y y=5

PRINT “Nilai sebelum ditukar” Nilai sebelum ditukar


PRINT “x=“, x, “ y =“, y x= 10 y = 5

//tukarkan
Nilai setelah ditukar
x=y
x= 5 y = 5
y=x
PRINT “Nilai setelah ditukar”
PRINT “x=“, x, “ y =“, y
?????
PTI-B FTI 2011
CONTOH LAIN :
Swap Dua Nilai (menukarkan dua nilai)
Swap Dua Nilai (2)
{Menukarkan nilai x dan x. Nilai x dan x dibaca dari
perangkat masukkan. Nilai x dan x dituliskan keperangkat
keluaran}
 Deklarasi :
x : integer
y : integer
temp : integer

PTI-B FTI 2011


Deskripsi

PRINT “Masukan dua angka Masukan dua angka integer


integer” x = 10
READ x
y=5
READ y
Nilai sebelum ditukar
PRINT “Nilai sebelum ditukar”
x= 10 y = 5
PRINT “x=“, x, “ y =“, y
//tukarkan Nilai setelah ditukar
temp = x x= 5 y = 10
x=y
y = temp
PRINT “Nilai setelah ditukar”
PRINT “x=“, x, “ y =“, y
PTI-B FTI 2011
Rangkuman
 Program = Data Struktur + Algoritma
 Banyak jalan menuju roma
 Make it work, then make it faster
 Keep it simple, but not simpler

"...the best way to prepare [to be a programmer] is to write


programs, and to study great programs that other people have
written.
In my case, I went to the garbage cans at the Computer
Science Center and fished out listings of their operating
system."
- Bill Gates (Microsoft Corporation)

PTI-B FTI 2011


Pilih Bahasa Pemrograman
 Pilihan bahasa ditentukan oleh:
 Target platform
 Target aplikasi
 Dukungan pustaka dan kekayaan bahasa
 Kemudahan bahasa
 Selera pribadi (fanatik atau segan belajar lagi?)
 Buat programmer andal, bahasa pemrograman bukan
pembatas. Algoritma bisa diimplementasikan dengan
bahasa pemrograman algoritmis apa saja, walau
tingkat kemudahannya mungkin berbeda.

PTI-B FTI 2011


Bahasa Pemrograman
• Mengimplementasikan algoritma dengan sintaks tertentu
(regular expression) sehingga bisa dikompilasi menjadi
bahasa mesin

• Berbagai bahasa pemrograman algoritmis


– Assembly
– Fortran
– C
– Pascal
– BASH (Born Again SHell)
– Bean Shell
– Dan masih banyak lagi

PTI-B FTI 2011


BAHASA PEMROGRAMAN C
 Bahasa C pertama kali dikembangkan di Lab. Bell pada
awal 70-an oleh Ritchie

 Kenapa memilih C
 Ringkas, cepat, dan powerful
 “Mid-level” Language
 Standard untuk pengembangan program (diterima secara
luas)
 Portable, tidak tergantung hardware
 Mendukung pemrograman modular
 Dapat digunakan untuk seluruh aplikasi
 C adalah language yang dipakai di UNIX
 Mudah untuk menghubungkan dengan sistem devices/
assembly
 C adalah singkat dan padat
PTI-B FTI 2011
BAHASA PEMROGRAMAN C
 Program C terdiri dari beberapa bagian/modul yang
disebut FUNGSI
 Minimum harus ada satu fungsi bernama main()
dalam program C yang merupakan fungsi yang akan
dieksekusi pertama kali.
 Programmer dapat pula membuat fungsi sendiri
 Programmer akan sering menggunakan fungsi yang
sudah ada (C library)
 Programmer dapat menggunakan fungsi yang dibuat
orang lain
 Program C dapat dikembangkan secara modular
dalam beberapa file yang terpisah

PTI-B FTI 2011


STUKTUR BAHASA C

Documentation Section Sub-program Section


Link Section function1
Definition Section {
Global declaration Section Statements
main() function section }
{
Declaration Section function2
Executable Section {
} Statements
}

PTI-B FTI 2011


CONTOH PROGRAM BAHASA C
//Program untuk menghitung rata2 3 nilai Documentation Section
# include <stdio.h> Link Section
# define JMLDATA 3
Definition Section
float rata2 (int x1, int x2, int x3);
main() Global declaration Section
{ main() function section
int x1, x2, x3; //deklarasi variabel
float avg;
printf(“Masukan tiga angka integer \n”); // tanda \n untuk ganti baris
scanf(“%d”, &x1); //%d format untuk data integer
scanf(“%d”, &x2); scanf(“%d”, &x3);
avg = rata2(x1,x2,x3);
printf (“rata rata dari %d %d %d %s %f“, x1, x2, x3, “ adalah “, avg);
}
float rata2 (int x1, int x2, int x3) Sub-program Section
{
return (x1 + x2 + x3)/JMLDATA;
}

PTI-B FTI 2011


PROSES PEMROGRAMAN
 Pembuatan Kode Program
 Kompilasi Program
 Eksekusi Program
 Pengujian Program
 Dokumentasi Program

PTI-B FTI 2011


KOMPILASI
Other Object
Editor File
Source File
untuk menulis Format: binary
program Format: text

Compiler Linker
merubah program berhasil Object File Memasukan semua file
ke dalam bahasa Format: binary yang dari luar yang
mesin diperlukan oleh program
gagal
Error
Executable File
input Format: binary

Loader
Copy file ke dalam
memori, untuk memulai
eksekusi program

hasil

PTI-B FTI 2011


KOMPILASI
 Misalkan kita telah membuat kode program c dan
disimpan dalam file program.c atau program.cpp
 Kompilasi dapat dilakukan lewat terminal
(menggunakan gcc compiler)
 gcc program.c  akan menghasilkan a.out (linux)
kalau di windows .exe
 gcc –o program program.c  akan menghasilkan
program.out (linux)
 Untuk menggabungkan file yang displit kedalam satu
file executable linker
 gcc swap.o utama.o –o prog_utama
akan menghasilkan prog_utama.out

PTI-B FTI 2011


EKSEKUSI
 Kompilasi akan mengasilkan file .out (linux) atau .exe
(windows)
 Untuk mengeksekusinya kita lakukan dengan
menjalankan file tersebut
 ./a.out (di linux)
 Double klik file.exe (di windows)

PTI-B FTI 2011


PENGUJIAN
 Untuk menguji apakah program telah berjalan sesuai
dengan yang dirancang, maka kita harus mengujinya
menggunakan data yang sudah kita ketahui harus
seperti apa keluarannya.

 Jika hasil yang diperoleh tidak sesuai dengan yang


diharapkan berarti masih ada kesalahan pada
program yang harus dibetulkan.

PTI-B FTI 2011


DOKUMENTASI
 Dokumentasi program merupakan bagian yang
sangat penting dalam pengembangan program,
namun sering diabaikan karena tidak mempengaruhi
terhadap jalannya program.
 Dokumentasi digunakan untuk menjaga proses
disain, implementasi dan pengujian ada dalam trek
yang diinginkan.
 Dokumentasi terdiri dari sitem dokumentasi dan
program dokumentasi
 Sistem dokumentasi berisi deskripsi fungsional serta
berbagai jenis manual.

PTI-B FTI 2011


DOKUMENTASI
 Dokumentasi program meliputi seluruh fase
dokumentasi pengembangan program
 Pernyataan permasalahan
 Glossary dari variabel-variabel
 Deskripsi dari modul-modul yang ada
 Error message yang mungkin ada
 Keamanan
 Data test

PTI-B FTI 2011


CONTOH MINIMUM DOKUMENTASI
/****************************************************/
/* Calculation of the Slope of a Line */
/****************************************************/
/* Input Variables: */
/* x1, y1 : coordinates of point1 */
/* x2, y2 : coordinates of point2 */

/* Computed Variables: */
/* slope : slope of the line */

/* Output Variables: */
/* x1, y1 : coordinates of point1 */
/* x2, y2 : coordinates of point2 */
/* slope : slope of the line */

/****************************************************/

PTI-B FTI 2011


CONTOH
#include <stdio.h>
int main()
{
float x1, y1, x2, y2;
float slope;
printf("Input the Coordinate Points of the Line:\n");
scanf("%f %f %f %f", &x1, &y1, &x2, &y2);
printf("Coordinates of Point1: x1 = %5.2f y1 = %5.2f\n", x1, y1);
printf("Coordinates of Point2: x2 = %5.2f y2 = %5.2f\n", x2, y2);
if (x1 != x2)
{
slope = (y2 - y1) / (x2 - x1);
printf("Slope of the Line: %5.2f\n", slope);
}
else
printf("line is vertical\n");
return 0;
}

PTI-B FTI 2011

Anda mungkin juga menyukai