Logika dan Algoritma (LA103F)

Dari Widuri
Lompat ke: navigasi, cari

BAB I

PENDAHULUAN


LOGIKA
Diperkenalkan pertama kali oleh Aristoteles (384-322 SM)
ALGORITMA
Diperkenalkan Oleh Ahli Matematika : Abu Ja’far Muhammad Ibnu Musa Al Khawarizmi. Seorang ilmuan Persia yang menulis kitab al jabr w’al muqabala (rules of restoration and reduction) sekitar tahun 825 M

Definisi Logika

  1. penalaran atau bentuk pemikiran.

  2. ilmu yang memberikan prinsip-prinsip yang harus diikuti agar dapat berfikir valid menurut aturan yang berlaku.

Definisi Algoritma

  1. Langkah – langkah yang dilakukan agar solusi masalah dapat diperoleh.

  2. Suatu prosedur yang merupakan urutan langkah-langkah yg berintegrasi.

  3. Suatu m etode khusus yang digunakan untuk menyelesaikan suatu masalah yang nyata.(Webster Dictionary)


SILABUS

TUJUAN

Agar mahasiswa mampu untuk mengenal, mengerti dan memahami Setelah mengikuti kuliah Logika dan Algoritma mahasiswa diharapkan dapat menguasai dan dapat menjelaskan serta dapat menggunakan Logika dan Algoritma untuk memecahkan masalah baik secara teori maupun mempraktekanya ada 5 hal tujuan yaitu untuk :

  1. Memperkuat cara berfikir kita untuk menyelesaikan suatu masalah

  2. Membantu otak agar berfikir panjang

  3. Memperkuat analisis ketika pembuatan program

  4. Memperluas space berpikir


BAB II

LANDASAN TEORI

SATUAN ACARA PENGAJARAN

Kode  : LA103F

Mata Kuliah  : Logika dan Algoritma

Beban Kredit  : 3 SKS

Jenjang  : S1

Jurusan  : SI/TI/MI

Waktu Tatap Muka  : 2 X 50 Menit

Waktu Tugas Mandiri : 2 ( 2 X 50 Menit )

Metode Kuliah  : Tatap muka,Tugas,Presentasi

Alat  : RME, Multimedia Projector, Komputer dan Whiteboard

Evaluasi  : Kehadiran, Tugas, UTS, UAS

Dosen  : Ria Wulandari

TIU  : Mahasiswa dapat memahami jenis-jenis komputer, sistem kerja komputer, perangkat komputer, arus informasi menggunakan komputer, informasi dalam dunia maya perkembangan hardware dan software terkini, serta prospek pengembangan komputer di masa mendatang.

TIK  : Mahasiswa dapat memahami jenis-jenis komputer, sistem kerja komputer, perangkat komputer, arus informasi menggunakan komputer, informasi dalam dunia maya perkembangan hardware dan software terkini, serta prospek pengembangan komputer di masa mendatang.



BAB III

PEMBAHASAN MATERI

Materi Logika dan Algoritma

PERTEMUAN 1

1. Pengantar Algoritma

Apakah Itu Algoritma?'
Para ahli sejarah matematika menemukan asal kata tersebut yang berasal dari nama penulis buku arab yang terkenal yaitu:
Abu Ja’far Muhammad Ibnu Musa Al-Khuwarizmi.

Al-Khuwarizmi dibaca orang barat menjadi Algorism

• Perubahan kata dari Algorism menjadi Algorithm muncul karena kata Algorism sering dikelirukan dengan Arithmetic, sehingga akhiran –sm berubah menjadi –thm.


“Algoritma adalah urutan langkah-langkah logis penyelesaian masalah yang disusun secara sistematis dan logis”.

• Kata Logis merupakan kata kunci dalam Algoritma

• Langkah-langkah dalam Algoritma harus logis dan harus dapat ditentukan bernilai salah atau benar.

• Melaksanakan Algoritma berarti mengerjakan langkah-langkah di dalam Algoritma tersebut

• Pemroses mengerjakan proses sesuai dengan algoritma yang diberikan kepadanya
Suatu pemroses harus :

  1. Mengerti setiap langkah dalam Algoritma

  2. Mengerjakan operasi yang bersesuaian dengan langkah tersebut.

• Agar dapat dilaksanakan oleh komputer algoritma harus ditulis dalam notasi bahasa pemrograman sehingga dinamakan program.

• program adalah perwujudan atau implementasi teknis Algoritma yang ditulis dalam bahasa pemrogaman tertentu sehingga dapat dilaksanakan oleh komputer

2. Belajar Memprogram

Belajar Memprogram

• Belajar memprogram ≠ belajar bahasa pemrograman

• Belajar memprogram: belajar tentang strategi pemecahan masalah, metodologi dan sistematika pemecahan masalah

• kemudian menuliskannya dalam notasi yang disepakati bersama

• Belajar memprogram : bersifat pemahaman persoalan, analisis dan sintesis

• Belajar memprogram, titik berat : program designer

