BAHAN AJAR
PEMROGRAMAN STRUKTURAL
KODE MATA KULIAH : SEMESTER : 2
SKS : 3 SKS
DOSEN PENGAMPU : Eko Riswanto, S.T., M.Cs
PROGRAM STUDI SISTEM INFORMASI
SEKOLAH TINGGI MANAJEMEN INFORMATIKA DAN ILMU KOMPUTER EL RAHMA
BAB 1
KONSEP PEMROGRAMAN TERSTRUKTUR
Pemrograman Terstruktur merupakan suatu tindakan untuk membuat program yang berisi
instruksi-instruksi dalam bahasa komputer yang disusun secara logis dan sistematis supaya mudah dimengerti,
mudah dites, dan mudah dimodifikasi.
Pemrograman terstruktur adalah bahasa pemrograman yang mendukung pembuatan program sebagai
kumpulan prosedur. Prosedur-prosedur ini dapat saling memanggil dan dipanggil dari manapun dalam
program dan dapat mengunakan parameter yang berbeda-beda untuk setiap pemanggilan. Bahasa
pemrograman terstruktur adalah pemrograman yang mendukung abstraksi data, pengkodean
terstruktur dan kontrol program terstruktur. Sedangkan Prosedur adalah bagian dari program untuk
melakukan operasi-operasi yang sudah ditentukan dengan menggunakan parameter tertentu.
Sejarah Metodologi Pemrograman
Pemrograman terstruktur pertama kali diungkapkan oleh Prof Edsger Djikstra dari Universitas
Eindhoven sekitar tahun 1965. Dalam papernya, Djikstra mengusulkan peniadaan perintah GOTO
pada pemrograman terstruktur. Berbeda dengan pendapat HD Millis yang mengungkapkan bahwa
pemrograman terstruktur tidak tergantung pada ada tidaknya GOTO tetapi lebih pada struktur program
itu sendiri. Dari pernyataan keduanya, memberikan gambaran tidak adanya definisi yang jelas untuk
pemrograman terstruktur. Tetapi dapat digaris bawahi bahwa pemrograman terstruktur merupakan
suatu proses untuk mengimplementasikan urutan langkah untuk menyelesaikan suatu masalah dalam
bentuk program.
Alasan Pemrograman Terstruktur ialah
1. Krisis metode pengembangan
2. Kemampuan tenaga programmer tertinggal
3. Sulitnya modifikasi program jika ada kesalahan atau perubahan
4. Sulitnya modifikasi kode program karena tidak terstruktur dengan baik
Manfaat Pemrograman Terstruktur
2. Dapat menghindari konflik internal team
3. Membagi kerja team berdasarkan modul-modul program yang sudah dirancang
4. kemajuan pengerjaan sistem dapat dimonitor dan dikaji
Ciri – ciri Program Terstruktur (Good Program)
1. Run correctly (program handal)
2. Run efficiently (program menjadi sederhana / tidak rumit)
3. Be easy to read and understand (mudah dibaca dan ditelusuri)
4. Be easy to debug (program mudah ditelusuri kesalahannya)
5. Be easy to modify (program mudah dimodifikasi)
Tujuan dari pemrograman terstruktur adalah
1. Meningkatkan kehandalan suatu progam,
2. Program mudah dibaca dan ditelusuri,
3. Menyederhanakan kerumitan program,
4. Pemeliharaan program, dan
5. Peningkatkan produktivitas pemrograman.
Pemrograman terstruktur bercirikan:
1. mengandung teknik pemecahan yang tepat dan benar,
2. memiliki algoritma pemecahan masalah yang sederhana, standar dan efektif,
3. memiliki struktur logika yang benar dan mudah dipahami,
4. terdiri dari 3 struktur dasar yaitu urutan, seleksi dan perulangan,
5. menghindari penggunaan GOTO,
6. biaya pengujian rendah, Source Program penterjemah Machine Languages Komputer dan
Pemrograman
7. memiliki dokumentasi yang baik,
BAB 2
ARRAY DALAM PASCAL
Array (larik) adalah sebuah variable yang dapat menyimpan lebih dari satu nilai sejenis (memiliki
tipe data yang sama). Hal ini tentu berbeda dengan variable biasa yang hanya mampu menampung satu buah nilai. Setiap nilai yang disimpan di dalam array di sebut dengan elemen array, sedangkan nilai urut yang digunakan untuk mengakses elemennya disebut dengan indeks array.
Deklarasi Array
Sama seperti variable lain, array juga dideklarasikan di dalam bagian deklarasi variable. Bila akan didefinisikan sebagai tipe bentukan, maka array juga akan dideklarasikan dibagian definisi tipe (dibawah kata kunci tipe). Dalam bahasa pascal, pendeklaraasian array dilakukan dengan menggunakan kata kunci array dan tipe data yang akan disimpan di dalamnya, selain itu juga harus disertai dengan batas-batas indeksnya yang diapit oleh tanda bracket([]). Berikut ini bentuk umum pendeklarasiannya.
NamaArray : array [IndeksArray..IndeksAkhir] of tipe_data;
Sebagai contoh, apabila kita ingin mendeklarasikan array dengan nama A yang berisi 10 buah elemen bertipe integer, maka kita harus mendeklarasikannya dengan cara berikut.
Var
A : array [1..10] of integer;
Pada kode tersebut, indeks awal dimulai dari satu. Perlu diperhatikan bahwa bahasa pascal berbeda dengan bahasa C yang indeks array-nya selalu dimulai dari nol. Pada bahasa pascal, indeks array dapat dimulai dari bilangan berapapun. Selain itu, indeks array juga dapat bertipe karakter maupun tipe enumerasi. Berikut ini contoh-contoh kode yang dapat digunakan untuk mendeklarasikan 10 buah elemen array bertipe integer sebagai pengganti kode diatas.
Var
A1: array[0..9] of integer; A2: array[5..15] of integer;
A3: array[‘a’..’j’] of integer; A4: array[‘A’..’J’] of integer;
Mengakses Elemen Array
Cara untuk memanipulasi array, langkah pertama yang harus dilakukan adalah mengisikan nilai ke dalam elemen-elemen array bersangkutan. Adapun bentuk umum untuk pengisian eleman array adalah sebagai berikut.
NamaArray[indeks]:= nilai;
Untuk lebih memahaminya, coba anda perhatikan terlebih dahulu contoh kode di bawah ini.
Var
A[1]:= 1; {mengisi elemen pertama dengan nilai 1} A[2]:= 2; {mengisi elemen kedua dengan nilai 2} A[3]:= 3; {mengisi elemen ketiga dengan nilai 3}
……
A[100]:= 100; {mengisi elemen keseratus dengan nilai 100} End.
Kode tersebut akan melakukan pengisian 100 elemen array dengan nilai 1 sampai 100 sehingga kode tersebut akan lebih sederhana apabila dituliskan dengan menggunakan struktur pengulangan seperti yang terlihat pada kode berikut.
Program InputArrayDgFor; uses wincrt;
Var
A: array[1..100] of integer; i,jml: integer;
Begin
write('Jumlah data : ');readln(jml); for i:=1 to jml do
readln(A[i]);
{Menampilkan hasil input} for i:=1 to jml do
write(A[i],' '); End.
Mengapa Harus Menggunakan Array
Mungkin anda yang merupakan pemula akan bertanya mengapa kita perlu untuk mendeklarasikan array? untuk menjawab pertanyaan tersebut, coba Anda perhatikan dulu contoh kasus berikut. Apabila kita akan membuat program untuk menyimpan sekumpulan data, misalnya data-data hasil penelitian yang berupa bilangan, dimana jumlah dari data tersebut puluhan, ratusan, atau bahkan ribuan, apakah anda akan menggunakan variable sebanyak data yang ada? Jawabanya tentu tidak, karena hal tersebut merupakan hal yang sangat tidak efisien. Sebagai contoh, asumsikan bahwa banyak data tersebut adalah sepuluh, maka apabila kita menggunakan variabel biasa tentu kita akan menuliskannya melalui contoh kode berikut.
Var
N1, n2, n3, n4, n5, n6, n7, n8, n9, n10: real; Begin
Writeln(‘masukkan data ke-1 : ‘); readln(n1);
Writeln(‘masukkan data ke-2 : ‘); readln(n2) ;
Writeln(‘masukkan data ke-3 : ‘); readln(n3) ;
Writeln(‘masukkan data ke-4 : ‘); readln(n4) ;
Writeln(‘masukkan data ke-5 : ‘); readln(n5) ;
Writeln(‘masukkan data ke-6 : ‘); readln(n6);
Writeln(‘masukkan data ke-7 : ‘); readln(n7);
Writeln(‘masukkan data ke-9 : ‘); readln(n9);
Writeln(‘masukkan data ke-10 : ‘); readln(n10); End.
Hal ini tentu akan merepotkan diri kita. Apabila dilihat, program di atas memang masih pendek karena datanya hanya sepuluh, bagaimana bila ratusan atau bahkan ribuan?
Untuk mengatasi masalah ini, seharusnya kita menggunakan array untuk menyimpan data-data tersebut sehingga program akan jauh lebih sederhana dan mudah dalam pengerjaannya. Berikut iini perbaikan program diataas apabila kita menampung data-datanya kedalam sebuah array..
Const max= 10;
N: array[1..max] of real; I: integer;
Begin
For i:=1 to max do
Writeln(‘masukkan data ke-‘, I,’ : ‘); readln(n[i]); End.
Apabila ternyata data berjumlah 100 atau 1000, maka anda hanya perlu mengganti nilai dari konstanta max di atas dengan nilai yang sesuai. Alasan seperti inilah yang menyebabkan kita perlu menggunakan array.
contoh program mencari rata-rata dengan array:
Program rata2; writeln('***program untuk mencari rata-rata ***'); writeln('**************************************'); writeln;
writeln('Rata-rata = ',rata:9:2); writeln('---');
readln; end.
Contoh program mencari maksimum dan minimum dengan array :
Program MakMinRandom;
writeln('***program untuk mencari Maksimum, Minimum dengan Bilangan Random ***');
writeln('************************************************************ *********');
writeln;
write('Masukkan jumlah data yang di masukkan: '); readln(n); writeln;
Contoh program mengurutkan bilangan dalam array dengan metode buble sort.
Program Pengurutan; uses wincrt;
var
nilai : array[1..max] of integer; n, i, j, tamp : integer;
begin
writeln('*********************WELCOME***********************'); writeln('***program mengurutkan dengan metode buble sort ***'); writeln('***************************************************'); writeln;
write('Masukkan jumlah data yang di masukkan: '); readln(n); writeln;
for i:=1 to n do begin
nilai[i]:=random(100); end;
writeln('Data sebelum diurutkan'); for i:=1 to n do
write(nilai[i],' '); writeln;
{***proses pengurutan***} for i:=1 to n-1 do
for j:=i+1 to n do
if nilai[i]>nilai[j] then begin
tamp := nilai[i]; nilai[i]:=nilai[j]; nilai[j]:=tamp end;
writeln('Data sebelum diurutkan'); for i:=1 to n do
write(nilai[i],' '); readln;
Array Dimensi Dua
Array dimensi dua adalah array yang memilih dua nomor indeks yang biasa disebut indek baris dan indeks kolom.
Deklarasi Array
NamaArray : array [IndekBrs..IndeksBrs, IndeksKlm..IndeksKlm] of tipe_data;
Sebagai contoh, apabila kita ingin mendeklarasikan array dengan nama A yang berisi 10 buah elemen baris dan 10 elemen kolom bertipe integer, maka kita harus mendeklarasikannya dengan cara berikut.
Var
A : array [1..10,1..10] of integer;
Mengakses Elemen Array
Cara untuk memanipulasi array, langkah pertama yang harus dilakukan adalah menyebutkan nama array diikuti oleh nomor baris dan nomor kolomnya. Adapun bentuk umum untuk pengisian eleman array dimensi dua adalah sebagai berikut.
NamaArray[IndeksBrs,IndeksKlm]:= nilai;
Contoh Program :
Program IsiMatrik; uses wincrt;
Var
matrik : array[1..10,1..10] of integer; Begin
matrik[1,1]:=10; matrik[1,2]:=70; matrik[4,5]:=50; writeln(matrik[1,1]); writeln(matrik[1,2]); writeln(matrik[4,5]); readln;
End.
Memasukkan Elemen Array dengan Perulangan For
Untuk memudahkan permasukkan data dalam matrik dapat digunakan dengan menggunakan perulangan for.
Contoh program memasukkan data matrik dengan for
Program InputMatrikDgFor; uses wincrt;
Var
matrik: array[1..10,1..10] of integer; i,j,brs,klm: integer;
Begin
write('Jumlah kolom : ');readln(klm); for i:=1 to brs do
for j:=1 to klm do
matrik[i,j] := random(10);
{Menampilkan hasil input matrik} for i:=1 to brs do
begin
for j:=1 to klm do
write(matrik[i,j]:5); writeln
end; readln; end.
Program penjumlahan dua matrik :
Syarat penjumlahan dua matrik adalah bahwa kedua matrik harus memiliki jumlah baris dan kolom yang sama.
Program PenjumlahanDuaMatrik; uses wincrt;
const
mak = 50; Var
matrikA, matrikB, matrikC : array[1..mak,1..mak] of integer; i,j,brs,klm: integer;
Begin
write('Jumlah baris : ');readln(brs); write('Jumlah kolom : ');readln(klm); {Isi matrik A}
for i:=1 to brs do for j:=1 to klm do
matrikA[i,j] := random(10); {Isi matrik B}
for i:=1 to brs do for j:=1 to klm do
matrikB[i,j] := random(10); {Menampilkan hasil input matrik} writeln('Isi Matrik A');
for i:=1 to brs do begin
for j:=1 to klm do
writeln end;
writeln('Isi Matrik B'); for i:=1 to brs do
begin
for j:=1 to klm do
write(matrikB[i,j]:5); writeln
end;
{Penjumlah dua matrik} for i:=1 to brs do for j:=1 to klm do
matrikC[i,j]:=matrikA[i,j]+matrikB[i,j]; writeln('Isi Matrik C');
for i:=1 to brs do begin
for j:=1 to klm do
write(matrikC[i,j]:5); writeln
end; readln; end.
Program perkalian dua matrik :
Syarat perkalian dua matrik adalah jumlah baris matrik kedua sama dengan jumlah kolom matrik pertama.
Program PekalianDuaMatrik; uses wincrt;
const
mak = 50; Var
matrikA, matrikB, matrikC : array[1..mak,1..mak] of integer; i,j,k,brsA,klmAbrsB, klmB : integer;
Begin
write('Jumlah baris matrik A : ');readln(brsA); write('Jumlah kolom matrik A : ');readln(klmAbrsB); write('Jumlah kolom matrik B : ');readln(klmB);
{Isi matrik A} for i:=1 to brsA do for j:=1 to klmAbrsB do
matrikA[i,j] := random(10); {Isi matrik B}
for j:=1 to klmB do
matrikB[i,j] := random(10); {Menampilkan hasil input matrik} writeln('Isi Matrik A');
for i:=1 to brsA do begin
for j:=1 to klmAbrsB do write(matrikA[i,j]:5); writeln
end;
writeln('Isi Matrik B'); for i:=1 to klmAbrsB do begin
for j:=1 to klmB do
write(matrikB[i,j]:5); writeln
end;
{Perkalian dua matrik} for i:=1 to brsA do for j:=1 to klmB do begin
matrikC[i,j]:=0;
for k:=1 to klmAbrsB do
matrikC[i,j]:=matrikC[i,j]+matrikA[i,k]*matrikB[k,j]; end;
writeln('Isi Matrik C'); for i:=1 to brsA do begin
for j:=1 to klmB do
write(matrikC[i,j]:5); writeln