Program Komputer Chapter 2

59
Putu Suwarta Putu Suwarta

Transcript of Program Komputer Chapter 2

Putu Suwarta Putu Suwarta

PENDAHULUANPENDAHULUAN

Tujuan :1. Memperkenalkan algoritma, flow chart dan struktur bahasa

pemrograman komputer.

2. Memperkenalkan metode penjabaran proses/prosedur ke

dalam algoritma yang terstruktur dan menyusun flow chart.

3. Memperkenalkan metode penterjemahan flowchart ke

dalam bahasa pemrograman.

PENDAHULUANPENDAHULUANIsi mata kuliah: 1. Elemen dasar dalam pemrograman komputer :

Algoritma, flowchart, diagram block, conditional statement, looping, procedure, function , array/record,dll.

2. Studi kasus dalam penyusunan algoritma dan flowchart:Penentuan akar persamaan kuadrat, konversi nilai angka ke nilai

huruf, metode sorting (mengurutkan bilangan), operasi matrix, dll.

3. Pendalaman bahasa pemrograman:Struktur bahasa pemrograman, deklarasi dan statement, sistem input-

output variabel, simple statement, jenis error, jenis variabel, dll.

PENDAHULUANPENDAHULUAN

Objectives:Setelah menyelesaikan materi perkuliahan ini, anda diharapkan

mampu:1. Menjabarkan suatu proses/prosedur ke dalam algoritma yang

terstruktur dan menyusun flowchart.

2. Menterjemahkan algoritma dan flowchart ke dalam suatu

bahasa pemrograman.

ALGORITMAALGORITMA

ALGORITMAALGORITMA

Definisi: Urutan langkah-langkah logis penyelesaian masalah yang disusun secara sistematis.

Contoh:Algoritma Tukar Isi Bejana

Diberikan dua buah bejana A dan B, bejana A berisi larutan berwarna hijau, bejana B berisi larutan berwarna kuning. Pertukarkan isi kedua bejana itu sedemikian sehingga bejana A berisi larutan berwarna kuning dan bejana B berisi larutan berwarna hijau.

ALGORITMAALGORITMA

Contoh:Algoritma Euclidan

Diberikan dua buah bilangan bulat positif m dan n (m ≥ n). Carilah pembagi bersama terbesar dari kedua bilangan tersebut, yaitu bilangan bulat positif terbesar yang habis membagi m dan n.

misal: m = 30 dan n = 12

ALGORITMAALGORITMA

Ciri-ciri penting algoritma:Algoritma harus berhenti setelah mengerjakan sejumlah langkah

terbatas.Setiap langkah harus didefinisikan dengan tepat dan tidak

membingungkan/ambigu.Memiliki nol atau lebih masukan (input).Memiliki nol atau lebih keluaran (output).Setiap langkah harus sederhana sehingga dapat dikerjakan dalam

sejumlah waktu yang masuk akal.

ALGORITMAALGORITMA

Contoh:Diberikan 5 buah data bilangan bulat positif yang tersusun secara acak. Anda diminta menyusun sebuah algoritma untuk mengurutkan sekumpulan data tersebut sehingga tersusun terurut dari nilai yang kecil ke nilai yang besar.

a b c d e

10 15 5 17 2

ALGORITMAALGORITMAAlgoritma

Program dalam bahasa tingkat tinggi

Program dalam bahasa mesin

Translasi

Kompilasi

Intrepretasi oleh CPU

Operasi

ALGORITMAALGORITMA

Memprogram dan Bahasa PemrogramanProgram: implementasi algoritma yang ditulis dalam bahasa

pemrograman tertentu sehingga dapat dilaksanakan oleh komputer.

Belajar memprogram adalah belajar tentang metodologi pemecahan masalah, kemudian menuangkannya dalam suatu notasi tertentu yang mudah dibaca dan dipahami.

Belajar bahasa pemrograman adalah belajar memakai suatu bahasa, aturan tata bahasanya,instruksi-instruksinya, tata cara pengoperasian compiler-nya untuk membuat program yang ditulis dalam bahasa itu saja.

ALGORITMAALGORITMA

Penulisan algoritma tidak tergantung dari spesifikasi bahasa pemrograman dan komputer yang mengeksekusinya. Notasi algoritma dapat diterjemahkan ke dalam berbagai bahasa pemrograman.

Notasi algoritma dapat berupa:Uraian kalimat deskriptif (narasi)

Algoritma kelulusan mahasiswa