3. Belajara Bahasa Pemprograman

Belajar Bahasa Pemrograman

• Belajar bahasa pemrograman : belajar memakai suatu bahasa pemrograman, aturan sintaks, tatacara untuk memanfaatkan instruksi yang spesifik untuk setiap bahasa

• Belajar bahasa pemrograman , titik berat : coder

4. Pemrogram

Produk yang dihasilkan pemrogram :

• Program dengan rancangan yang baik (metodologis, sistematis)

• Dapat dieksekusi oleh mesin

• Berfungsi dengan benar

• Sanggup melayani segala kemungkinan masukan

• Disertai dokumentasi

• Belajar memprogram, titik berat : program designer

5. Notasi Algoritma

• Algoritma

• Aksi :

- Kejadian yang terjadi pada selang waktu terbatas (dimulai saat T0 dan berakhir pada saat T1)

- Menghasilkan efek netto yang terdefinisi dengan baik dan direncanakan

• Contoh analogi:

- Membuat pisang goreng

Notasi algoritma:

- Independen Terhadap Bahasa PemrogramanNotasi Algoritma dapat diterjemahkan ke dalam berbagai bahasa pemrogramanIndependen Terhadap Mesin Komputer

- Karena notasi algoritma independen terhadap bahasa pemrograman maka dapat diterapkan pada mesin komputer manapun.

6. Pemrograman Prosedural

• Algoritma adalah proses yang procedural

• Definisi Prosedural menurut Kamus Besar Bahasa Indonesia :

  1. Tahap-tahap kegiatan untuk menyelesaikan suatu aktivitas.

  2. Metode langkah demi langkah secara eksak dalam memecahkan suatu masalah.

• Pada pemrograman procedural, program dibedakan:

- Bagian data

- Bagian instruksi

• Bagian Data terdiri atas:

- Variabel

- Konstanta

• Bagian instruksi terdiri atas:

- Runtutan (Sequence)

- Percabangan (Selection)

- Perulangan (Repetition)

7. Programming Language Paradigm

• Skema paradigma pemrograman


PERTEMUAN 2

1. Teknik Penyajian Algoritma

• Teknik Tulisan

- Structure English

- Pseudocode

• Teknik Gambar

- Structure Chart

- HIPO

- Flowchart

- Nassi Schneiderman Chart

2. Pseudocode

Pseudocode
- Kode mirip dengan kode pemrograman yang sebenarnya.
- Arti pseudo: imitasi atau mirip atau menyerupai
- Arti code: kode program.
- Basis: bahasa pemrograman- Lebih rinci dari structure English,
- Dapat menyatakan tipe data yang digunakan

struktur penulisan:
- sequence structure
- selection structure
- looping structure.

3. Aturan Penulisan Algoritma

• Setiap Algoritma akan selalu terdiri dari tiga bagian -Bagian yaitu :
- Judul (Header)
- Kamus (Deklarasi)
- Algoritma (Deskripsi)

• Komentar mengenai setiap bagian dituliskan diantara tanda kurung kurawa
contoh:

{ Komentar }

4. Judul Header

• adalah bagian teks algoritma yang digunakan sebagai tempat mendefinisikan nama dengan menentukan apakah teks tersebut adalah program, prosedur, fungsi.
Contoh:

5. Kamus (Deklarasi)

adalah bagian teks algoritma sebagai tempat untuk mendefinisikan :
- Nama type
- Nama konstanta
- Nama variabel
- Nama fungsi
- Nama prosedur

Kamus
{Nama type, hanya untuk type yang bukan type dasar}
type jam : <hh,mm,ss :integer> {yaitu “hh” jam. “mm” sebagai menit dan “ss”
sebagai detik}

{Nama konstanta, harus menyebutkan type dan nilai }
constant phi : real = 3,14159
constant nama : string = ‘Alex’
constant benar : boolean = true

{Nama Informasi, menyebutkan type}
x,y : integer {suatu nilai yang bertype bilangan bulat}
NMax : real {nilai maksimum yang bertype bilangan real}
Nama : string {suatu nilai yang merupakan kumpulan character}
Cari : Boolean {suatu nilai logika}

{Nama fungsi, menyebutkan domain dan range}
function RealToInt (x:real) → integer
{mengubah harga x yang bertype real menjadi harga ekivalen yang bertype integer}
{Nama prosedur, menyebutkan “IS” initial state, “FS” final state dan proses}
procedure tukar (input/output x,y : real)
{ IS x dan y terdefinisi, x = a dan y = b
FS x = b dan y = a
Proses : menukar isi informasi bilangan x dan y }

adalah bagian inti dari suatu algoritma yang berisi instruksi atau pemanggilan aksi yang telah didefinisikanKomponen algoritma (deskripsi) berupa :
- Instruksi dasar seperti input/output, assignment
- Sequence (runtutan)
- Operasi kondisional
- Perulangan

• Contoh

• Contoh Lengkap:

6. Contoh Penulisan Algoritma Lengkap

