Kompetensi Mahasiswa mampu membuat program untuk menyelesaikan permasalahan komputasi yang ada, menggunakan aturan bahasa pemrograman prosedural dengan mengacu pada metrik perangkat lunak yaitu kopling rendah dan kohesi tinggi.
Priyanto
E-mail:
[email protected]
Bahasa Pemrograman
Produk Mata Kuliah ini bukan program, tapi (perilaku) membuat program yang baik dan benar 1
Indikator Pencapaian Kompetensi • Mengimplementasikan logika program ke dalam struktur bahasa pemrograman non prosedural. • Menggunakan diagram alir untuk menuangkan algoritma program dan menterjemahkan ke dalam statemen program • Membuat PROSEDUR dan FUNGSI program dengan berbagai variasi passing parameter • Merubah Fungsi ke Prosedur dan sebaliknya • Mengukur kualitas MODUL PROGRAM (Fungsi & Prosedur) menggunakan metrik perangkat lunak • Mengkonversi program yang sudah ada menjadi Stuctuce Chart dan menuangkan Stuctuce Chart menjadi program Bahasa Pemrograman
3
Informasi Perkuliahan
Sistem Penilaian 1. Uji kompetensi pada kegiatan praktikum (8 kali): Nilai berdasarkan durasi penyelesaian 2. Kuis (Teori) 3. Ujian Tengah Semester (Teori)
4. Kehadiran 5. Keaktifan di dalam kelas 6. Ujian Akhir Semester (tidak ada) Butir 1 memiliki bobot paling tinggi Bahasa Pemrograman
4
• Pemrograman Pascal Versi 7.1 (bebas) • Pressman (2005). Software Engineering: A Practioner Approach. New York: McGrah-Hill.
• Bila dimungkinkan ada Asisten Praktikum • Labsheet praktikum disediakan
Bahasa Pemrograman
2
Pustaka
• Bahasa Pemrograman yang digunakan: Turbo Pascal 7.1
Bahasa Pemrograman
Bahasa Pemrograman
5
Bahasa Pemrograman
6
1
Kepala {================================== Dokumentasi Program meliputi: Informasi kegunaan program Siapa yang membuat Tanggal pembuatan Berapa kali direvisi dan tangggal berapa Informasi lain ======================================}
Priyanto
E-mail:
[email protected]
Struktur Program Pascal
2
Kepala PROCEDURE garis (c: char, n: byte); Var i: byte; BEGIN For i:= 1 to n do Write (c); Writeln; END; {Procedure garis}
PROGRAM nama_program; {Judul Program}
USES Crt; {DOS, printer, graph} CONST {deklarasi konstanta} PI = 3.14; TYPE {definisi tipe} Pecahan = real;
PROCEDURE . . . . . . . . BEGIN -------END;
VAR {deklarasi Variabel} Arus, tegangan: integer; Resistor: pecahan; {=Resistor: real} Struktur Program Pascal
Modul Program: • Procedure • Function
FUNCTION pangkat3 (. . . . . . . .) BEGIN -------END; 3
Struktur Program Pascal
4
Struktur Memori (RAM) 1 1 1 1 1 1 1 0
BEGIN {Program Utama} clrscr; writeln (……..); pangkat3(10); garis (‘=’,30); .......... END. {Program Utama}
0 1 1 1 1 1 1 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 1
1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 0
1 1 1 1 1 1 1 1
7 6 5 4 3 2 1 0
Data 8 Bit Struktur Program Pascal
5
Struktur Program Pascal
Alamat 6
1
Pascal Data Types Name
Type of Data
Variable Ranges
Examples
String
Holds Text
‘Yogyakarta'
Integer
Holds whole numbers
3, 6, 1024
Real
Holds Decimal Numbers
3.14, 503.2
Boolean
Holds True or False
TRUE, FALSE
Character
Holds a single character
'A', 'E'
Struktur Program Pascal
Data Type
Ukuran Memori (Byte)
Maximum Value
Integer
-32,768
32,767
LongInt
-2,147,483,648
2,147,487,647
ShortInt
-128
128
Real
2.9 x 10 E-39
1.7 x 10 E+38
7
Struktur Program Pascal
Tipe Data Numerik Integer Tipe
Minimum Value
8
Tipe Data Numerik Real
Jangkauan Nilai
Tipe
Ukuran Memori (Byte)
Jangkauan Nilai
Byte
1
0 .. 255
Shortint
1
-128 .. 127
Single
4
1.5E-45 .. 3.4E38
Integer
2
-32768 .. 32767
Double
8
5.0E-324 .. 1.7E308
Word
2
0 .. 65535
Extended
10
1.9E-4951 .. 1.1E4932
Longint
4
-2147483648 .. 2147463674 Struktur Program Pascal
9
Tipe Data Karakter & String
Struktur Program Pascal
Operator Precedence
Priority
Char: 1 karakter
Operation
String[10]: 10 karakter
First
* / DIV MOD
Boolean: True dan false
Second
+-
Struktur Program Pascal
10
11
Struktur Program Pascal
12
2
Operator Logika = equal to <> not equal to > greater than < less than >= greater than or equal to <= less than or equal to Struktur Program Pascal
www.elearning.uny.ac.id
13
Struktur Program Pascal
14
3
Simbol Flowchart AWAL dan AKHIR suatu aktivitas
Terminasi
Operator harus memasukkan Nilai secara interaktif (Keyboard)
Input Interaktif
Priyanto
E-mail:
[email protected]
1
Proses
Kondisi Logika
Hitung Luas
Berisi pertanyaan logika, dengan jawaban True atau False
Nilai A = 0?
Mulai Rapikan Tempat Tidur
Aktivitas Pagi
Kamar mandi penuh?
Tunggu
Warung buka?
Makan
C
Off-page Connector: Sambungan FC pada halaman yang berbeda Fungsi atau prosedur yang telah didefinisikan 4
Flowchart. oleh Priyanto
Mulai Rapikan Tempat Tidur Persiapan Mandi
Kamar mandi penuh?
Waktu cukup?
Mandi
Tunggu
Mandi Berangkat
Ganti Pakaian
Ganti Pakaian
Selesai
A Flowchart. oleh Priyanto
Bahasa Pemrograman
On-page Connector: Sambungan FC pada halaman yang sama
Aktivitas Pagi
Persiapan makan
Tunggu
2
A
Predefined Process
A
Persiapan Mandi
Masukkan Nilai radius
Flowchart. oleh Priyanto
3
Flowchart. oleh Priyanto
Selesai
Simbol Flowchart
Simbol Flowchart Proses atau isi informasi
Mulai
5
A Flowchart. oleh Priyanto
6
1
Aktivitas Pagi
A Persiapan makan
Tunggu
Warung buka?
Makan
Waktu cukup?
Berangkat Selesai Flowchart. oleh Priyanto
Bahasa Pemrograman
7
2
Jurusan Pendidikan Teknik Elektronika
PROGRAM nama_program; USES Crt; {DOS, printer, graph} CONST {deklarasi konstanta} TYPE {deklarasi tipe} VAR {deklarasi Variabel} PROCEDURE garis (c: char, n: byte); Var i: byte; BEGIN For i:= 1 to n do Write (c); Writeln; END; {Procedure garis} FUNCTION . . . . . . . . BEGIN - - - - - - - -; END;
Priyanto
BEGIN {Program Utama} clrscr; writeln (……..) garis (‘=’,30); .......... END. {Program Utama}
E-mail:
[email protected]
25 Sept 2006
Fuction & procedure 01
1
• Prosedur adalah merupakan subprogram
25 Sept 2006
Deklarasi Subprogram (modul program) • Procedure • Function
Program Utama
Fuction & procedure 01
• Procedure diawali dengan kata cadangan PROCEDURE di dalam deklarasi procedure
• Merupakan penerapan konsep program MODULAR, yaitu memecah program yang rumit menjadi subprogram- subprogram yang lebih sederhana.
• Procedure dipanggil dan digunakan di dalam blok program yang lainnya dengan menyebut judul Procedure-nya
• Untuk hal-hal yang sering dilakukan berulang-ulang, cukup ditulis sekali, dan dapat digunakan berkali-kali.
25 Sept 2006
Fuction & procedure 01
3
• Parameter yang dikirim dari modul utama ke procedure disebut parameter aktual.
• Proses pengiriman data lewat parameter aktual ke parameter formal disebut parameter passing. • Parameter aktual dan parameter formal harus memiliki tipe sama
Fuction & Procedure 01
4
• Bila nilai parameter formal di procedure tersebut berubah, tidak akan mempengaruhi nilai parameter aktual. • Pengiriman secara nilai merupakan pengiriman searah, yaitu dari parameter aktual ke parameter formal.
• Parameter passing: by value dan by reference Fuction & procedure 01
Fuction & procedure 01
• Bila parameter dikirim secara nilai, parameter formal di procedure akan berisi nilai yang dikirimkan yang kemudian bersifat lokal di procedure.
• Parameter yang ada dan dituliskan pada procedure disebut parameter formal.
25 Sept 2006
25 Sept 2006
2
5
25 Sept 2006
Fuction & procedure 01
6
1
Jurusan Pendidikan Teknik Elektronika
BEGIN clrscr;
PROGRAM Jumlah; PROCEDURE Hitung (X, Y, Z: Integer); Var V: Integer; Begin V := X + Y + Z; Writeln (‘ Nilai V = ‘, V); End; {Procedure Hitung}
A := 2; B := 5; C := 5; Hitung (A, B, C); END. Nilai V = 12 PROCEDURE Hitung (X, Y, Z: Integer); Var V: Integer Begin V := X + Y + Z; Writeln (‘ Nilai V = ‘, V); End; {Procedure Hitung}
Var A, B, C: Integer; BEGIN {Program Utama} clrscr; A := 2; B := 5; C := 5; Hitung (A, B, C); END. {Program Utama} 25 Sept 2006
Fuction & procedure 01
7
25 Sept 2006
Fuction & procedure 01
8
BEGIN Writeln (‘Pascal’);
Garis (‘*’,6) END.
Pascal PROCEDURE Garis (C: char, N: byte); Var i: byte; Begin For i:= 1 to N do Write (C); Writeln; End; 25 Sept 2006 Fuction & procedure 01
******
• Function hampir sama dengan procedure, tetapi harus dideklarasikan dengan tipenya. • Tipe deklarasi menunjukkan tipe hasil function Function Nama_fungsi (daftar parameter): type;
9
25 Sept 2006
FUNCTION Hitung (X, Y, Z: Integer): integer Var V: Integer Begin V := X + Y + Z; Hitung := V; End; {Function Hitung} Var A, B, C, D: Integer;
Fuction & procedure 01
Fuction & Procedure 01
10
BEGIN clrscr; A := 2; B := 5; C := 5; D := Hitung (A, B, C); Writeln (‘Nilai D = ‘, D); END.
Nilai D = 12
BEGIN {Program Utama} clrscr; A := 2; B := 5; C := 5; D := Hitung (A, B, C); Writeln (‘Nilai D = ‘, D); END. {Program Utama} 25 Sept 2006
Fuction & procedure 01
11
25 Sept 2006
FUNCTION Hitung (X, Y, Z: Integer): Integer Var V: Integer Begin V := X + Y + Z; Hitung := V; End; Fuction & procedure 01 12
2
Jurusan Pendidikan Teknik Elektronika FT UNY
24 July 2014
PROGRAM nama_program; USES Crt; {DOS, printer, graph} CONST {deklarasi konstanta} TYPE {deklarasi tipe} VAR {deklarasi Variabel} PROCEDURE garis (c: char, n: byte); Var i: byte; BEGIN For i:= 1 to n do Write (c); Writeln; END; {Procedure garis}
BEGIN {Program Utama} clrscr; writeln (……..) garis (‘=’,30); .......... END. {Program Utama}
Priyanto
E-mail:
[email protected]
24 July, 2014
Fuction & procedure 02: Pass by Reference
1
Parameter Yang Dikirim Dari Modul Utama Ke Procedure Disebut Parameter Aktual
Fuction & procedure 02: Pass by Reference
Fuction & procedure 02: Pass by Reference
3
Var A, B: Integer; BEGIN {Program Utama} A:= 10; B:= 20; tukar (A, B); writeln (‘A = ‘, A, ‘B = ‘, B); END. {Program Utama} PROCEDURE tukar (var X, Y: Integer); Var Z: Integer; BEGIN Z := X; X := Y; Y := Z; END; {Procedure tukar} Fuction & procedure 02: Pass by Reference
2
PROCEDURE tukar (var X, Y: Integer); Var Z: Integer; BEGIN Z := X; X := Y; Y := Z; END; {Procedure tukar}
24 July, 2014
Fuction & procedure 02: Pass by Reference
Parameter Aktual & Parameter Formal HARUS memiliki TIPE SAMA
24 July, 2014
Program Utama
Parameter Yang Ada Dan Dituliskan Pada Procedure Disebut Parameter Formal
BEGIN {Program Utama} A:= 10; B:= 20; tukar (A, B); writeln (‘A = ‘, A, ‘B = ‘, B); END. {Program Utama}
24 July, 2014
24 July, 2014
Deklarasi Subprogram (modul program) • Procedure • Function
5
Fuction & Procedure 02: Pass by Reference
4
PROCEDURE garis (c:char, n:byte); Var i: byte; BEGIN For i:= 1 to n do Write (c); Writeln; END; {Procedure garis}
PROCEDURE tukar ( var X, Y:Integer); Var Z: Integer; BEGIN Z := X; X := Y; Y := Z; END; {Procedure tukar}
BEGIN {Program Utama} clrscr; writeln (……..) garis (‘=’,30); END. {Program Utama}
BEGIN {Program Utama} A:= 10; B:= 20; tukar (A, B); writeln (‘A = ‘, A, ‘B = ‘, B); END. {Program Utama}
24 July, 2014
Fuction & procedure 02: Pass by Reference
6
1
Jurusan Pendidikan Teknik Elektronika FT UNY
Procedure Tukar Pass by Reference
24 July 2014
Procedure Tukar Pass by Value
BEGIN {Program Utama} A:= 10; B:= 20; tukar (A, B); writeln (‘A = ‘, A, ‘B = ‘, B); END. {Program Utama} PROCEDURE tukar (var X, Y: Integer); Var Z: Integer; BEGIN Z := X; X := Y; Y := Z; END; {Procedure tukar} 24 July, 2014
PROCEDURE tukar (X, Y: Integer); Var Z: Integer; BEGIN Z := X; X := Y; Y := Z; END; {Procedure tukar}
Fuction & procedure 02: Pass by Reference
Pass by value
7
Pass by reference
• Parameter formal akan berisi • Parameter formal akan berisi nilai yang dikirimkan yang kemudian bersifat lokal.
• Perubahan nilai parameter
nilai yang dikirimkan yang kemudian bersifat tidak lokal.
• Perubahan nilai parameter
formal, tidak mempengaruhi nilai parameter aktual.
formal, mempengaruhi nilai parameter aktual.
• Merupakan pengiriman satu
• Merupakan pengiriman dua
arah, yaitu dari parameter aktual ke parameter formal
24 July, 2014
arah, dari parameter aktual ke parameter formal dan sebaliknya
Fuction & procedure 02: Pass by Reference
BEGIN {Program Utama} A:= 10; B:= 20; tukar (A, B); writeln (‘A = ‘, A, ‘B = ‘, B); END. {Program Utama}
9
24 July, 2014
Fuction & procedure 02: Pass by Reference
8
FUNCTION Hitung (X, Y, Z: Integer): Integer Begin Hitung := X + Y + Z; End; {Function Hitung}
PROCEDURE Hitung (X, Y, Z: Integer, var H: Integer); Begin H := X + Y + Z; End; {Procedure Hitung}
BEGIN {Program Utama} clrscr; A := 2; B := 5; C := 5; D := Hitung (A, B, C); END. {Program Utama}
BEGIN {Program Utama} clrscr; A := 2; B := 5; C := 5; Hitung (A, B, C, D); END. {Program Utama}
24 July, 2014
Fuction & procedure 02: Pass by Reference
10
Var D: Integer; BEGIN {Program Utama} clrscr; A := 2; B := 5; C := 5; Hitung (A, B, C, D); END.
Priyanto
PROCEDURE Hitung (X, Y, Z: Integer, var H: Integer); Begin H := X + Y + Z; End; {Procedure Hitung} 24 July, 2014
Fuction & procedure 02: Pass by Reference
E-mail:
[email protected]
11
Fuction & Procedure 02: Pass by Reference
24 July, 2014
Fuction & procedure 02: Pass by Reference
12
2
Jurusan Pendidikan Teknik Elektronika
24 July 2014
Loop FOR FOR variabel := nilai_awal TO nilai_akhir DO Statemen; FOR variabel := nilai_awal TO nilai_akhir DO Begin Statemen1; Statemen2; Blok Statemen Statemen3; End;
Priyanto
E-mail:
[email protected]
24 July, 2014
Array
1
24 July, 2014
Contoh Implementasi FOR i := 1 TO 5 DO write (i); writeln; writeln (‘Selesai’);
Hasil
FOR i := 1 TO 5 DO x[i] := i + 2; writeln (x[i]); writeln (‘Selesai’);
Hasil
24 July, 2014
7 Selesai
Array
Non Array
X[1] := 10; X[2] := 20; X[3] := 30; X[4] := 40; X[5] := 50;
X1 := 10; X2 := 20; X3 := 30; X4 := 40; X5 := 50;
3
24 July, 2014
Array
4
Var X: array[1..100] of integer; Tipe data Array
Writeln (‘Nilai x1 = ‘, x1); Writeln (‘Nilai x2 = ‘, x2); Writeln (‘Nilai x3 = ‘, x3); End.
Array
Lima Variabel
Deklarasi Array
Var x1, x2, x3, x4, x5: integer; Begin Write (‘Nilai x1 = ‘); Readln (x1); Write (‘Nilai x2 = ‘); Readln (x2); Write (‘Nilai x3 = ‘); Readln (x3);
Array
Satu Variabel
Index Variabel
Variabel Non Array
24 July, 2014
2
Array vs Non Array
12345 Selesai
Array
Array
Index Array Nama Array
5
24 July, 2014
Array
6
1
Jurusan Pendidikan Teknik Elektronika
24 July 2014
Variabel Array: Contoh Implementasi
Variabel Array Var x: array[1..5] of integer; i : integer; Begin For i:= 1 to 5 do Begin Write (‘Nilai x ‘, I, ‘=‘); Readln (x[i]); End; For i:= 1 to 5 do Writeln (‘Nilai x ‘,i, ‘= ‘, x[i]); End. 24 July, 2014
Hasil: Nilai Nilai Nilai Nilai Nilai
x1 x2 x3 x4 x5
=2 =3 =4 =5 =6
Nilai Nilai Nilai Nilai Nilai
x1 x2 x3 x4 x5
=2 =3 =4 =5 =6
Array
7
Var x: array[1..5] of integer; i: integer; Begin For i:= 1 to 5 do Begin Write (‘Nilai x ‘, i); Readln (x[i]); End; For i:= 1 to 5 do x[i] := i + 3; For i:= 1 to 5 do Writeln (‘Nilai x ‘,i, ‘= ‘, x[i]); End. 24 July, 2014
Hasil: Nilai Nilai Nilai Nilai Nilai
x1 x2 x3 x4 x5
=2 =3 =4 =5 =6
Nilai Nilai Nilai Nilai Nilai
x1 x2 x3 x4 x5
=5 =6 =7 =8 =9
Array
8
Menghitung Rerata Const n = 5; Var x: array[1..n] of integer; i, sum: integer; rerata: real; Begin For i:= 1 to n do x[i] := i + 3; sum := 0; For i:= 1 to n do sum := sum + x[i]; rerata := sum/n; Writeln (‘Rerata = ‘, rerata);
Array Hasil
Rerata = 6
Sebagai Parameter Function/Procedure
End. 24 July, 2014
Array
9
Array dapat digunakan sebagai parameter by value atau by reference Program Penjumahan_Vektor; Uses Ctr; Type larik = array [1..5] of integer; Var x, y, z: larik
Array
Array
Array
10
Penjumlahan 2 Vektor Program vektor; uses crt; type larik = array[1..5] of integer; var a,b,c: larik; i: byte; Procedure Jumlah_vektor (x,y: larik; var z: larik); var i: byte; Begin for i:= 1 to 5 do z[i] := x[i] + y[i]; end;
Procedure jumlah_vektor (x,y: larik; var z: larik); Begin …… End;
24 July, 2014
24 July, 2014
11
24 July, 2014
Array
12
2
Jurusan Pendidikan Teknik Elektronika
24 July 2014
Penjumlahan 2 Vektor
Tugas
Begin {program utama} clrscr; for i:= 1 to 5 do a[i] := i; for i:= 1 to 5 do b[i] := i+1; jumlah_vektor (a,b,c);
baca_input (3, ‘Nilai Resistor’, resistor);
Procedure baca_input (n: byte; kalimat: teks; var r: larik);
for i:= 1 to 5 do writeln (c[i]); Readln; end. 24 July, 2014
Array
Array
13
24 July, 2014
Array
14
3
Jurusan Pendidikan Teknik Elektronika
24 July 2014
Cara:
• Meletakkan elemen dengan nilai paling besar pada posisi terakhir (posisi ke N), kemudian nilai paling besar kedua pada posisi N-1, dst. • Meletakkan nilai terkecil pada 1, nilai terkecil kedua diletakkan pada posisi 2, dst
Priyanto
E-mail:
[email protected]
24 July, 2014
Implementasi Array: Bubble Sort
1
24 July, 2014
Implementasi Array: Bubble Sort
2
Procedure BubbleSort (Var A: larik; N: integer); var I, J: integer; begin
Langkah ke 0: Baca vektor yang akan diurutkan Langkah ke 1: Kerjakan langkah 2 untuk I = 1 sampai N-1
for I := 1 to N-1 do for J : = 1 to N-I do
Langkah ke 2: Kerjakan langkah 3 untuk J = 1 sampai N-I
if A[J] > A[J+1] then
Langkah ke 3: Test apakah A[J] > A[J+1]?
Jika YA tukar kedua elemen ini
Tukarkan (A[J], A[J+1]) end;
Langkah ke 4: Selesai
Pengurutan Vektor: 24 July, 2014
Implementasi Array: Bubble Sort
3
Pengurutan Vektor:
24
23
56
45
12
Iterasi ke
A[1]
A[2]
A[3]
A[4]
A[5]
23
24
56
45
12
23
24
56
45
12
23
24
45
56
12
23
24
45
12
56
24 July, 2014
24 July, 2014
I=2
Implementasi Array: Bubble Sort
Implementasi Array: Bubble Sort
5
24 July, 2014
23
56
45
12
Implementasi Array: Bubble Sort
Iterasi ke
I=1
24
4
A[1]
A[2]
A[3]
23
24
45
23
24
45
12
56
23
24
45
12
56
23
24
12
45
56
Implementasi Array: Bubble Sort
A[4]
12
A[5]
56
6
1
Jurusan Pendidikan Teknik Elektronika
24 July 2014
Mulai
I := I+1
23
24
12
45
56
J := J+1
Tidak
23
24
12
45
A[J] > A[J+1] ?
56
Ya
I=3
Tukar A[J] dengan A[J+1]
23
12
24
45
56
I=4
12
23
24
45
56
Akhir
12
23
24
45
56
J = N-I ?
Tidak
Ya
I = N-1 ?
Tidak
Ya
Selesai
24 July, 2014
Implementasi Array: Bubble Sort
7
24 July, 2014
Implementasi Array: Bubble Sort
8
Materi Kuliah ini tersedia di http//elearning.uny.ac.id
Priyanto E-mail:
[email protected]
24 July 2014
Implementasi Array: Bubble Sort
Implementasi Array: Bubble Sort
9
2
Jurusan Pendidikan Teknik Elektronika
24 July 2014
Apa itu Record? • Adalah tipe data (baru) yang user defined, berisi elemen tipe data standar.
• Tidak seperti arrays, elemen record dapat berisi tipe data yang berbeda. Type Data_mahasiswa= record Nama: string[10]; NIM : String[10]; Nilai : integer; end; Var data: Data_mahasiswa;
Priyanto E-mail:
[email protected]
24 July, 2014
1
Record
NIM 02333 02334
Record
3
24 July, 2014
Record
4
Type Data_listrik = record tegangan: real; arus: real; resistor: real; end; Var listrik: data_listrik;
Begin for i:= 1 to n do begin write ('Nama : '); Readln (data.Nama); write ('NIM : '); Readln (data.NIM); write ('Nilai : '); Readln (data.Nilai); writeln; end;
Record
Record
Contoh Lain
Input Data Record Mahasiswa
24 July, 2014
2
Type Data_mahasiswa= record Nama: string[10]; NIM : String[10]; Nilai : integer; end; Var data: data_mahasiswa;
Nilai 90 80
• Baris pada setiap tabel disebut record • Elemen setiap Record disebut Field • Kumpulan beberapa record menjdi tabel. 24 July, 2014
Record
Contoh Record Mahasiswa
Field, Record, dan Tabel Nama Bambang Edi
24 July, 2014
Begin Clrscr; write (’Menghitung Arus’); Write (‘Nilai Tegangan = ‘); readln (listrik.tegangan) Write (‘Nilai Reasistor = ‘); readln (listrik.resistor) Listrik.arus := listrik.tegangan/listrik.resistor; Writeln (‘Nilai Arus = ‘, listrik.arus:8.2); Readln; End. 5
24 July, 2014
Record
6
1
Jurusan Pendidikan Teknik Elektronika
24 July 2014
Array of Record
Array of Record Type Data_mahasiswa= record Nama: string[10]; NIM : String[10]; Nilai : integer; end; tabel_mahasiswa = array [1..5] of Data_mahasiswa Var data: tabel_mahasiswa;
Data: tabel_mahasiswa Nama [1] Bambang [2] Edi
NIM 02333 02334
Nilai 90 80
• Data[1].nama Bambang • Data[1].nilai 90 • Data[2].nim 02334 24 July, 2014
Record
7
24 July, 2014
Begin for i:= 1 to n do with data[i] do begin write ('Nama : '); Readln (Nama); write ('NIM : '); Readln (NIM); write ('Nilai : '); Readln (Nilai); writeln; end; end;
Begin for i:= 1 to n do begin write ('Nama : '); Readln (data[i].Nama); write ('NIM : '); Readln (data[i].NIM); write ('Nilai : '); Readln (data[i].Nilai); writeln; end; Record
8
Record & Keyword With
Input Data Record Mahasiswa
24 July, 2014
Record
9
24 July, 2014
Record
10
Parameter Prosedur
Record & Array of Record Sebagai Argumen Function/Procedure
24 July, 2014
Record
Record
11
type data_mhs = record nim: string[10]; nama: string [10]; nilai: integer; end; larik_mhs = array[1..3] of data_mhs; var data: larik_mhs;
Procedure tukar (Var A, B: data_mhs); Var T: data_mhs; Begin T:= A; A:= B; B:= T; End; 24 July, 2014
Record
12
2
Jurusan Pendidikan Teknik Elektronika
24 July 2014
Parameter Prosedur
type data_mhs = record nim: string[10]; nama: string [10]; nilai: integer; nh: char; end; larik_mhs = array[1..3] of data_mhs;
baca_data(data,x);
var data: larik_mhs;
Procedure baca_data (var dat: larik_Mhs; n:byte); var i: byte; Begin for i:= 1 to n do begin write ('Nama : '); Readln (dat[i].Nama); write ('NIM : '); Readln (dat[i].NIM); write ('Nilai : '); Readln (dat[i].Nilai); end; end; 24 July, 2014
Record
13
24 July, 2014
Record
14
Silahkan anda latihan Record untuk beberapa contoh kasus
24 July, 2014
Record
Record
15
3
Jurusan Pendidikan Teknik Elektronika
24 July 2014
Analisis
Desain
Implementasi Pemrograman
Spesifikasi Software
• Menterjemahkan Structure Chart menjadi Function dan Procedure
• DFD • Spesiifikasi lain
Arsitektur Software
Priyanto E-mail:
[email protected]
24 July, 2014
Structured Development
Testing
Pengujian
• Spesifikasi lain • DFD diperhalus • Structure Chart 1
24 July, 2014
Structured Development
2
Pengembangan software • Tahap Analisis menghasilkan DFD (Data Flow Diagram) DFD terdiri dari DFD level 0, level 1, sampai level n Pemecahan DFD sampai level berapa (n), sampai mudah diimplementasikan dalam program.
• Transform Flow
• Transaction Flow
• Tahap Desain akan menghasilkan DFD yang lebih halus dan Structure Chart Apabila DFD sudah cukup, langsung dibuat structure chart-nya Pada tahap ini dibuat spesifikasi proses yang mendeskripsikan setiap bulatan proses pada DFD Structure Chart menggambarkan struktur pemanggilan Fungsi dan Prosedur dalam suatu program.
V
R
Baca Input Tegangan 3.1
Baca Input Resistor 3.2
• Tahap Implementasi, adalah pembuatan program • Tahap Testing: menguji per modul dan pengujian seluruh Structured Development
3
Hitung Arus 3.3
I
Tampilkan Hasil 3.4
I
Input User
Baca Pilihan User 1
Pilihan Hitung Arus Penentuan Transaksi 2
Pilihan Hitung Tegangan Pilihan Hitung Resistor
R
Proses Arus 3
Proses Tegangan 4
Proses Resistor 5
Hasil Arus
Hasil Tegangan
Hasil Resistor
Keduanya ada dalam satu program
program 24 July, 2014
Pilihan User
V
24 July, 2014
Structured Development
4
DFD Level 0 (Contex Diagram)
DFD Transform Flow: Dari DFD sampai Program
I, R
User
Penghitung Hukum Ohm
V
Menggambarkan Sistem sebagai bulatan tunggal dengan entitas yang terlibat
24 July, 2014
Structured Development
Structured Development
5
24 July, 2014
Structured Development
6
1
Jurusan Pendidikan Teknik Elektronika
24 July 2014
DFD Level 1
DFD Level 2
I
Incoming flow R
Menghitung Tegangan 1
V
R
I
Central Transform
Baca Resistor 1.1
R
Baca Arus 1.2
Hitung Tegangan 1.3
Outgoing flow
V
Tampilkan Tegangan 1.4
V
I
Perhatikan aliran data masuk dan keluar
24 July, 2014
Structured Development
7
24 July, 2014
Structured Development
8
Main Program
DFD Transaction & Transform Flow: Partisi DFD sampai Structure Chart
s” “Ar u
I
“R
es
V
Baca Input
Baca Input
Hitung Tegangan
Incoming flow R
I
24 July, 2014
I,R
is
V
to r”
R
Baca Resistor 1.1 Baca Arus 1.2
Central Transform R
Hitung Tegangan 1.3
Tampilkan Tegangan
Outgoing flow
V
Tampilkan Tegangan 1.4
V
I
Structured Development
9
24 July, 2014
Structured Development
10
Partisi Proses Arus (Lingkaran 3) DFD Hukum Ohm LEVEL 1
Pilihan User
Input User
Baca Pilihan User 1
Pilihan Hitung Arus Penentuan Transaksi 2
Pilihan Hitung Tegangan
Proses Arus 3
Proses Tegangan 4
DFD Proses Arus LEVEL 2 Hasil Arus
V
Hasil Tegangan
R Pilihan Hitung Resistor
Proses Resistor 5
Baca Input Tegangan 3.1
Baca Input Resistor 3.2
V Hitung Arus 3.3
Tampilkan Hasil 3.4
I
R
Hasil Resistor
Pilihan User
Input User
Baca Pilihan User 1
Pilihan Hitung Arus Penentuan Transaksi 2
Pilihan Hitung Tegangan Pilihan Hitung Resistor
24 July, 2014
Structured Development
Structured Development
11
24 July, 2014
I
Structured Development
Proses Arus 3
Proses Tegangan 4
Proses Resistor 5
Hasil Arus
Hasil Tegangan
Hasil Resistor
12
2
Jurusan Pendidikan Teknik Elektronika
24 July 2014
Partisi Proses Tegangan (Lingkaran 4)
Partisi Proses Resistor (Lingkaran 5) DFD Proses Resistor LEVEL 2
DFD Proses Tegangan LEVEL 2 I
Baca Input Arus 4.1
I Hitung Tegangan 4.3
Baca Input Resistor 4.2
R
V Tampilkan Hasil 4.4
V
V
R
Baca Input Arus 5.2
I Pilihan User
Input User
Baca Pilihan User 1
Proses Arus 3
Pilihan Hitung Arus Penentuan Transaksi 2
Hasil Arus
Proses Resistor 5
Input User
Penentuan Transaksi 2
Pilihan Hitung Tegangan Pilihan Hitung Resistor
Hasil Arus
Proses Tegangan 4
Proses Resistor 5
24 July, 2014
I
V
s Aru
V
to r
ngan
sis Re
‘=’,
n
Tampilkan Hasil
Baca Input Arus ‘=’,
Baca Input Tegangan
R
Hitung Resistor
Structured Development
Ungkapan_1 Ungkapan_2 Ungkapan_3 …. Ungkapan_n
Proses Resistor
Tega
to r I sis
‘=’, n
Hitung Arus
Proses Resistor 5
Hasil Arus
Hasil Tegangan
Hasil Resistor
14
CASE Ungkapan OF
R
Baca Input Tegangan
Proses Tegangan 4
Hasil Resistor
V
Baca Input Resistor
Pilihan Hitung Tegangan
Proses Arus 3
Statemen CASE-OF (Selector)
I,
Tampilkan Hasil
R
Hasil Tegangan
n3
I
R
I
Re
iha
V R,
Hitung Tegangan
Pil
Proses Arus
V
Baca Input Arus
V
Baca Input Resistor
n1
Proses Tegangan
I,R
R
Arus
Baca Pilihan User
iha
Tegangan
Pil
Pilihan 2
Piliha
Penentuan Transaksi 2
Pilihan Hitung Resistor
Main Program
r n Use
Baca Pilihan User 1
Pilihan Hitung Arus
Hasil Resistor
Proses Arus 3
Pilihan Hitung Arus
Pilihan User
Tampilkan Hasil 5.4
R
I
Input User
13
Baca Pilihan User 1
Hitung Resistor 5.3
Hasil Tegangan
Structured Development
Structure Chart
V
Pilihan User
Proses Tegangan 4
Pilihan Hitung Tegangan Pilihan Hitung Resistor
24 July, 2014
Baca Input Tegangan 5.1
Tampilkan Hasil
: Statemen 1; : Statemen 2; : Statemen 3; : Statemen n;
END;
n
Garis
24 July, 2014
Structured Development
15
24 July, 2014
Structured Development
16
Selamat Berlatih
24 July, 2014
Structured Development
Structured Development
17
3
Jurusan Pendidikan Teknik Elektronika FT UNY
• Masalah Besar membagi/memecah permasalahan tersebut menjadi beberapa bagian yang lebih kecil. • Menyelesaikan secara bertahap bagian demi bagian, baik secara sendiri maupun berkelompok, sehingga diperoleh solusi dari permasalahan yang besar tersebut.
Priyanto
E-mail:
[email protected]
Modul Program yang Efektif
1
Sebagai gambaran, kita diminta untuk “menyelesaikan” (baca: memakan) buah semangka sampai habis.
Modul program dapat berupa • Procedure dan/atau
• Memakannya satu persatu, sendiri atau bersamasama.
3
• Reusable adalah kunci pokok dalam pengembangan perangkat lunak, tema inilah yang mengilhami perancangan modul program dan perkembangan paradigma pengembangan perangkat lunak secara umum.
• Function.
Modul Program yang Efektif
4
• Setiap modul tersembunyi dengan yang lain • Modul harus dirancang agar informasi (prosedur dan data) yang berada di dalam modul tidak dapat diakses oleh oleh modul lain yang tidak memerlukan informasi tersebut
• Reusable bisa diperoleh bila menerapkan information hiding.
Modul Program yang Efektif
2
Program yang besar harus dipartisi menjadi beberapa modul yang mudah diselesaikan
• Langkah awal yang dilakukan adalah “mempartisi” (memotong) buah semangka menjadi beberapa bagian
Modul Program yang Efektif
Modul Program yang Efektif
5
Bahasa pemroframan: Modul Program yang Efektif
Modul Program yang Efektif
6
1
Jurusan Pendidikan Teknik Elektronika FT UNY
• Mengurangi kompleksitas
Independensi diukur dengan dengan dua kriteria kualitattif, yaitu: Cohesion dan Coupling.
• Mempermudah perubahan
• High cohesion (functional cohesion): modul hanya melakukan satu tugas dan memerlukan sedikit interaksi dengan modul lain dalam satu program.
• Lebih mudah diimplementasikan dan dapat dikerjakan secara paralel (Tim) • mudah membagi dalam tim, • mudah diubah,
• Low coupling: modul memiliki kopling antar modul yang lemah atau sebebas mungkin dengan modul yang lain (independen). Kopling tergantung pada kompleksitas antarmuka modul.
• perambatan kesalahan berkurang, dan • reusable bertambah. Modul Program yang Efektif
Tidak Baik
7
Baik
Tidak Baik
Procedure garis (x:byte,y:char); Procedure garis (x:byte, y:char); Begin Var i: byte; for i : = 1 to x do Begin write (y); for i : = 1 to x do writeln; write (y); End; writeln; End; {procedure garis }
Modul Program yang Efektif
Modul Program yang Efektif
9
8
Baik
Procedure pangkat_tiga (x: integer); Var z: integer; Begin z := x * x * x; writeln (’Hasil 1 = ‚’, z); buat_garis (10,'='); End;
Function pangkat_tiga (x: integer): integer; Var z: integer; Begin z := x * x * x; Pangkat_tiga := z; End; {function pangkat_tiga }
Modul Program yang Efektif
10
Priyanto
E-mail:
[email protected]
Modul Program yang Efektif
11
Bahasa pemroframan: Modul Program yang Efektif
2
Jurusan Pendidikan Teknik elektronika FT UNY
24 July, 2014
• Testing adalah proses eksekusi program yang bertujuan untuk menemukan kesalahan • Testcase yang baik dapat menemukan error yang belum ditemui sebelumnya.
Priyanto
E-mail:
[email protected]
24 July, 2014
Software Testing
1
24 July, 2014
2
Software Testing
Prinsip-prinsip Testing • Seluruh test harus sesuai dengan customer requirement
Analisis
• Dipersiapkan jauh sebelum mulai
Desain
Requirement Req. 1 Req. 2 Dst
• Testing harus dimulai “in the small” dan maju menuju testing “in the large”.
Testing Software sudah teruji sesuai dengan Spesifikasi
• Dilakukan oleh pihak ketiga
24 July, 2014
Software Testing
3
24 July, 2014
menghasilkan testcase.
• Black-box Testing
Software Testing
4
Metode pengujian yang menggunakan struktur kontrol desain prosedural untuk
• White-box Testing (Glass-box Testing)
Software Testing
Software Testing
White-box Testing
Testcase Design
24 July, 2014
Implementasi
5
24 July, 2014
Software Testing
6
1
Jurusan Pendidikan Teknik elektronika FT UNY
24 July, 2014
Basis Path Testing
White-box Testing • Menjamin seluruh independent path di dalam modul diuji minimal satu kali
• Adalah WB testing yang pertama kali diusulkan oleh Tom McCabe (1976)
• Menguji seluruh keputusan logika (True & False)
• Metode basis path memungkinkan testcase designer memperoleh ukuran kompleksitas lojik dari desain prosedural dan menggunakan ukuran ini sebagai pemandu untuk menentukan basis set execution path
• Mengeksekusi seluruh loop sesuai dengan batasan operasinya • Menguji struktur data internal untuk menjamin validitas
24 July, 2014
Software Testing
7
24 July, 2014
Black-box Testing
Software Testing
8
Black-box Testing Menemukan kesalahan dengan kategori:
• Memfokuskan pada kebutuhan fungsional program
• Fungsi-fungsi yang tidak benar
• Error pada struktur data atau akses database eksternal
• Bukan alternatif dari white-box testing, tetapi complementer
• Error Antarmuka, performa • Error inisialisasi dan terminasi
24 July, 2014
Software Testing
9
24 July, 2014
Software Testing
10
Black-box Testing Unit Testing Integration Testing Validation Testing
• Menguji beberapa aspek sistem dengan sedikit memperhatikan struktur lojik internal program
Alpha Testing (seperti test drive di pabrik mobil) • Developer’s Site by Customer • Pada lingkungan yang terkendali
• Digunakan untuk menunjukkan fungsi program beroperasi: Input diterima Output benar
Beta testing • Customer’s sites by end user • “live” application pada lingkungan yang tidak bisa dikendalikan developer • User melaporkan hasil ke developer
System Testing 24 July, 2014
Software Testing
Software Testing
11
24 July, 2014
Software Testing
12
2
Jurusan Pendidikan Teknik elektronika FT UNY
24 July, 2014
Test case
Driver
Materi Kuliah ini tersedia di http//elearning.uny.ac.id Hasil Pengujian
-------
Modul Yang diuji
Priyanto Stub
E-mail:
[email protected]
Stub
Stub: dummy program
24 July, 2014
Software Testing
Software Testing
13
24 July, 2014
Software Testing
14
3
Jurusan Pendidikan Teknik Elektronika
24 July 2014
• Transform Flow
Incoming flow R
Baca Resistor 1.1
I
Baca Arus 1.2
Central Transform R
• Transaction Flow
Pilihan User
Hitung Tegangan 1.3
Pilihan Hitung Arus
Outgoing flow
V
Tampilkan Tegangan 1.4
V
Input User
Baca Pilihan User 1
Penentuan Transaksi 2
Pilihan Hitung Tegangan Pilihan Hitung Resistor
I
Priyanto
Proses Arus 3
Hasil Arus
Proses Tegangan 4
Proses Resistor 5
Hasil Tegangan
Hasil Resistor
E-mail:
[email protected]
Keduanya ada dalam satu program 24 July, 2014
Transaction Flow
Incoming flow R
Central Transform
Baca Resistor 1.1
I
1
R
Baca Arus 1.2
Hitung Tegangan 1.3
V
Transaction Flow
Pilihan User
I
Input User
Baca Pilihan User 1
Penentuan Transaksi 2
to r”
s”
is
I
es
“Aru
“R
V
V
I,R
24 July, 2014
Hitung Tegangan
Transaction Flow
3
24 July, 2014
DFD Proses Tegangan LEVEL 2
R
I
Baca Input Resistor 3.2
Tampilkan Hasil 3.4
I
R R
Pilihan User
Input User
Baca Pilihan User 1
Pilihan Hitung Arus Penentuan Transaksi 2
Pilihan Hitung Tegangan Pilihan Hitung Resistor
24 July, 2014
Transaction Flow
Transaction Flow
Baca Input Arus 4.1
I Hitung Tegangan 4.3
I
Proses Arus 3
Proses Tegangan 4
Proses Resistor 5
4
Partisi Proses Tegangan (Lingkaran 4)
V Hitung Arus 3.3
Hasil Resistor
Transaction Flow
DFD Proses Arus LEVEL 2 Baca Input Tegangan 3.1
Proses Resistor 5
Hasil Tegangan
Tampilkan Tegangan
Partisi Proses Arus (Lingkaran 3)
V
Hasil Arus
Proses Tegangan 4
Pilihan Hitung Tegangan Pilihan Hitung Resistor
R
Baca Input
Proses Arus 3
Pilihan Hitung Arus
V
Main Program
Baca Input
2
DFD Hukum Ohm LEVEL 1
Outgoing flow Tampilkan Tegangan 1.4
24 July, 2014
Baca Input Resistor 4.2
Tampilkan Hasil 4.4
V
R
Hasil Arus Pilihan User
Hasil Tegangan Input User
Baca Pilihan User 1
Pilihan Hitung Arus Penentuan Transaksi 2
Pilihan Hitung Tegangan Pilihan Hitung Resistor
Hasil Resistor
5
24 July, 2014
V
Transaction Flow
Proses Arus 3
Proses Tegangan 4
Proses Resistor 5
Hasil Arus
Hasil Tegangan
Hasil Resistor
6
1
Jurusan Pendidikan Teknik Elektronika
24 July 2014
Partisi Proses Resistor (Lingkaran 5)
Structure Chart
DFD Proses Resistor LEVEL 2
Pilihan User
Input User
Baca Pilihan User 1
Main Program
Hasil Resistor
n3
Baca Input Resistor
Baca Input Tegangan
Hitung Arus
‘=’, n
‘=’,
Baca Input Arus
Tegangan
I
V
s
Tampilkan Hasil
Baca Input Tegangan
Hitung Resistor
Tampilkan Hasil
n ‘=’,
Garis
Hasil Resistor
7
Aru
V
to r
Tampilkan Hasil
ngan
sis
Hitung Tegangan
n
Baca Input Arus
Tega
to r I sis
Transaction Flow
Baca Input Resistor
Hasil Tegangan
R
Proses Resistor 5
Hasil Arus
R V
Proses Tegangan 4
Proses Resistor
I,
Proses Arus 3
Proses Arus R
I
Pilihan Hitung Resistor
iha
V R,
Pilihan Hitung Tegangan
Pil
I
Pilihan Hitung Arus Penentuan Transaksi 2
n1
Proses Tegangan V
Input User
24 July, 2014
Baca Pilihan User
I Pilihan User
iha
Hasil Tegangan
Proses Resistor 5
R
R
Baca Pilihan User 1
r
Re
R
n Use
Pil
Tampilkan Hasil 5.4
Arus
Hitung Resistor 5.3
V
I
Piliha
I,R
Baca Input Arus 5.2
V
Hasil Arus
Proses Tegangan 4
Pilihan Hitung Tegangan Pilihan Hitung Resistor
Pilihan 2
Baca Input Tegangan 5.1
Re
V
Proses Arus 3
Pilihan Hitung Arus Penentuan Transaksi 2
24 July, 2014
Transaction Flow
8
Statemen CASE-OF (Selector) CASE Ungkapan OF Ungkapan_1 Ungkapan_2 Ungkapan_3 …. Ungkapan_n
: Statemen 1; : Statemen 2; : Statemen 3; : Statemen n;
END;
24 July, 2014
Transaction Flow
Transaction Flow
9
2