Diberikan nama dan nilai mahasiswa , jika nilai tersebut lebih besar atau sama dengan 65 maka mahasiswa tersebut dinyatakan lulus dan jika nilai tersebut lebih kecil dari 65, maka mahasiswa dinyatakan tidak lulus.

ATURAN PENULISAN ALGORITMAATURAN PENULISAN ALGORITMA

Algoritma berisi langkah-langkah penyelesaian masalah.

Langkah-langkah tersebut dapat ditulis dalam notasi apapun asal mudah dibaca dan dimengerti, karena tidak ada notasi baku dalam penulisan algoritma.

Agar notasi algoritma mudah diterjemahkan ke bahasa pemrograman, maka sebaiknya notasi algoritma berkorespondensi dengan notasi bahasa pemrograman secara umum.

ATURAN PENULISAN ALGORITMAATURAN PENULISAN ALGORITMA

Teks algoritma disusun atas tiga bagian:

kepala (header)

Bagian deklarasi

Bagian deskripsi

Kepala (Header) AlgoritmaKepala (Header) AlgoritmaTerdiri atas nama algoritma dan penjelasan

(spesifikasi) tentang algoritma tersebut.Nama algortima sebaiknya singkat namun

cukup menggambarkan apa yang dilakukan algoritma.

Dibawah nama algoritma disertai penjelasan singkat (intisari) tentang apa yang dilakukan algoritma. Disebut juga spesifikasi algoritma.

Algoritma harus ditulis sesuai dengan spesifikasi yang didefinisikan.

Contoh Kepala (Header) AlgoritmaContoh Kepala (Header) Algoritma

Deklarasi AlgoritmaDeklarasi Algoritma

Bagian untuk mendefinisikan semua nama yang dipakai di dalam algoritma.

Nama tersebut dapat berupa:nama tetapannama peubah nama tipe nama prosedur nama fungsi

Contoh Deklarasi AlgoritmaContoh Deklarasi Algoritma

Contoh Deklarasi AlgoritmaContoh Deklarasi Algoritma Deklarasi {nama tetapan} const NPeg = 230 {jumlah pegawai} const phi = 3.14 {nilai Π}

{nama tipe} type Titik : record {koordinat titik di bidang cartesian} ( x: integer, y: integer )

{nama peubah} c: char {karakter yang dibaca} Q: Titik {titik dalam koordinat kartesian}

function APAKAH_B (input c: char) boolean {mengembalikan nilai true bila c adalah karakter ’B’ atau false

bila sebaliknya}

DeskripsiDeskripsiBagian inti dari suatu algoritma yang berisi

uraian langkah-langkah penyelesaian masalah.

Setiap langkah algoritma dibaca dari ’atas’ ke ’bawah’. Urutan penulisan menentukan urutan pelaksanaan perintah.

Komponen teks algoritma dapat berupa:Runtutan ( sequence)Pemilihan (selection)Pengulangan ( repetition)

Contoh DeskripsiContoh Deskripsi

Contoh Algoritma LengkapContoh Algoritma Lengkap Program nilai maksimum {menentukan nilai tertinggi dari piranti masukan dan hasilnya dicetak di

piranti keluaran}

Deklarasi hasil : integer {hasil adalah variabel untuk menampung nilai keluaran} x, y : integer {x dan ya adalah variabel untuk menampung nilai

masukan}

Deskripsi Input (x,y) {membaca x dan y dari piranti masukan} If x > y then {operasi kondisional}

hasil x {hasil di assignment oleh nilai terbsesar} else hasil y

Output (hasil) {nilai di dalam variabel hasil ke piranti keluaran}

Tipe, Nama & NilaiTipe, Nama & Nilai

KOMPUTER

Nilai numerik

Karakter

String

Record

Tipe

Tipe, Nama & NilaiTipe, Nama & Nilai

Tipe

Tipe Dasar Tipe Bentukan

- bilangan logika- bilangan bulat- bilangan riil- karakter

- string- tipe dasar dengan nama tipe baru- rekaman

Bilangan LogikaBilangan LogikaNama tipe : boolean (berasal dari nama George

Boole)Ranah nilai: benar ( true,1) atau salah (false,0)Tetapan: true dan falseOperasi: operasi logika yang terdiri dari not, and,

or, xor a Not a

true false

false true

Bilangan LogikaBilangan Logika

a b a and b

a or b a xor b

true true true true false

true false

false true

false false

Bilangan LogikaBilangan LogikaContoh operasi logika:

X Y Z (X and Y) or Z

X and (Y or Z)

not (X and Z)

( Y xor Z) and Y

true false true