7. Flowchart

Simbol-simbol standard Flowchart

8. Teknik Penyajian Algoritma dengan Flow Chart

Sequence Structure (struktur urut)


Selection Structure (Struktur Seleksi)
IF Selection


Selection Structure (Struktur Seleksi)
IF – ELSE Selection


Selection Structure (Struktur Seleksi)
CASE Selection


Looping/Repetition Structure (Struktur Pengulangan)
Front Check Repetition

Looping/Repetition Structure (Struktur Pengulangan)
Rear Check Repetition

Looping/Repetition Structure (Struktur Pengulangan)
Fixed Repetition


PERTEMUAN 3

1. Nilai

Nilai → Besaran dari tipe data yang sudah dikenal
Pengisian nilai ke dalam variable

Contoh:

2. Pengisian Nilai

Contoh:
Pengisian variable dengan nilai dari variable lain

Pengisian variable dari hasil operasi suatu ekspresi
Pengisian variable dari hasil operasi suatu ekspresi

2. Pembacaan Nilai Dari Input Device

Nilai untuk mengisi suatu variable dapat diisi dari piranti masukan (input device )</p></div>

Contoh:

3. Penulisan Nilai ke Output Device

Nilai yang disimpan dapat ditampilkan ke piranti keluaran (output device )

Contoh:

4. Ekpresi

Transformasi nilai menjadi keluaran dilakukan melalui suatu perhitungan (komputasi).

Ekspresi terdiri atas:
- Operand: nilai yang dioperasikan dengan operator tertentu
- Operator

Dikenal 3 macam ekspresi:
- ekspresi aritmetik,
- ekpresi relasional,
- ekspresi string

5. Ekpresi Aritmatik

- Operasi yang seluruh operand-nya dan hasil operasinya bertipe numerik
- Operasi yang menggunakan operator aritmetik (dibahas pada pertemuan 4)- Penulisan ekspresi aritmetik:

Contoh ekspresi aritmetik:

6. Ekpresi Rasional

- Ekspresi relasional adalah ekspresi dengan
menggunakan operator relational (dibahas pada pertemuan 4)
- Hasil operasi adalah nilai bertipe boolean (true atau false)
- Contoh:
Misal ketemu bernilai false, ada bernilai true, X bernilai 10, Y bernilai 10

7. Ekpresi String

Ekspresi string adalah ekspresi dengan operator “+” (concatenation/penyambungan)

Contoh:



Syntax dalam C++


8. Pengisian Nilai








9. Pembacaan & Penulisan Nilai dari/ke I/O device

Input/Output
Untuk membaca atau menampilkan data pada console (layar) dapat menggunakan:

  1. library <stdio. h>
    1. Printf'
    2. Scanf
  2. library <iostream.h>
    1. Count
    2. Cin

10. Input/Output


Contoh Dengan Library <stdio.h>
Untuk Bilangan Integer



Contoh Dengan Library <stdio.h>
Untuk Bilangan Float


Contoh Dengan Library <stdio.h>
Untuk String


Contoh Dengan Library <iostream.h>


Contoh Dengan Library <iostream.h>


PERTEMUAN 4

1. Konstanta (Const)


• Konstanta adalah suatu nilai yang telah di definisikan dan nilainya tidak akan berubah selama progran tersebut di eksekusi.

• Konstanta terdiri dari konstanta numerik dan konstanta non numerik.

• Konstanta non numerik disebut dengan konstanta string yang dalam penulisan selalu di apit dengan tanda kutip (“)Contoh:

  1. constant phi : real = 3,14159
  2. constant nama : string = ‘Alex’
  3. constant pilih : boolean = true

2. Variabel

• Variabel adalah identifier berisi data yang dapat dirubah dalam program.

• Contoh pseudocode:

gaji, tunjangan : real

Nama : string(25)

• Contoh kode C++ :

float gaji, tunjangan;

int jmlAnak=3;

bool menikah;

char keterangan[25];

3. Type Data dan Variable

TYPE DATA
• Tipe Data Sederhana (Primitive Data Type)
• Tipe Data Terstruktur (Structural Data Type)
dibahas pada struktur data
• Tipe Data Pointer (Pointer Data Type)
dibahas pada struktur data

4. Type Data Sederhana

5. Type Data Sederhana C++


6. Operator


• Operator merupakan simbol atau kata yang dapat digunakan dalam program untuk melakukan suatu operasi atau manipulasi, seperti menjumlahkan dua nilai, memberikan nilai ke variable, membandingkan dua buah nilai dan sebagainya

• Sebagian operator C++ tergolong sebagai operator binary yaitu operator yang dikenakan terhadap dua buah nilai

• Contoh:
A+B
A*B


7. Operator
Type Operator

• Operator pengerjaan (assignment operator)
• Operator matematika (arithmetic operator)
• Operator peningkatan dan penurunan (increment dan decrement operator)
• Operator hubungan (relational operator)
• Operator logika (logical operator)
• Operator Bitwise (bitwise operator)
• Operator alamat (address operator)
• Operator koma (comma operator)
• Operator gabungan (group operator)

