Bambang Heru S Departemen Teknik Kimia Universitas Indonesia

dokumen-dokumen yang mirip
Bambang Heru Susanto Departemen Teknik Kimia Universitas Indonesia

Algoritma Pemrograman

Algoritma Pemrograman

Array, Record, sorting : Elektro Unud (MSU) Page 1 of 13

Pertemuan 4 ELEMEN-ELEMEN BAHASA PEMROGRAMAN

Teori Algoritma. Struktur Algoritma

MODUL PRAKTIKUM PERCABANGAN DAN PENGULANGAN

Algoritma Pemrograman

Pengantar dalam Bahasa Pemrograman Turbo Pascal Tonny Hidayat, S.Kom

STRUKTUR DASAR ALGORITMA

Universitas gunadarma. pascal. Bab 4- bab 10. Hana Pertiwi S.T

Pertemuan Ke-2 (Teks Algoritma) Rahmady Liyantanto. S1 Teknik Informatika-Unijoyo

SATUAN ACARA PERKULIAHAN MATA KULIAH PEMROGRAMAN PASCAL * (TK) KODE / SKS: KK /2 SKS

Algoritma dan Struktur Data I Mia Fitriawati, S.Kom, M.Kom

Contoh soal Struktur Program Pascal (Seleksi tingkat propinsi TOKI 2004)

Pemrograman Prosedural PENDAHULUAN. Tim Pengajar KU1071 Sem

BAB I TUJUAN DAN LANDASAN TEORI

KONSEP DASAR BAHASA PASCAL

VARIABEL, TIPE DATA, KONSTANTA, OPERATOR DAN EKSPRESI. Pemrograman Dasar Kelas X Semester 2

Pertemuan 3 Penyeleksian Kondisi dan Perulangan

menunjukkan tipe hasil dari fungsi. sqr, succ dan sebagainya. buat sendiri.

Array (Tabel) Tim Pengajar KU1071 Sem /11/3 TW/KU1071 1

ALGORITMA (KOMPUTER) : ATURAN PENULISAN DAN STRUKTUR DASARNYA

Pengantar dalam Bahasa Pemrograman Turbo Pascal

Algoritma dan Pemrograman

Struktur Data. Belajar Struktur Data Menggunakan Pascal Pertemuan-1

Algoritma & Pemrograman 1. Muhamad Nursalman Pendilkom/Ilkom Universitas Pendidikan Indonesia

Bab 1 Algoritma dan Pemrograman Tersruktur

LATIHAN UTS Tim Pengajar KU1071 Sem

Dasar Komputer & Pemrograman 2A

TIPE, NAMA, DAN NILAI

BAB I PENGENALAN STRUKTUR DATA DAN ALGORITMA

JENIS-JENIS DATA DAN STATEMEN INPUT OUTPUT

OPERASI STRING. Delete(var s:string;index:integer;count:integer);

ARRAY. contoh : A[1] := 10; var A : array[1..10] of integer; A[nomer_indeks]

PROCEDURE DAN FUNCTION PROCEDURE. Parameter dalam Prosedur: C/: PROGRAM CONTOH_2; VAR p,l,t,vol,panj : real;

BAB I ALGORITMA DAN FLOWCHART

Subprogram (dalam Bahasa C++ + Flowchart)

IF32222 STRUKTUR DATA TIPE DATA. Oleh : Andri Heryandi, M.T.

Pertemuan 3 Penyeleksian Kondisi

Modul 1 Pengantar Bahasa Pascal

Pertemuan 3 Prosedur dan Fungsi

ALGORITMA DAN STRUKTUR DATA 1

Perulangan Muh. Izzuddin Mahali, M.Cs. Pertemuan 3. Algoritma dan Struktur Data. PT. Elektronika FT UNY

Algoritma dan Struktur Data

Algoritma Pemrograman

Algoritma Pemrograman

Modul I. Modul Praktikum Bahasa Pemrograman Pascal

Algoritma dan Pemrograman Bab II Dev Pascal, Variabel, Tipe Data. Adam Mukharil Bachtiar, S.Kom. Universitas Komputer Indonesia

FUNGSI. Blok fungsi juga diawali dengan kata cadangan Begin dan di akhiri dengan kata cadangan End dan titik koma.

Konstruksi Dasar Algoritma

SUB PROGRAM : PROSEDUR & FUNGSI. Konsep Pemrograman

Algoritma dan Struktur Data

Algoritma Pemrograman I

BAB 6 Array Dua Dimensi

PEMBAHASAN KHUSUS TIPE DATA LANJUTAN

Minggu III STRUKTUR PEMILIHAN (KONTROL PROGRAM)

JENIS DATA SEDERHANA & INPUT/OUTPUT DATA

Algoritma Pemrograman

PHP (HYPERTEXT PREPROCESSOR)

Teori Algoritma TIPE DATA

PERKEMBANGAN PASCAL. Pascal adalah bahasa tingkat tinggi ( high level language) yang orientasinya pada segala tujuan

PROCEDURE. Bentuk Umum : PROGRAM judul_program ; PROCEDURE judul_prosedur ; Begin Statement prosedur ; End ; Begin Statement program utama ; end.

KONSEP DASAR BAHASA PASCAL

ALGORITMA PERULANGAN

MODUL 3 ALGORITMA PEMROGRAMAN

Procedure. Pertemuan 10 Algoritma Pemrograman