Bilangan BulatBilangan BulatNama tipe: integerRanah nilai: - infinite < x < infinite Dapat didefinisikan ranah tertentu untuk objek

yang kita definisikan, contoh: Objek : jam Tipe : bilangan bulat Ranah nilai : {0..23} Tetapan: ditulis tanpa mengandung titik

desimal 34 -14 8564 56

Bilangan BulatBilangan Bulat

Operasi:Operasi aritmatika : + (tambah) - (kurang) * (kali) div (bagi) mod (sisa hasil bagi)

Bilangan BulatBilangan BulatContoh:9 div 3 (hasil: 3)9 mod 3 (hasil: 0)9 + 3 (hasil : 12)9 * 3 ( hasil: 27)9-3 (hasil: 6)Dari contoh di atas 9 dan 3 disebut operandSedangkan ’+’, ’div’, ’mod’, ’*’ , ’-’ adalah

operator’-’ disebut operator uner’+’, ’div’, ’mod’, ’*’ disebut operator biner

Bilangan BulatBilangan BulatOperasi perbandingan:Dengan menggunakan operator relasional di

bawah ini menghasilkan nilai boolean ( true atau false):

< (lebih kecil) ≤ (lebih kecil atau sama dengan) ≥ (lebih besar atau sama dengan) > (lebih besar) = (sama dengan) = (tidak sama dengan)

Bilangan RiilBilangan Riil

Bilangan yang mengandung pecahan desimal misalnya:

18.0, 3.45, 0.0001, 2.60567E-7Nama tipe: realRanah nilai: - infinite < x < infiniteTetapan: ditulis dengan tanda titik desimalOperasi: aritmatika dan perbandingan

Bilangan RiilBilangan RiilOperasi aritmatika : + (tambah) - (kurang) * (kali) / (bagi)Contoh: 6.4 + 5.7 ( hasil : 12.1.) 10/3 ( hasil : 3.33...) 10/2.5 (hasil: 4.0)

Bilangan RiilBilangan RiilOperasi perbandingan : Dengan menggunakan operator relasional di

bawah ini menghasilkan nilai boolean ( true atau false):

< (lebih kecil) ≤ (lebih kecil atau sama dengan) ≥ (lebih besar atau sama dengan) > (lebih besar) = (tidak sama dengan)

KarakterKarakterJenis karakter: huruf-huruf alpabet, tanda baca,

angka ’0’, ’1’,...., ’9’ serta karakter khusus seperti ’&’, ’%’, ’#’, ...

Nama tipe: charRanah nilai: alfabet (’a’..’A’, ’A’..’Z’) angka desimal (’0’..’9’) tanda baca (’&’, ’%’, ’#’, ’?’, ’!’, dll) operator aritmatik (’+’, ’=’, ’-’, ’*’,

’/’)Tetapan: `&´ `%´ `#´ `?´ `!´

KarakterKarakterOperasi perbandingan:Dengan menggunakan operator relasional di

bawah ini menghasilkan nilai boolean ( true atau false):

< (lebih kecil) ≤ (lebih kecil atau sama dengan) ≥ (lebih besar atau sama dengan) > (lebih besar) = (sama dengan) = (tidak sama dengan)

Tipe BentukanTipe BentukanTipe yang didefinisikan sendiri oleh

pemrogram.Tersusun dari satu atau lebih tipe dasar.Tiga jenis tipe bentukan: 1. string 2. tipe dasar dengan nama tipe baru 3. rekaman (record)

StringStringDeretan karakter dengan panjang tertentuNama tipe: stringRanah nilai: deretan karakter yang telah

didefinisikan pada ranah karakterTetapan: semua tetapan string diapit tanda

petik tunggalContoh:`Jogjakarta´`ITS´` Halo, dunia´