8. Operator Pengerjaan
(Assignment Operator)
Type Operator

• Operator pengerjaan (assignment) pada pseudocode berupa simbol ←

• Digunakan untuk mengisikan nilai yang berada disebelah kanannya variable yang ditunjukan disebelah kirinya.

• Contoh pseudocode:
A ← 5
B ← C
D ← A + B


9. Operator Pengerjaan Contoh
kode lengkap C++



10. Operator Aritmatika


Tabel Operator Aritmatika

Contoh pseudocode:
A ← A + 5
B ← C + A * 2
D ← 2 * A + B



11. Operator Increment dan Decrement

• Operator peningkatan ditandai dengan tanda operasi (++) dan Operator Penurunan di tandai dengan menggunakan tanda operasi (--)

• Operator ++ (increment) digunakan untuk menambahkan 1 pada nilai sebelumnya.

• Operator ++ (decrement) digunakan untuk mengurangi 1 pada nilai sebelumnya.

• Contoh pseudocode:
A++
++B
C--
--D

12. Operator Increment dan Decrement
Contoh Kode C++

13. Operator Relasi(Relational Operators)

• Operator hubungan (relational operators) digunakan untuk membandingkan dua elemen nilai dan dihasilkan nilai perbandingannya, yaitu betul (bernilai 1) atau salah (bernilai 0).

• Operator ini banyak digunakan pada penyeleksian suatu kondisi pada statement IF.

14. Tabel Operator Relasi

• Contoh pseudocode:
IF nilai>=70 then
output(“Lulus”)
Else
output(“Tidak Lulus”)
Endif

15. Operator Relasi Contoh Kode C++


16. Operator Logika

• Nilai perbandingan operator logika menghasilkan dua kemungkinan nilai yaitu: True atau False.

• Operator ini banyak digunakan pada penyeleksian suatu kondisi pada statement IF.

17. Operator Logika
Tabel Kebenaran (Truth Table)




PERTEMUAN 5

1. Operator Type
Operator - Lanjutan

Tanda Operator dapat dikelompokkan sebagai berikut:

1). Operator pengerjaan (assignment operator)

2). Operator matematika (arithmetic operator)

3). Operator peningkatan dan penurunan (increment dan decrement operator)

4). Operator hubungan (relation operator)

5). Operator logika (logical operator)

6). Operator koma (comma operator)

7). Operator Bitwise (bitwise operator)

8). Operator alamat (address operator)

9). Operator gabungan (group operator)


2. Operator
Bitwise Operator

Untuk operator bitwise dalam bentuk bit, Operasi dilakukan dalam bit per bit (binary).
bahasa C++ menyediakan beberapa operator seperti dibawah ini :

3. Operator Address Operator (Operator Alamat)

Pemrograman C++ menyediakan 2 (dua) buah operator alamat (address operators) yang berhubungan dengan penggunaan pointer.

Dari tabel diatas dapat dijelaskan sbb :
• operator & akan menunjukkan alamat memori dari suatu variable,
• operator * digunakan untuk menunjukkan suatu pointer yang dapat menyimpan alamat suatu variable.

4. Operator Gabungan

Pemrograman C++ memungkinkan penulisan suatu operator pengerjaan (=) untuk digabung dengan operator lainnya yaitu dengan operator aritmetika, operator peningkatan dan penurunan serta operator bitwise.
Bentuk penulisannya sbb :
Operator pengerjaan
Variabel = variabel operator ungkapan;
Dapat diubah dengan ditulis sebagai berikut :
Operator lainnya
Operator pengerjaan
Variabel operator = ungkapan

Dari ke 9 operator dan dalam penulisan program harus diperhatikan hierarki atau prioritas operator.
Adapun prioritas operator dapat dilihat pada tabel sbb.


PERTEMUAN 6

1. Sequence

Algoritma yang merupakan runtunan (sequence) satu atau lebih instruksi, yaitu berarti:

  1. Tiap instruksi dikerjakan satu persatu.
  2. Tiap instruksi dilaksanakan (tanpa perulangan).
  3. Urutan dilaksanakan sesuai urutan.
  4. Akhir dari instruksi terakhir merupakan akhir algoritma.

Perhatikan diagram di bawah, Berdasarkan diagram tersebut, algoritmanya terdiri dari 3 instruksi yang dimulai dari instruksi A, kemudian dilanjukan instruksi B dan setelah instruksi B dilanjutkan instruksi C


2. Sequence
Pengaruh Urutan Instruksi

• Urutan instruksi dalam algoritma sangat penting. Urutan instruksi yang berbeda akan menghasilkan keluaran yang berbeda.
• Perhatikan contoh:


Contoh