1. Kompetensi Mengenal dan memahami notasi-notasi algoritma yang ada.

Algoritma Pemrograman

Bab 2 DASAR-DASAR ALGORITMA

ARRAY (LARIK) Altien Jonathan Rindengan, S.Si., M.Kom.

BAB IV STRUKTUR PROGRAM Struktur program pada dasarnya tersusun 3 struktur program utama yaitu : a. Struktur Berurutan (Sequence Structure) b.

PROSEDUR DAN FUNCTION

CCH1A4 / Dasar Algoritma & Pemrogramanan

SMA SANTO PAULUS PONTIANAK

Belajar itu, Tidak harus menunggu materi dari guru Inisiatif Mencari itulah BELAJAR.

MODUL 1. Struktur Bahasa PASCAL secara umum

P A S C A L D A S A R

Algoritma Pemrograman

PENCARIAN BERUNTUN (SEQUENTIAL SEARCHING)

Algoritma Pemrograman

Indentifier, Keywords, Variable, Tipe Data dan Operator. Ramos Somya, S.Kom., M.Cs.

PENGULANGAN Bagian 1 : Notasi. Tim Pengajar KU1071 Sem

Pertemuan 2 Operasi String

STRUKTUR KENDALI. Memanfaatkan struktur kendali untuk kasus komputasi

MODUL PRAKTIKUM ALGORITMA PEMROGRAMAN TEKNIK INFORMATIKA

Tipe Data dan Operator dalam Pemrograman

OPERASI PERNYATAAN KONDISI

Algoritma Pemrograman

KONSEP DASAR BAHASA PASCAL

Subprogram. Definisi

TPI4202 e-tp.ub.ac.id. Lecture 5

PROSEDUR DAN FUNGSI. Altien Jonathan Rindengan, S.Si., M.Kom

Tipe Data, Nama, Nilai. Chapter 4

- KONSEP MODULAR Pengertian Konsep Modular memecah program ke dalam modul-modul. Contoh modul yang sering digunakan adalah : Prosedur & Fungsi

Pengenalan Pascal. Sejarah Singkat Pascal

Algoritma Pemrograman

Sesi/Perkuliahan ke: I

SOAL DAN JAWABAN UTS PEMROGRAMAN DASAR KELAS X

Outline. Ekuivalensi Notasi Algoritmik Dengan ETNA. Struktur Umum

Transkripsi:

Pascal (1) Bambang Heru S Departemen Teknik Kimia Universitas Indonesia Intro Pascal Contoh Program Pascal program Hallo; (* Program untuk menampilkan tulisan Hallo, World di layar *) i:integer; writeln( Hallo, World ); end. 1

Intro Pascal program Hallo; program menandai awal dari program yang bernama Hallo (* Program untuk menampilkan tulisan Hallo, World di layar *) Bagian yang berada dalam (* dan *) merupakan komentar dan tidak akan dieksekusi pada saat kompilasi maupun runtime. Contoh komentar yang lain : { Ini juga komentar} Intro Pascal Kata kunci untuk penanda iabel apa saja yang akan digunakan dalam program i : integer; Deklarasi iabel, sebelum dapat dipakai, iabel harus dideklarasikan terlebih dahulu. Cara pendeklarasian dijelaskan kemudian Penanda bagian awal blok algoritma program 2

Intro Pascal writeln( Hallo, World ); Prosedur untuk menulis ke layar. Prosedur akan dijelaskan kemudian end. Akhir Blok Algoritma Program Identifier Identifier : nama pengenal iabel, kostanta, nama fungsi, atau prosedur. Penulisan identifier harus diawali A..Z atau a..z atau _ Pascal tidak case sensitive 3

Data Nilai yang digunakan dalam program Jenis Konstanta Data yang nilainya didefinisikan sekali dan tidak dapat diubah ubah Variabel Data yang nilainya dapat diubah - ubah Tipe Data Tipe Data ialah representasi suatu data dalam komputer. Tiap tipe memiliki beberapa atribut : Nama Integer, float, character, string Domain harga [A..Z, a..z, 0..9] 4

Tipe Data Cara penulisan Literal 233, a, hallo Operator +,-,=,*,/ Data pada Pascal Deklarasi Data Konstanta Const <nama> = <nilai> Variabel Var <nama> : <tipe> 5

Tipe Data pada Pascal integer real boolean char string Integer Deklarasi numofpoint : integer; i, j : integer; Operator +,-,*,/,div,mod,=,<>,<,> 6

Real Deklarasi kecepatan : real; Suhu : real; Operator +,-,*,/,=,<>,<,> Boolean Deklarasi found : boolean; Operator and, or, not, xor 7

char Deklarasi menu : char; Operator =,<> string Deklarasi nama : string; Operator +,=,<> 8

Assignment Assignment ialah mengisi suatu data dengan nilai Contoh x = 5; artinya ialah mengassign 5 sebagai nilai dari iabel x Assignment di Pascal x := 5; Input / Output Input Nilai yang dimasukkan user untuk kemudian digunakan di dalam program Dalam Pascal read(); readln(); 9

Input / Output Output Nilai yang dihasilkan program dan ditampilkan ke layar Dalam Pascal write(); writeln(); Input Read read(x); Readln readln(x); 10