StringStringOperasi penyambungan:Operator : +`Teknik´ + `Sipil´ = `TeknikSipil´´1´ + ´2´ = ´12´Operasi perbandingan: Dengan menggunakan operator relasional di bawah

ini menghasilkan nilai boolean ( true atau false): < (lebih kecil) ≤ (lebih kecil atau sama dengan) ≥ (lebih besar atau sama dengan) > (lebih besar) = (sama dengan) = (tidak sama dengan)

Tipe Dasar dengan Nama BaruTipe Dasar dengan Nama BaruMemberi nama baru untuk tipe dasar dengan

kata kunci type

Type BilBulat : integer

Rekaman (record)Rekaman (record)Disusun oleh satu atau lebih field yang

menyimpan data dari tipe dasar tertentu atau dari tipe bentukan lainnya yang sudah terdefinisi.

Field 1 Field 2 Field 3 Field 4

Rekaman (record)Rekaman (record)Titik dalam koordinat cartesian

X Y

Cara penulisan: type Titik : record < x: real, y : real > type Titik : record < x ,y : real > type Titik : record < x: real, y : real>

Rekaman (record)Rekaman (record)

Titik dalam koordinat cartesiantype Titik : record < x ,y : real >Didefinisikan sebagai berikut: Nama tipe: Titik Ranah nilai : (real, real) Contoh tetapan: < 2.7, 13.2 > < -2.3, -1.4> <3.0 , -10.12> Operasi : operasi aritmatika operasi perbandingan

Rekaman (record)Rekaman (record)Penanggalan dalam kalender

dd mm yy

Type Tanggal : record <dd: integer, {1..31} mm: integer {1..12} yy: integer {> 0} >

NamaNamaDituliskan di bagian Deklaraasi algoritmaDigunakan untuk memberi identifikasi objek.Objek dapat berupa: a. Peubah ( variabel) b. Tetapan (constant) c. Tipe bentukan d. Nama fungsi e Nama prosedur

Nama PeubahNama PeubahDeklarasi X, nilai_ujian, jumlah : real k : integer c : charX, nilai_ujian, jumlah, k dan c dapat diubah

nilainya dalam algoritma

Nama TetapanNama TetapanDeklarasiConst phi = 3.14Const Nmaks = 200Const sandi = `xyz´Phi, Nmaks dan sandi adalah nama tetapan

yang nilainya tidak dapat diubah dalam algoritma

Tipe BentukanTipe BentukanDeklarasi type Titik : record <x:real, y:real>

type JAM : record < hh : integer mm : integer ss : integer <

NilaiNilaiNilai adalah besaran dari tipe data yang

sudah dikenalNilai dapat dimanipulasi antara lain dengan

cara: 1. Mengisikannya ke peubah lain bertipe

sama 2. Dipakai perhitungan 3. Dituliskan ke piranti keluaran

NilaiNilaiPengisian nilai ke dalam nilai peubahSebuah nilai dapat dimasukkan ke dalam

nama peubah dengan dua cara: 1. Pengisian nilai secara langsung. 2. Dibaca dari piranti masukan.

NilaiNilaiPengisian nilai secara langsung (assignment)Memasukkan sebuah nilai ke dalam nama

peubah langsung di dalam teks algoritma.Nilai yang diisikan kepada nama peubah

dapat berupa: tetapan, nilai nama peubah lain, nilai sebuah

ekspresiNotasi algoritmik untuk pengisian langsung:

NilaiNilaiPeubah tetapanPeubah 1 peubah2Peubah ekspresi Contoh:K 45Distance 239.2Hilang falseNamaOrang `Budi´J.hh 18 J.mm 23J.ss 45

NilaiNilaiC A + BNisbah jumlah/banyak * o.5Determinan b*b-4*a*cK (i+j) div 2

M 4.5L M-3.4K L + 2.0L K/L

NilaiNilaiEkspresi:Transformasi nilai menjadi keluaran melalui

suatu cara perhitungan.Terdiri dari operand dan operator Operand dapat berupa: tetapan, peubah,

hasil dari suatau fungsi3 macam ekspresi: ekspresi aritmetik ekspresi relasional ekspresi string

NilaiNilaiEkspresi aritmetikOperand dan hasilnya bertipe numerikmisal: DEKLARASI a, b, c : real d : integer i,j,k : integerEkspresi numerik: c a*b k (i+j) div 2 (a/2.5) + c*bOperator yang lebih tinggi lebih dahulu

dikerjakan

NilaiNilaiUrutan evaluasi dapat berubah karena

penggunaan tanda kurung. a/(c+b) Tingkatan operator aritmetika adalah (dari

tertinggi ke terendah): (i) /, div, mod (ii) * (iii) +, - a/b*c tidak sama dengan a/(b*c)

NilaiNilaiNyatakan rumus-rumus di bawah ini dalam

notasi algoritmik: B = 5/9(7*A)-(D/F) Z = (2x+y)/(5w) y = 5 ((a+b)/(cd) + (m)/(p+q))

NilaiNilaiEkspresi relasionalEkspresi dengan operator <, >, ≥, ≤, =, = ,

not and, or, xorDEKLARASI ketemu, ada : boolean x,y : integer ketemu : false ada : true x : 8 y : 3.4

NilaiNilaiEkspresi stringEkspresi dengan operator ’’ +’’

( penyambungan)DEKLARASI kar : char s : string (s+kar) + ’c’