Contoh kasus:

  1. misalkan nilai A=8 dan nilai B=5. Lakukan pertukaran nilai A dengan nilai B sehingga nilai A=5 (nilai B) dan nilai B=8 (nilai A)
  2. Lakukan pembacaan dari piranti input untuk nilai A, lakukan pembacaan dari piranti input untuk nilai B, tampilkan nilai A dan nilai B ke piranti keluaran. Lakukan pertukaran antara nilai A dan nilai B, tampilkan nilai A dan nilai B ke piranti keluaran.

Contoh kasus:

  1. misalkan nilai A=8 dan nilai B=5. Lakukan pertukaran nilai A dengan nilai B sehingga nilai A=5 (nilai B) dan nilai B=8 (nilai A)
  2. Lakukan pembacaan dari piranti input untuk nilai A, lakukan pembacaan dari piranti input untuk nilai B, tampilkan nilai A dan nilai B ke piranti keluaran. Lakukan pertukaran antara nilai A dan nilai B, tampilkan nilai A dan nilai B ke piranti keluaran.
  3. Menghitung komisi yang diterima salesman berdasarkan jumlah penjualan yang dicapainya. Salesman mendapat komisi 10% dari hasil penjualannya. Masukan algoritma adalah nama salesman dan jumlah penjualannya, tampilkan ke piranti keluaran nama salesman dan besar komisi yang diperolehnya.

    3. SELECTION (PEMILIHAN ) IF

• IF (Simple selection without false branch)

• Contoh:

4. SELECTION (PEMILIHAN ) IF … ELSE

• IF … ELSE (Simple selection)

• Contoh:

5. SELECTION (PEMILIHAN )
Nested IF

• Nested IF (Nested selection)
• Linear nested IF statement

Non linear nested IF statement

6. SELECTION (PEMILIHAN )
CASE

• Case

7. SELECTION (PEMILIHAN )
CASE

• Case
Bahasa C++

• Pseudocode

8. Repetition
(PERULANGAN) while - do

• while - do

• Contoh:

9. Repetition
(PERULANGAN)repeat - until


• repeat - until

• Contoh

10. Repetition
(PERULANGAN)for


• For

• Contoh



PERTEMUAN 7

Studi Kasus 1

• Perulangan
Tulis algoritma untuk menuliskan teks lagu anak ayam turun N , dengan nilai N dibaca dari input keyboard.
Setiap baris syair lagu dicetak dalam struktur perulangan.

1. Algoritma Studi Kasus 1


Algoritma LAGU_ANAK_AYAM
{Mencetak lagu anak ayam turun N}

DEKLARASI
N: integer