Output Write write( Hallo ); Write ( Hallo ); write( Hallo,nama); Writeln writeln( Hallo ); writeln(nama); writeln( Hallo, nama); Input / Output Contoh Program program IO; (* program yang menerima masukan nama dan umur lalu menuliskannya ke layar *) nama : string; umur : integer; write('masukkan nama Anda : '); read(nama); write('masukkan usia Anda : '); read(umur); writeln ('----Masukan yang didapat----'); writeln ('Nama Anda : ', nama); writeln ('Usia Anda : ', umur); writeln ('Tulis dalam satu baris'); writeln ('Nama Anda : ', nama, ' - usia Anda : ', umur); end. 11

Pascal (2) Bambang Heru S Departemen Teknik Kimia Universitas Indonesia Percabangan Pemilihan blok algoritma yang akan dieksekusi pada saat program berjalan. Karena program tidak mungkin berjalan lurus saja dari atas sampai ke bawah. 12

Percabangan Mengevaluasi sebuah ekspresi boolean Struktur percabangan If Then If Then Else Case If Then Pola : if x then y Arti : jika kondisi x terpenuhi maka lakukan aksi y Pascal if x = 1 then writeln(x); if not found then writeln( kosong ); 13

If - Then program ifthen; a : integer; write( Masukkan integer : ); readln(a); if a>=0 then writeln ( masukan positif ); end. If Then - Else Pola : if x then y else z Arti : jika kondisi x terpenuhi maka lakukan aksi y jika tidak maka lakukan aksi z Pascal if x = 1 then writeln(x) else writeln( x bukan angka 1 ); if not found then writeln( kosong ) else writeln( ketemu ); 14

If Then - Else program ifthenelse; a : integer; write( Masukkan integer : ); readln(a); if (a>=0) then writeln ( masukan positif ) else writeln ( Masukan negatif ); end. Perhatikan sebelumelse tidak ada titik koma Case Pascal case x of 0 : hari := Minggu ; 1 : hari := Senin ; 2 : hari := Selasa ; 3 : hari := Rabu ; 4 : hari := Kamis ; 5 : hari := Jumat ; 6 : hari := Sabtu ; end; 15