DESKRIPSI
read(N)
K←N
write(‘ Anak Ayam Turun ‘, K)
while(K>1 do
write(‘ Anak ayam turun ‘ , K, ‘, mati satu tinggal ‘, K-1)
K←K-1
endwhile

{K=1}
if (K=1) then
write(‘ Anak ayam turun ‘ , K, ‘, mati satu tinggal induknya.‘)
endif


Studi Kasus 2


Validasi masukan

• Pada umumnya algoritma menerima masukan dari pengguna. Buat algoritma yang hanya dapat menerima masukan berupa bilangan bulat dari 10 sampai 20, diluar dari itu masukan ditolak. Bila masukan ditolak, pengguna harus memasukkan kembali nilai sampai benar


Algoritma VALIDASI_MASUKAN
{Melakukan validasi masukan yang diberikan oleh pengguna}

DEKLARASI
nilai: integer

DESKRIPSI
repeat
write(‘ Masukan (10 – 20) ? ‘)
read(nilai)
if (nilai<10) or (nilai > 20) then
write(‘ Masukan diluar rentang, ulangi lagi‘)
endif
Until (nilai>=10) and (nilai <= 20)
{Masukan sudah benar, silakan digunakan untuk proses selanjutnya}

Studi Kasus 3


• Misalkan nilai A=8 dan nilai B=5. Lakukan pertukaran nilai A dengan nilai B sehingga nilai A=5 (nilai B) dan nilai B=8 (nilai A)

Studi Kasus 4

• Lakukan pembacaan dari piranti input untuk nilai A, lakukan pembacaan dari piranti input untuk nilai B, tampilkan nilai A dan nilai B ke piranti keluaran. Lakukan pertukaran antara nilai A dan nilai B, tampilkan nilai A dan nilai B ke piranti keluaran.

Studi Kasus 5

• Rancanglah algoritma untuk membaca 2 bilangan. Kemudian hitunglah jumlah, rata – rata dan hasil perkalian dua bilangan tersebut.
Cetaklah tanda ‘ * ’ bila jumlahnya lebih besar dari 200. Jika tidak cetak Jumlah, rata – rata dan hasil perkalian dua bilangan.
Program akan berhenti bila kedua bilangan tersebut berharga 0

Studi Kasus 6

• Buat algoritma sequence untuk menghitung komisi yang diterima salesman berdasarkan jumlah penjualan yang dicapainya. Salesman mendapat komisi 10% dari hasil penjualannya. Masukan algoritma adalah nama salesman dan jumlah penjualannya, tampilkan ke piranti keluaran nama salesman dan besar komisi yang diperolehnya.



PERTEMUAN 8

Algoritma Shorting

• SORT adalah Suatu proses pengurutan data yang sebelumnya disusun secara acak atau tidak teratur menjadi urut dan teratur menurut aturan tertentu.

• Biasanya pengurutan menjadi 2 (dua), yaitu :

• Ascending → Pengurutan dari karakter / angka kecil ke karakter / angka besar.

• Descending → Pengurutan dari karakter / angka besar ke karakter / angka kecil.

Beberapa Metode String

Untuk melakukan proses pengurutan dapat menggunakan beberapa metode, diantaranyanya adalah :

  1. Bubble Sort
  2. Quick Sort
  3. Selection Sort
  4. Merge Sort

    Bubble Sort

• Bubble Sort adalah Suatu metode pengurutan yang membandingkan elemen yang sekarang dengan elemen berikutnya.

• Apabila elemen yang sekarang > elemen berikutnya, maka posisinya ditukar, kalau tidak, tidak perlu ditukar.

• Misalkan ada data-data sebagai berikut → 5, 34, 32, 25, 75, 42, 22, 2

• Kita ingin melakukan pengurutan dari yang terkecil sampai yang terbesar dari ke 8 (delapan) data tsb.

• Ada 7 (tujuh) langkah sampai dengan data tsb urut dan menghasilkan data sbb → 2, 5, 22, 25, 32, 34, 42, 75

Latihan Logika Bubble Sort

DATA → 4, 28, 31, 27, 80, 44, 12, 9 Berapa langkah supaya urut ??

DATA → 9, 21, 45, 11, 3, 8, 50, 77 Berapa langkah supaya urut ??

C++ Source Code Bubble Sort


Output Diagram

Tugas


• Buat makalah dengan mencari melalui internet tentang algoritma sorting selain bubble sort



PERTEMUAN 9

1. Linear Array

Linear Array (biasa disebut Array) adalah salah satu bentuk struktur data yang bersifat Linear (continue). Nilai data Array harus homogen (bertipe data sama).
Array merupakan koleksi data dimana setiap elemen memakai nama yang sama dan bertipe sama dan setiap elemen diakses dengan membedakan index array-nya.

ARRAY BERDIMENSI SATU

Representasi (Pemetaan) di memori
Memori komputer untuk pemetaan linear array dibentuk secara linear pula. Memori memiliki alamat (address), ibarat suatu komplek perumahan. Sebagai identifikasi, maka rumah-rumah tsb diberi nomor yang urut dalam pola yang tertentu (misalnya dari kecil ke besar).
Pemetaan di memori juga berfungsi sebagai identifikasi letak data, agar kelak data tsb dapat diambil kembali, maka akan dengan tepat ditemui data tersebut.


Array Dimensi Satu

Banyaknya alamat di memori tergantung dari jenis komputer yang digunakan, misalnya dari alamat 000000 hingga FFFFFF (dalam sistem bilangan Hexadesimal). Setiap alamat dapat ditempati oleh data sebesar satu byte.
Ketika kita memasukkan data baru, maka komputer akan mencatat dimana data itu disimpan. Elemen data pertama yang disimpan dalam alamat memori disebut dengan Base Address (B).
***
Jika kita memiliki 20 nilai data dalam variabel ber-subscript A yang masing-masing memerlukan 8 byte data dan base addressnya di 1000 berada di alamat berapakah mulainya nilai data A yang ke-18 disimpan ?

Berikut gambaran pemetaan data A di memori →


Array Dimensi Satu


Lihat gambar dibawah ini, nilai data A (18) dismpan mulai dari alamat 1136 di memori.


Formula Perhitungan Alokasi Memory Array


Keterangan :

AD = Posisi alamat awal dari nilai data yang akan dicari

B = Base Address

SK = Subscript ke berapa yang akan dicari

LD = Lebarnya data yang dapat disimpan di setiap alamat memori

AD = B + (SK-1) * LD

AD = 1000 + (18-1) * 8

AD = 1000 + 17 * 8

AD = 1000 + 136

AD = 1136

Array dengan C++

DEKLARASI ARRAY DENGAN C++
Perlu diperhatikan bahwa C++ secara otomatis akan menyediakan lokasi memori sesuai dengan yang dideklarasikan, dimana nomor indeks selalu dimulai dari 0.Berikut adalah contoh variabel bernama C yang mempunyai 5 (lima) lokasi memori yang semuanya bertipe int.

Masing-masing nilai dalam setiap lokasi mempunyai identitas berupa nama (‘C’) dan nomor indeks yang dituliskan didalam tanda kurung siku ‘[ ]’
Sebagai contoh : 72 adalah nilai dari C [3].
Nilai indeks merupakan suatu ekspresi.


Array dengan C++

DEKLARASI ARRAY DENGAN C++
Variabel array dideklarasikan dengan mencantumkan tipe dan nama variabel yang diikuti dengan banyaknya lokasi memori yang ingin dibuat. Dengan demikian, deklarasi untuk variabel array C diatas adalah :
int C[5]
Perlu diperhatikan bahwa C++ secara otomatis akan menyediakan lokasi memori sesuai dengan yang dideklarasikan, dimana nomor indeks selalu dimulai dari 0. Nilai suatu variabel array dapat juga diinisialisasi secara langsung pada saat deklarasi, misalnya :
int C[5] = { - 45, 0, 6, 72, 1543 }
Berarti setiap lokasi memori dari variabel array C langsung diisi dengan nilai-nilai yang dituliskan didalam tanda kurung kurawal.

Contoh: Array dimensi satu dengan C++


Contoh: Array dengan C++


Latihan

a). Jika kita memiliki 25 nilai data dalam variabel ber-subscript A yang masing-masing memerlukan 8 byte data dan base addressnya di 100 berada di alamat berapakah mulainya nilai data A yang ke-23 disimpan ?

b). Jika kita memiliki 35 nilai data dalam variabel ber-subscript B yang masing-masing memerlukan 4 byte data dan base addressnya di 1500 berada di alamat berapakah mulainya nilai data A yang ke-33 disimpan ?

c). Jika kita memiliki 75 nilai data dalam variabel ber-subscript C yang masing-masing memerlukan 10 byte data dan base addressnya di 900 berada di alamat berapakah mulainya nilai data A yang ke-65 disimpan ?

  1. Buatlah perhitungannya dengan rumus !
  2. Buatlah gambarannya !

PERTEMUAN 10

Fungsi

Fungsi Fungsi adalah sebuah modul program yang memberikan / mengembalikan (return) sebuah nilai yang bertipe sederhana (interger, real, bolean, dan string.

F(x)=2x + 5X – 8

H(x,y)= 3x-y+xy

Pada kedua contoh diatas f dan H adalah nama fungsi, sedangkan x dan y adalah parameter fungsi yang bersangkutan. Nilai yang diberikan oleh fungsi tergantung dari masukan parameternya contoh :
X=2 , maka f(2)=2.2+5.2-8 =10
X=1 y=2, maka H(1,2)=3.1-2+1.2=3
Nilai 10 dan 3 pada kedua contoh diatas adalah nilai yang diberikan oleh masing-masing fungsi

Mendefinisi Fungsi

Struktur fungsi sama dengan struktur algoritma yaitu header yang berisi nama fungsi dan spesifikasi fungsi, bagian deklarasi dan badan fungsi. Setiap fungsi memiliki nama unik serta daftar parameterNotasi algoritmik untuk mendefinisikan fungsi adalah:
Function NAMA_FUNGSI (input daftar parameter formal)→ tipe hasil

(spesifikasi fungsi, menjelaskan apa yang dilakukan dan yang dikembalikan oleh fungsi)
DEKLARASI

{semua nama yang dipakai didalam algoritma fungsi dideklarasi disini, Nama yang didefinisikan dalam Deklarasi lokal hanya dikenal dan dipakai didalam fungsi ini saja}

DESKRIPSI
{badan fungsi , berisi instruksi untuk menghasilkan nilai}
Return hasil { pengembalian yang dihasilkan fungsi}

Pemanggilan Fungsi

Karena fungsi menghasilkan nilai maka nilai tersebut dapat ditampung dalam sebuah peubah
Peubah← nama_fungsi (daftar parameter aktual)
Contoh

a). Write (nama_fungsi(daftar parameter aktual));

b). If nama_fungsi (daftar parameter aktual )<0 then

c). Z← nama_fungsi (daftar parameter aktual)-x+y;



PERTEMUAN 11

Sorting Pengurutan

Insert Sorting

Algoritma :
For ( I = 1; I<n; I++ ){
X = A[I]. Sisipkan x pada tempatnya yang sesuai antara A[0] s/d A[I-1]. }=
y = Arr
for(  ;& & y < Arr[j-1]);



PERTEMUAN 12

Searching (Pencarian)

Pencarian (Searching)

• Kunci (key) digunakan untuk melakukan pencarian record yang dinginkan didalam suatu list5.

• Kunci harus unik ,artinya tidak boleh boleh ada data yang sama dalam satu list.

• Kunci yang merupakan bagian dari record disebut kunci intern (internal-key). Kunci yang tidak merupakan bagian dari record tetapi bagian dari record tetapi berkaitan dengan record, disebut Kunci - luar (externa-key),biasamya berupa file indeks.

• Contoh : satu record data mahasiswa terdiri dari (Nama, NIM, jenis-kelamin , Alamat, Tempat/tanggal Lahir).

• Nim digunakan sebagai kunci karena NIM merupakan atribut yang bersifat unik tidak ada yang sama.

Teknik Sequential

• Merupakan teknik yang sederhana dan langsung , dapat digunakan pada struktur data baik array maupun linked-list dan data tidak perlu urut.

Algoritma