Case Arti : jika x bernilai 0 maka assign iabel hari dengan nilai Minggu jika bernilai 1 maka assign iabel hari dengan nilai Senin, dst Penggunaannya sama dengan depend on Buat program yang menerima masukan integer[1..7] yang mencetak nama hari sesuai masukan, jika masukan berbeda, maka tampilkan pesan kesalahan Solusi program conditional; (* Contoh penggunaan conditional branch *) angkahari : integer; write ( Masukkan Angka 1..7 : '); read (angkahari); case angkahari of 1 : writeln('minggu ); 2 : writeln('senin ); 16

Solusi (Lanjutan) 3 : writeln( 'Selasa ); 4 : writeln( 'Rabu ); 5 : writeln( 'Kamis ); 6 : writeln( 'Jumat ); 7 : writeln( 'Sabtu ); else writeln( pesan kesalahan ); end; end. Tambahan Untuk memngevaluasi banyak kasus dapat juga menggunakan if - then else bersarang (nested) Contoh if (angkahari = 1) then writeln( Minggu ) else if angkahari = 2 then writeln ( Senin ) else if 17

Blok Instruksi Penggunaan Blok instruksi untuk mengelompokkkan > 1 aksi. Contoh if a>= 0 then writeln( Masukan Positif'); writeln( Karena Masukan lebih dari 0 ); Blok Program Seharusnya if a>= 0 then end; writeln( Masukan Positif'); writeln( Karena Masukan lebih dari 0 ); 18

Perulangan Melakukan aksi yang sama berulang ulang. Struktur For do While Repeat - until Perulangan Contoh kasus : Faktorial. Buat program yang menerima integer(n) dan menghasilkan N!. N! = 1 -> (N = 1) N * (N - 1)! -> untuk n lainnya 19

For - do program faktorial; a, i, N : integer; write ( Masukkan N : ); readln(n); a := 1; for i:=1 to N do a := a * i; writeln(n,! =, a); end. While program Faktorial2; i, a, N : integer; i := 1; a := 1; write ( Masukkan N : ); readln(n); while i <= N do a := a * i; i := i + 1; end; writeln(n,! =, a); end. 20

Repeat - Until program Faktorial3; i, a, N : integer; i := 1; a := 1; write ( Masukkan N : ); readln(n); repeat a := a * i; i := i + 1; until i >= N; writeln(n,! =, a); end. Penggunaan for Digunakan jika kita ingin melakukan aksi yang sama untuk setiap nilai pencacah. Misalnya untuk menginisialisasi atau untuk mengisi array. Array akan dijelaskan kemudian. 21

Penggunaan While Struktur ini biasanya digunakan jika kita ingin mencari suatu nilai untuk kemudian digunakan, atau ingin melakukan aksi hanya sampai kondisi tertentu terpenuhi saja, sehingga tidak perlu melakukannya terhadap sisanya. Penggunaan While Do paling sering untuk algoritma search, contohnya pada fungsi yang mengembalikan nilai boolean apakah ada suatu nilai x dalam array. Pengguaan Repeat - Until Struktur ini penggunaannya hampir sama dengan While Do, tetapi untuk menggunakannya kita harus memastikan bahwa untuk lelaran(pass) pertama kondisi pasti belum dipenuhi. Salah satu peggunaan struktur ini ialah pada desain menu. Menu minimal ditampilkan satu kali pada eksekusi program. 22

Pemilihan Struktur Loop Pada contoh sebelumnya struktur loop yang tepat ialah For do. Karena operasi perkalian dilakukan untuk setiap nilai i, dari 1 sampai N (nilai masukan). Type Data (2) Array Data yang mengacu kepada sekumpulan elemen bertipe sama yang dikenali indeksnya Record / Tipe Bentukan Tipe bentukan ialah tipe data yang dibentuk dari satu atau lebih tipe data dasar atau tipe record lain yang sudah didefinisikan 23

Array Deklarasi Array arrint : array [1..10] of integer; arrint2 : array [ A.. J ] of integer; Array Cara pengaksesan elemen array arrint[1] := 2; artinya mengassign 2 ke array arrint yang indeksnya 1. x := arrint[ C ]; artinya mengassign nilai array yang berindex c ke iabel x. 24

Contoh Penggunaan Array program cobaarray; tab : array [1..5] of integer; i : integer; tab[1] := 5; tab[2] := 4; tab[3] := 3; tab[4] := 2; tab[5] := 1; write('masukkan integer[1..5] <- '); read (i); if (i > 0) and (i <= 5) then writeln ('Isi tab[', i, '] : ', tab[i]) else writeln ('masukan tidak valid'); end. Contoh Kasus Modifikasi program conditional. Gunakan array untuk menyimpan nama hari. Hint : Masukan yang diterima (misalnya iabelindeks) disimpan sebagai indeks dari array. Lalu cetak array yang berindeks masukan tersebut. 25

Solusi program conditional2; arrhari : array [1..7] of string; idx : integer; arrhari[1] := Minggu ; arrhari[2] := Senin ; arrhari[3] := Selasa ; arrhari[4] := Rabu ; arrhari[5] := Kamis ; arrhari[6] := Jumat ; arrhari[7] := Sabtu ; Solusi(Lanjutan) writeln( Masukkan indeks 1..7 : ); readln(idx); writeln ( Hari ini hari + arrhari[idx]); end. 26

Tipe Bentukan Tipe Bentukan Diturnkan dari tipe dasar. Memudahkan pengelolaan data Deklarasi type nama = string; namadepan, namabelakang : nama; Record Mahasiswa memiliki nama, NIM, dan nilai. dapat disimpan dalam satu iabel. Contoh type mahasiswa = record nama : integer; NIM : string; nilai : char; end; 27

Record Cara pengaksesan Jika mhs1 adalah iabel yang bertipe mahasiswa maka elemennya diakses dengan : mhs1.nama mhs1.nim mhs1.nilai Contoh Program program kuadranpoint; type point = record x : integer; {absis} y : integer; {ordinat} end; p : point; kuadran : integer; writeln ('Masukkan absis p'); readln (p.x); writeln ('Masukkan ordinat p'); readln (p.y); 28

Contoh Program(Lanjutan) if (p.x > 0) and (p.y > 0) then kuadran := 1 else if (p.x < 0) and (p.y > 0) then kuadran := 2 else if (p.x < 0) and (p.y < 0) then kuadran := 3 else if (p.x > 0) and (p.y < 0) then kuadran := 4 else kuadran := 0; writeln ('Point (', p.x, ',', p.y, ') berada di kuadran ', kuadran); end. Pascal (3) Bambang Heru S Departemen Teknik Kimia Universitas Indonesia 29

Type Data (2) Array Data yang mengacu kepada sekumpulan elemen bertipe sama yang dikenali indeksnya Record / Tipe Bentukan Tipe bentukan ialah tipe data yang dibentuk dari satu atau lebih tipe data dasar atau tipe record lain yang sudah didefinisikan Array Deklarasi Array arrint : array [1..10] of integer; arrint2 : array [ A.. J ] of integer; 30

Array Cara pengaksesan elemen array arrint[1] := 2; artinya mengassign 2 ke array arrint yang indeksnya 1. x := arrint[ C ]; artinya mengassign nilai array yang berindex c ke iabel x. Contoh Penggunaan Array program cobaarray; tab : array [1..5] of integer; i : integer; Begin for i:=1 to 5 do tab[i] := 6-i; write('masukkan integer[1..5] <- '); read (i); if (i > 0) and (i <= 5) then writeln ('Isi tab[', i, '] : ', tab[i]) else writeln ('masukan tidak valid'); end. 31

Tipe Bentukan Tipe Bentukan Diturunkan dari tipe dasar. Memudahkan pengelolaan data Deklarasi type nama = string; namadepan, namabelakang : nama; Record Mahasiswa memiliki nama, NIM, dan nilai. dapat disimpan dalam satu iabel. Contoh type mahasiswa = record nama : integer; NIM : string; nilai : char; end; 32

Record Cara pengaksesan Jika mhs1 adalah iabel yang bertipe mahasiswa maka elemennya diakses dengan : mhs1.nama mhs1.nim mhs1.nilai Contoh Program program kuadranpoint; type point = record x : integer; {absis} y : integer; {ordinat} end; p : point; kuadran : integer; writeln ('Masukkan absis p'); readln (p.x); writeln ('Masukkan ordinat p'); readln (p.y); 33

Contoh Program(Lanjutan) if (p.x > 0) and (p.y > 0) then kuadran := 1 else if (p.x < 0) and (p.y > 0) then kuadran := 2 else if (p.x < 0) and (p.y < 0) then kuadran := 3 else if (p.x > 0) and (p.y < 0) then kuadran := 4 else kuadran := 0; writeln ('Point (', p.x, ',', p.y, ') berada di kuadran ', kuadran); end. SubProgram Untuk memecah-mecah program. Subprogram Prosedur Fungsi 34

Prosedur Sederetan instruksi algoritmik yang memiliki nama, dan akan memberikan efek neto yang dapat dilihat dengan membandingkan keadaan awal dan keadaan akhir. Prosedur Intinya : prosedur ialah kumpulan beberapa aksi untuk mengubah status program menjadi status lainnya. Untuk menghemat space jika aksi-aksi itu sering dilakukan. Prosedur untuk menuliskan teks ke layar writeln( Hello, World! ); Prosedur untuk membaca masukan readln(x); 35

Prosedur Contoh procedure tulisisiarray; end; i := integer; for i:=1 to N do writeln(tab[i]); Prosedur Variabel : Global vs Lokal Nilai iabel ditentukan oleh lingkup dimana ia dideklarasikan dan diakses. 36

Contoh Program program mahasiswa; type mhs = record nama : string; nilai : char; end; mhs1 : mhs; Chr : char; Contoh Program procedure inputmhs; Chr : char; Str : string; write('nama : '); readln(str); mhs1.nama := Str; write('nilai : '); readln(chr); mhs1.nilai := Chr; end; 37

Contoh Program procedure cetakmhs; writeln ('Nama : ', mhs1.nama); writeln ('Nilai : ', mhs1.nilai); end; writeln('meminta masukan mahasiswa'); inputmhs; writeln('data yang didapat'); write('nilai (sekali lagi) : '); readln(chr); cetakmhs; end. Prosedur Parameter Perhatikan kembali Writeln( Hello, World! ); Parameter berguna untuk menghindari kesalahan pada penggunaan iabel global. 38

Prosedur Contoh procedure cetakmhs(inputmhs : mhs); writeln ('Nama : ', mhs.nama); writeln ('Nilai : ', mhs.nilai); end; Cara memanggil cetakmhs(mhs1); cetakmhs(mhs2); Contoh Program Modifikasi program mahasiswa. Gunakan prosedur dengan parameter. Lalu tambah beberapa iabel yang bertipemhs 39

Prosedur Parameter : Formal vs Aktual Parameter formal yaitu parameter yang ditulis pada saat deklarasi. Parameter aktual yaitu parameter yang ditulis ketika memanggil prosedur. Prosedur Parameter : input, output, input/output Input : diperlukan oleh prosedur untuk berjalan. Output : parameter yang nilainya dihasilkan oleh prosedur. Input/output : diperlukan oleh prosedur kemudian nilainya diubah didalam prosedur lalu nilainya yang berubah itu dikembalikan oleh program. 40

Prosedur Parameter : pass by value vs pass by reference By value : yang diberikan ke parameter adalah nilai dari tipe parameter. By reference : yang diberikan ke parameter ialah referensi dari tipe parameter Prosedur Mudahnya By value : nilainya tidak akan berubah meskipun didalam prosedur diubah By reference : nilainya dapat diubah dari dalam prosedur 41

Prosedur Jadi Pass by value digunakan untuk parameter input Pass by reference digunakan untuk parameter output dan input/output Prosedur Pass Parameter di Pascal procedure coba(a : integer); procedure coba( a : integer); 42

Contoh Program Program untuk menukar dua buah nilai integer program proc2; a, b : integer; procedure tukar(a, b : integer); temp : integer; temp := a; a := b; b := temp; end; Contoh Program procedure swap( a, b : integer); temp : integer; temp := a; a := b; b := temp; end; 43

Contoh Program write('masukkan nilai a : '); readln(a); write('masukkan nilai b : '); readln(b); writeln('a,b sekarang : ', a, ',', b); tukar(a,b); writeln('a,b setelah tukar : ', a, ',', b); swap(a,b); writeln('a,b setelah swap : ', a, ',', b); end. Pascal (4) Bambang Heru S Departemen Teknik Kimia Universitas Indonesia 44

Fungsi Sebuah transformasi akibat pemetaan suatu nilai ke nilai lain. Sejumlah ekspresi algoritmik yang mengolah masukan menjadi data keluaran yang diinginkan Fungsi Contoh fungsi pow(a,b) abs(a) floor(a) 45

Contoh Fungsi function pow(a, b: integer) : longint; hasil : longint; i : integer hasil := 1; for i := 1 to b do hasil := hasil * a; pow := hasil; end; Fungsi Perhatikan di fungsi hanya ada parameter input tipe hasil fungsi dituliskan pada saat deklarasi pengembalian nilai fungsi dengan operator asignment (:=) nilai kembalian harus bertipe dasar cara pemanggilan : namavar := namafungsi(list_parameter_aktual); x := pow(2,3); x := pow(a,b); 46

Contoh Program program fungsiint; x, y : integer; hslpangkat : longint; function pow(a, b: integer) : longint;{tuliskan algoritma untuk menghitung perpangkatan disini } writeln('2^10 = ', pow(2,10)); writeln('masukkan integer : '); readln(x); writeln('masukkan pangkatnya'); readln(y); hslpangkat := pow(x,y); writeln(x, '^', y, ' = ', hslpangkat); end. Contoh Fungsi(2) function f(x: integer) : integer; {menghitung x^2 9x + 10} hasil : integer; hasil := pow(x,2) - (9*x) + 10; f := hasil; end; 47

Contoh Kasus Tambahkan ke program fungsiint sebuah fungsi yang menerima dua buah integer dan mengembalikan nilai yang lebih besar Untitled Softcopy slide slide dan modul dapat didownload di http://students.if.itb.ac..id/~if13052/etc/pascal/ 48

Pascal (2) Bambang Heru S Departemen Teknik Kimia Universitas Indonesia Percabangan Pemilihan blok algoritma yang akan dieksekusi pada saat program berjalan. Karena program tidak mungkin berjalan lurus saja dari atas sampai ke bawah. 49

Percabangan Mengevaluasi sebuah ekspresi boolean Struktur percabangan If Then If Then Else Case If Then Pola : if x then y Arti : jika kondisi x terpenuhi maka lakukan aksi y Pascal if x = 1 then writeln(x); if not found then writeln( kosong ); 50

If - Then program ifthen; a : integer; write( Masukkan integer : ); readln(a); if a>=0 then writeln ( masukan positif ); end. If Then - Else Pola : if x then y else z Arti : jika kondisi x terpenuhi maka lakukan aksi y jika tidak maka lakukan aksi z Pascal if x = 1 then writeln(x) else writeln( x bukan angka 1 ); if not found then writeln( kosong ) else writeln( ketemu ); 51

If Then - Else program ifthenelse; a : integer; write( Masukkan integer : ); readln(a); if (a>=0) then writeln ( masukan positif ) else writeln ( Masukan negatif ); end. Perhatikan sebelumelse tidak ada titik koma Case Pascal case x of 0 : hari := Minggu ; 1 : hari := Senin ; 2 : hari := Selasa ; 3 : hari := Rabu ; 4 : hari := Kamis ; 5 : hari := Jumat ; 6 : hari := Sabtu ; end; 52

Case Arti : jika x bernilai 0 maka assign iabel hari dengan nilai Minggu jika bernilai 1 maka assign iabel hari dengan nilai Senin, dst Penggunaannya sama dengan depend on Buat program yang menerima masukan integer[1..7] yang mencetak nama hari sesuai masukan, jika masukan berbeda, maka tampilkan pesan kesalahan Solusi program conditional; (* Contoh penggunaan conditional branch *) angkahari : integer; write ( Masukkan Angka 1..7 : '); read (angkahari); case angkahari of 1 : writeln('minggu ); 2 : writeln('senin ); 53

Solusi (Lanjutan) 3 : writeln( 'Selasa ); 4 : writeln( 'Rabu ); 5 : writeln( 'Kamis ); 6 : writeln( 'Jumat ); 7 : writeln( 'Sabtu ); else writeln( pesan kesalahan ); end; end. Tambahan Untuk memngevaluasi banyak kasus dapat juga menggunakan if - then else bersarang (nested) Contoh if (angkahari = 1) then writeln( Minggu ) else if angkahari = 2 then writeln ( Senin ) else if 54

Blok Instruksi Penggunaan Blok instruksi untuk mengelompokkkan > 1 aksi. Contoh if a>= 0 then writeln( Masukan Positif'); writeln( Karena Masukan lebih dari 0 ); Blok Program Seharusnya if a>= 0 then end; writeln( Masukan Positif'); writeln( Karena Masukan lebih dari 0 ); 55

Perulangan Melakukan aksi yang sama berulang ulang. Struktur For do While Repeat - until Perulangan Contoh kasus : Faktorial. Buat program yang menerima integer(n) dan menghasilkan N!. N! = 1 -> (N = 1) N * (N - 1)! -> untuk n lainnya 56

For - do program faktorial; a, i, N : integer; write ( Masukkan N : ); readln(n); a := 1; for i:=1 to N do a := a * i; writeln(n,! =, a); end. While program Faktorial2; i, a, N : integer; i := 1; a := 1; write ( Masukkan N : ); readln(n); while i <= N do a := a * i; i := i + 1; end; writeln(n,! =, a); end. 57

Repeat - Until program Faktorial3; i, a, N : integer; i := 1; a := 1; write ( Masukkan N : ); readln(n); repeat a := a * i; i := i + 1; until i >= N; writeln(n,! =, a); end. Penggunaan for Digunakan jika kita ingin melakukan aksi yang sama untuk setiap nilai pencacah. Misalnya untuk menginisialisasi atau untuk mengisi array. Array akan dijelaskan kemudian. 58

Penggunaan While Struktur ini biasanya digunakan jika kita ingin mencari suatu nilai untuk kemudian digunakan, atau ingin melakukan aksi hanya sampai kondisi tertentu terpenuhi saja, sehingga tidak perlu melakukannya terhadap sisanya. Penggunaan While Do paling sering untuk algoritma search, contohnya pada fungsi yang mengembalikan nilai boolean apakah ada suatu nilai x dalam array. Pengguaan Repeat - Until Struktur ini penggunaannya hampir sama dengan While Do, tetapi untuk menggunakannya kita harus memastikan bahwa untuk lelaran(pass) pertama kondisi pasti belum dipenuhi. Salah satu peggunaan struktur ini ialah pada desain menu. Menu minimal ditampilkan satu kali pada eksekusi program. 59

Pemilihan Struktur Loop Pada contoh sebelumnya struktur loop yang tepat ialah For do. Karena operasi perkalian dilakukan untuk setiap nilai i, dari 1 sampai N (nilai masukan). Type Data (2) Array Data yang mengacu kepada sekumpulan elemen bertipe sama yang dikenali indeksnya Record / Tipe Bentukan Tipe bentukan ialah tipe data yang dibentuk dari satu atau lebih tipe data dasar atau tipe record lain yang sudah didefinisikan 60

Array Deklarasi Array arrint : array [1..10] of integer; arrint2 : array [ A.. J ] of integer; Array Cara pengaksesan elemen array arrint[1] := 2; artinya mengassign 2 ke array arrint yang indeksnya 1. x := arrint[ C ]; artinya mengassign nilai array yang berindex c ke iabel x. 61

Contoh Penggunaan Array program cobaarray; tab : array [1..5] of integer; i : integer; tab[1] := 5; tab[2] := 4; tab[3] := 3; tab[4] := 2; tab[5] := 1; write('masukkan integer[1..5] <- '); read (i); if (i > 0) and (i <= 5) then writeln ('Isi tab[', i, '] : ', tab[i]) else writeln ('masukan tidak valid'); end. Contoh Kasus Modifikasi program conditional. Gunakan array untuk menyimpan nama hari. Hint : Masukan yang diterima (misalnya iabelindeks) disimpan sebagai indeks dari array. Lalu cetak array yang berindeks masukan tersebut. 62

Solusi program conditional2; arrhari : array [1..7] of string; idx : integer; arrhari[1] := Minggu ; arrhari[2] := Senin ; arrhari[3] := Selasa ; arrhari[4] := Rabu ; arrhari[5] := Kamis ; arrhari[6] := Jumat ; arrhari[7] := Sabtu ; Solusi(Lanjutan) writeln( Masukkan indeks 1..7 : ); readln(idx); writeln ( Hari ini hari + arrhari[idx]); end. 63

Tipe Bentukan Tipe Bentukan Diturnkan dari tipe dasar. Memudahkan pengelolaan data Deklarasi type nama = string; namadepan, namabelakang : nama; Record Mahasiswa memiliki nama, NIM, dan nilai. dapat disimpan dalam satu iabel. Contoh type mahasiswa = record nama : integer; NIM : string; nilai : char; end; 64

Record Cara pengaksesan Jika mhs1 adalah iabel yang bertipe mahasiswa maka elemennya diakses dengan : mhs1.nama mhs1.nim mhs1.nilai Contoh Program program kuadranpoint; type point = record x : integer; {absis} y : integer; {ordinat} end; p : point; kuadran : integer; writeln ('Masukkan absis p'); readln (p.x); writeln ('Masukkan ordinat p'); readln (p.y); 65

Contoh Program(Lanjutan) if (p.x > 0) and (p.y > 0) then kuadran := 1 else if (p.x < 0) and (p.y > 0) then kuadran := 2 else if (p.x < 0) and (p.y < 0) then kuadran := 3 else if (p.x > 0) and (p.y < 0) then kuadran := 4 else kuadran := 0; writeln ('Point (', p.x, ',', p.y, ') berada di kuadran ', kuadran); end. Pascal (3) Bambang Heru S Departemen Teknik Kimia Universitas Indonesia 66

Type Data (2) Array Data yang mengacu kepada sekumpulan elemen bertipe sama yang dikenali indeksnya Record / Tipe Bentukan Tipe bentukan ialah tipe data yang dibentuk dari satu atau lebih tipe data dasar atau tipe record lain yang sudah didefinisikan Array Deklarasi Array arrint : array [1..10] of integer; arrint2 : array [ A.. J ] of integer; 67

Array Cara pengaksesan elemen array arrint[1] := 2; artinya mengassign 2 ke array arrint yang indeksnya 1. x := arrint[ C ]; artinya mengassign nilai array yang berindex c ke iabel x. Contoh Penggunaan Array program cobaarray; tab : array [1..5] of integer; i : integer; Begin for i:=1 to 5 do tab[i] := 6-i; write('masukkan integer[1..5] <- '); read (i); if (i > 0) and (i <= 5) then writeln ('Isi tab[', i, '] : ', tab[i]) else writeln ('masukan tidak valid'); end. 68

Tipe Bentukan Tipe Bentukan Diturunkan dari tipe dasar. Memudahkan pengelolaan data Deklarasi type nama = string; namadepan, namabelakang : nama; Record Mahasiswa memiliki nama, NIM, dan nilai. dapat disimpan dalam satu iabel. Contoh type mahasiswa = record nama : integer; NIM : string; nilai : char; end; 69

Record Cara pengaksesan Jika mhs1 adalah iabel yang bertipe mahasiswa maka elemennya diakses dengan : mhs1.nama mhs1.nim mhs1.nilai Contoh Program program kuadranpoint; type point = record x : integer; {absis} y : integer; {ordinat} end; p : point; kuadran : integer; writeln ('Masukkan absis p'); readln (p.x); writeln ('Masukkan ordinat p'); readln (p.y); 70

Contoh Program(Lanjutan) if (p.x > 0) and (p.y > 0) then kuadran := 1 else if (p.x < 0) and (p.y > 0) then kuadran := 2 else if (p.x < 0) and (p.y < 0) then kuadran := 3 else if (p.x > 0) and (p.y < 0) then kuadran := 4 else kuadran := 0; writeln ('Point (', p.x, ',', p.y, ') berada di kuadran ', kuadran); end. SubProgram Untuk memecah-mecah program. Subprogram Prosedur Fungsi 71

Prosedur Sederetan instruksi algoritmik yang memiliki nama, dan akan memberikan efek neto yang dapat dilihat dengan membandingkan keadaan awal dan keadaan akhir. Prosedur Intinya : prosedur ialah kumpulan beberapa aksi untuk mengubah status program menjadi status lainnya. Untuk menghemat space jika aksi-aksi itu sering dilakukan. Prosedur untuk menuliskan teks ke layar writeln( Hello, World! ); Prosedur untuk membaca masukan readln(x); 72

Prosedur Contoh procedure tulisisiarray; end; i := integer; for i:=1 to N do writeln(tab[i]); Prosedur Variabel : Global vs Lokal Nilai iabel ditentukan oleh lingkup dimana ia dideklarasikan dan diakses. 73

Contoh Program program mahasiswa; type mhs = record nama : string; nilai : char; end; mhs1 : mhs; Chr : char; Contoh Program procedure inputmhs; Chr : char; Str : string; write('nama : '); readln(str); mhs1.nama := Str; write('nilai : '); readln(chr); mhs1.nilai := Chr; end; 74

Contoh Program procedure cetakmhs; writeln ('Nama : ', mhs1.nama); writeln ('Nilai : ', mhs1.nilai); end; writeln('meminta masukan mahasiswa'); inputmhs; writeln('data yang didapat'); write('nilai (sekali lagi) : '); readln(chr); cetakmhs; end. Prosedur Parameter Perhatikan kembali Writeln( Hello, World! ); Parameter berguna untuk menghindari kesalahan pada penggunaan iabel global. 75

Prosedur Contoh procedure cetakmhs(inputmhs : mhs); writeln ('Nama : ', mhs.nama); writeln ('Nilai : ', mhs.nilai); end; Cara memanggil cetakmhs(mhs1); cetakmhs(mhs2); Contoh Program Modifikasi program mahasiswa. Gunakan prosedur dengan parameter. Lalu tambah beberapa iabel yang bertipemhs 76

Prosedur Parameter : Formal vs Aktual Parameter formal yaitu parameter yang ditulis pada saat deklarasi. Parameter aktual yaitu parameter yang ditulis ketika memanggil prosedur. Prosedur Parameter : input, output, input/output Input : diperlukan oleh prosedur untuk berjalan. Output : parameter yang nilainya dihasilkan oleh prosedur. Input/output : diperlukan oleh prosedur kemudian nilainya diubah didalam prosedur lalu nilainya yang berubah itu dikembalikan oleh program. 77

Prosedur Parameter : pass by value vs pass by reference By value : yang diberikan ke parameter adalah nilai dari tipe parameter. By reference : yang diberikan ke parameter ialah referensi dari tipe parameter Prosedur Mudahnya By value : nilainya tidak akan berubah meskipun didalam prosedur diubah By reference : nilainya dapat diubah dari dalam prosedur 78

Prosedur Jadi Pass by value digunakan untuk parameter input Pass by reference digunakan untuk parameter output dan input/output Prosedur Pass Parameter di Pascal procedure coba(a : integer); procedure coba( a : integer); 79

Contoh Program Program untuk menukar dua buah nilai integer program proc2; a, b : integer; procedure tukar(a, b : integer); temp : integer; temp := a; a := b; b := temp; end; Contoh Program procedure swap( a, b : integer); temp : integer; temp := a; a := b; b := temp; end; 80

Contoh Program write('masukkan nilai a : '); readln(a); write('masukkan nilai b : '); readln(b); writeln('a,b sekarang : ', a, ',', b); tukar(a,b); writeln('a,b setelah tukar : ', a, ',', b); swap(a,b); writeln('a,b setelah swap : ', a, ',', b); end. Pascal (4) Bambang Heru S Departemen Teknik Kimia Universitas Indonesia 81

Fungsi Sebuah transformasi akibat pemetaan suatu nilai ke nilai lain. Sejumlah ekspresi algoritmik yang mengolah masukan menjadi data keluaran yang diinginkan Fungsi Contoh fungsi pow(a,b) abs(a) floor(a) 82

Contoh Fungsi function pow(a, b: integer) : longint; hasil : longint; i : integer hasil := 1; for i := 1 to b do hasil := hasil * a; pow := hasil; end; Fungsi Perhatikan di fungsi hanya ada parameter input tipe hasil fungsi dituliskan pada saat deklarasi pengembalian nilai fungsi dengan operator asignment (:=) nilai kembalian harus bertipe dasar cara pemanggilan : namavar := namafungsi(list_parameter_aktual); x := pow(2,3); x := pow(a,b); 83

Contoh Program program fungsiint; x, y : integer; hslpangkat : longint; function pow(a, b: integer) : longint;{tuliskan algoritma untuk menghitung perpangkatan disini } writeln('2^10 = ', pow(2,10)); writeln('masukkan integer : '); readln(x); writeln('masukkan pangkatnya'); readln(y); hslpangkat := pow(x,y); writeln(x, '^', y, ' = ', hslpangkat); end. Contoh Fungsi(2) function f(x: integer) : integer; {menghitung x^2 9x + 10} hasil : integer; hasil := pow(x,2) - (9*x) + 10; f := hasil; end; 84

Contoh Kasus Tambahkan ke program fungsiint sebuah fungsi yang menerima dua buah integer dan mengembalikan nilai yang lebih besar Untitled Softcopy slide slide dan modul dapat didownload di http://students.if.itb.ac..id/~if13052/etc/pascal/ 85