N: Banyaknya record dalam list array k
untuksetiap k [I] :0 I N-1
Uji apakah k [I] = Kunci
Bila k [I] = Kunci ,indeks:= selesai
Bila k [I] = < > Kunci, lanjutkan pencarian hingga I =N-1
Bila I = N-1 dan k[I] < > Kunci,
Indeks =-1-» berarti data yang dicari tidak ada
Selesai


PERTEMUAN 13

Merge Sort

Dengan Iteratif
Adalah teknik sorting dengan ide dasarnya adalah menggabungkan setiap kali dua deretan angka atau elemen dan melakukan sort terhadap angka-angka atau elemen-elemen tersebut.

Ulangi langkah tersebut sampai diperoleh dua deretan elemen yang akan digabungkan menjadi satu deretan angka atau elemen yang sudah di sort.

Proses Merge Sort


LaTiHaN….

1). Urutkan bilangan dibawah ini dengan menggunakan merge sort 25 31 10 85 70 13 15 27 44 81

2). Buatlah diagram alir untuk proses merge sort



PERTEMUAN 14

String

String adalah deretan karakter dengan panjang tertentu.
Contoh :
’Halo-halo Bandung’
’Jurusan Manajemen Informatika’
’07680322’

Operasi String

Operasi terhadap string ada 2 macam :

  1. Operasi penyambungan (concatenation)
  2. Operasi perbandingan

Operasi penyambungan (concatenation)

Operator : +
Operator : ”+” disini bukanlah operator penjumlahan seperti tipe numerik (integer atau real). Operator ”+” berarti penyambungan.
Contoh :
’Teknik ’ + ’Informatika’ = ’Teknik Informatika’
’1’ + ’2’ = ’12’ (namun 1 + 2 = 3, mengapa ?)

Operasi perbandingan

Operasi perbandingan dengan string, memakai operator perbandingan seperti : = < > ≤ ≥ <>
Contoh :
’abcd’ = ’abc’ (hasil : False)
’aku’ < ’AKU’ (hasil : True)

String yang disusun oleh gabungan numeric dan karakter sering dinamakan Alfanumerik.
Misalnya :
’K079298’
’A051374’

• Suatu string didalam bahasa pascal dapat dioperasikan dengan berbagai macam tujuan.

• Beberapa string dapat dirangkai menjadi satu, dapat digunakan sebagai kondisi yang diseleksi dan lain sebagainya.

Merangkai String

Panjang maksimum suatu string yang diijinkan oleh Pascal adalah 255 karakter

Ekspresi String

Ekspresi string adalah ekspresi dengan operator ”+” (operator penyambungan/concatenation).

Pengerjaan suatu string hanya mempunyai sebuah operator, yaitu operator ‘+’.
Bila operator ini digunakan untuk penambahan nilai numerik, maka akan berfungsi menjumlahkan dua buah nilai elemen numerik.
Sedang pada string, operator ini digunakan untuk merangkai dua buah elemen string menjadi sebuah string.

Contoh

Misal suatu variable didefinisikan deklarasi sbb :
Deklarasi
Var Kar : char
S, Alamat, A : string;

Contoh ekspresi string-nya :
1. S = ’a’
Kar = ’b’
S = (S+Kar) + ’c’
Hasilnya → S = ’abc’
Alamat = ’ Jl. Gatot Subroto ’ + ’No. 10’
Hasilnya → Alamat = ’ Jl. Gatot Subroto No. 10’
2. A = ‘1’ + ‘2’ Hasilnya → A = ‘12’
A = ‘10’ + ‘25’ Hasilnya → A = ‘1025’


Contoh Merangkai String

Const
Jenis =’bahasa’;
Nama =’ TURBO PASCAL’;
Var
Sifat : string[10];
Kalimat : string [80];
Begin
Sifat :=’terstruktur’;
Kalimat := jenis+’ ‘+nama+’ ‘+’merupakan’+’ ‘+’jenis’+’ ‘+ sifat ;
Writln (kalimat);
End.

Procedre Standar untuk Operasi String

• Procedure standar Delete
• Procedure standar Insert
• Procedure standar Str
• Procedure standar Val

Procedure Standart Delete

Bentuk umum
Delete (var s: string; index : integer; count :integer);

Contoh

Var
Bahasa : string [12];
Ururtan, posisi : integer;
Begin
Bahasa := ‘TURBO PASCAL’;
For urutan := 1 to 12 Do
Begin

posisi :=14-urutan;
Delete (bahasa, posisi, 1);
Writeln (Bahasa);
End;
End.

Procedure standar Insert

Bentuk Umum
Insert ( Source : string; var s : string; index: integer;

Procedure standar Str

Bentuk Umum
Str (x [: width [:decimals] var s: string);

Procedure standar Val

• Bentuk Umum
• Val ( s: string v; var code);

Fungsi standar untuk Operasi String

• Fungsi Standar Copy
• Fungsi Standar ConCat
• Fungsi Standar Pos
• Fungsi Standar Length

Contributors

Yessi Frecilia