Senin, 16 Desember 2019

4. Tipe Data, Nama dan Nilai

1. Tipe
   •Pada umumnya, program komputer bekerja dengan memanipulasi objek(data) di dalam memori.
  •Objek(data) yang akan diprogram bermacam-macam jenis atau tipenya misalnya nilai
    numerik(angka), karakter(huruf), kumpulan karakter, dll.
  •Suatu tipe menyatakan jenis data yang akan dimanipulasi dalam program, gunanya untuk mendefinisikan objek yang akan diprogram.
  •Suatu tipe diacu dari namanya.
  •Nilai-nilai yang dicakup oleh tipe tersebut dinyatakan dalam domain nilai.
  •Tipe data dikelompokkan menjadi tipe dasar dan tipe bentukan.

1.1. Tipe Dasar
      Tipe yang dapat langsung dipakai(angka-angka atau karakter) karena sudah   didefinisikan sebelumnya oleh pemroses bahasa.
Bilangan Bulat, Bilangan yang tidak mengandung pecahan desimal.
   –Nama Tipe : Integer
   –Domain Nilai :
    •Secara teoritis tak terbatas dari -∞ s.d +∞.
   •Pada algoritma dapat dibatasi tergantung kebutuhan untuk objek, misalnya untuk jam [0..23].
  •Dalam implementasinya pada bahasa pemrograman, tipe integer punya rentang nilai terbatas untuk menghemat memory.
–Contoh nilai : 300, 0, -1000, 113010038, -24
–Contoh objek : Jam, Menit, Detik

Bilangan Riil, Bilangan yang mengandung pecahan desimal.
   –Nama Tipe : Real.
    –Domain Nilai :
       •Secara teoritis tak terbatas dari -∞ s.d +.
       •Ditulis dengan titik desimal.
–Contoh nilai : 2.8 , -0.39, 4.24 , 57.567, -102.00

–Contoh objek : Nilai ujian

1.2. Tipe Bentukan
Tipe yang dibentuk(dan diberi nama) dari tipe dasar atau dari tipe lain yang sudah dikenal, bahkan dapatt didefinisikan sendiri oleh pemrogram. Macam tipe bentukan :
String(kumpulan karakter), Deretan karakter dengan panjang tertentu.
–Nama Tipe : String
–Domain Nilai : Satu atau lebih karakter yang diapit oleh tanda petik tunggal
–Contoh nilai : ’Apa kabar’, ’Teknik Informatika’, ’A234’, ’Ramayana’, ’123’
–Contoh objek : Nama, Alamat
Tipe bentukan dari tipe data dasar atau tipe bentukan lain : Kata Kunci type
     –Deklarasi kamus data : type nama_tipe_bentukan : tipe_data
   Contoh : membuat sebuah tipe data baru bernama BilBulat yang memiliki domain 
            nilai yang sama dengan tipe integer
          •type BilBulat : integer;

Record
–Record tersusun dari satu atau lebih field.
–Tiap field menyimpan data dengan tipe tertentu.
–Deklarasi kamus data :
  type Nama_Record : record < nama_field1 :tipe_field1,   nama_field2 :tipe_field2,
  ....
  nama_fieldn : tipe_fieldn>
–Contoh :
Titik dalam koordinat kartesian dinyatakan sebagai (x,y) dengan x adalah nilai absis dan y adalah nilai ordinat. Kita dapat menyatakan titik sebagai record dengan (x,y) sebagai field
type Titik : record < x : real, y : real > atau
type Titik : record< x , y : real >

2. Nama
   •Nama digunakan mengidentifikasi objek dan mengacu objek tersebut.
   •Dalam sebuah teks algoritmik, objek yang diberi nama bisa berupa :
–Modul program, Algoritma
–Variabel
–Konstanta
–type
–Fungsi
–Prosedur
  •Karena adanya bermacam-macam nama tersebut, maka dalam suatu teks algoritma dikenal nama program, nama variabel, nama konstanta, nama fungsi, nama prosedur, nama type.
  •Setiap bahasa pemrograman memiliki aturan masing-masing untuk mendefinisikan nama(panjang maks nama, perbedaan huruf besar dan kecil) tetapi dalam algoritma batasan pendefinisian nama tidak seketat pada bahasa pemrograman.
  •Syarat-syarat penggunaan sebuah nama pada algoritma:
     –Pemilihan nama harus interpretatif(disesuaikan dengan objek yang diidentifikasi) dan tidak menimbulkan kerancuan
     –Nama harus unik dalam sebuah algoritma/program
     –Nama tidak boleh dipisahkan oleh spasi
     –Tidak case sensitive (huruf besar dan kecil tidak dibedakan)
     –Tidak boleh mengandung symbol khusus
     –Nama harus dideklarasikan pada bagian tertentu supaya dapat dipakai
Nama Algoritma
   Digunakan untuk mengidentifikasi sebuah program atau algoritma, dideklarasikan pada bagian Judul algoritma
    –Contoh : Algoritma Luas_Lingkaran, Algoritma Kelulusan_Mhs
Nama Peubah(variabel)
    Tempat penyimpan data/informasi/nilai yang isinya dapat diubah selama eksekusi
       program berlangsung.
    –Setiap variabel mempunyai tiga atribut, yaitu nama, tipe, dan nilai.
    –Nama variabel dan tipe datanya dideklarasikan pada bagian Kamus.
    –Sedangkan nilai yang disimpan dalam variabel didefinisikan pada bagian deskripsi
      algoritma.
–Bentuk umum deklarasi variabel adalah :
  nama_variabel : tipe data

–Contoh:
Nama Tetapan(konstanta)
–Tempat penyimpan data/informasi/nilai yang isinya tidak dapat diubah selama pelaksanaan program
–Nama, tipe, dan nilai Konstanta dideklarasikan pada bagian Kamus.
–Untuk mendefinisikan konstanta harus memakai kata kunci const dan konstanta harus langsung diisi dengan sebuah nilai tertentu.
–Bentuk umum deklarasi konstanta adalah :
  const nama_konstanta : tipe = nilai

–Contoh:



3. Aturan penulisan notasi algoritma

1.1. Aturan penulisan notasi algoritma
   •Penulisan algoritma tidak tergantung dari spesifikasi bahasa pemrograman dan komputer yang mengeksekusinya melainkan bersifat umum tetapi notasi-notasi algoritma dapat diterjemahkan ke dalam berbagai bahasa pemrograman.
  •Notasi algoritma dapat berupa :
  –Uraian kalimat deskriptif (narasi)
   Instruksi pada algoritma dapat dituliskan dalam bahasa sehari-hari (B.Indonesia, B.Inggris, dsb).
    •Tidak aturan yang baku untuk menuliskan algoritma dalam bentuk notasi ini, tetapi penulisan algoritma menggunakan notasi ini dapat menimbulkan ambiguitas.
  –Bagan alir (flow chart)
    Instruksi-instruksi pada Algoritma digambarkan secara grafis (menghasilkan sebuah bagan) menggunakan simbol-simbol tertentu dengan aturan sebagai berikut :



Pseudo-code
 Penulisan teks algoritma dengan Pseudo-code menggunakan notasi-notasi tertentu yang mendekati bahasa pemrograman sehingga lebih mudah ditranslasikan ke dalam bahasa pemrograman
Aturan Penulisan Teks Algoritma :

1.2. Contoh penulisan notasi algoritma

   Contoh 1 : Algoritma Luas_Lingkaran
Menghitung dan menampilkan Luas Lingkaran dengan masukan jari-jari lingkaran
    Contoh Penulisan Algoritma :
Uraian kalimat deskriptif (narasi)
DESKRIPSI :
Baca jari-jari lingkaran (R)
Phi ß 3.14
Luas ß Phi x R x R
Tulis Luas
Flowchart                                          —Pseudo-code
       


    Contoh 2 : Algoritma Kelulusan_Mhs
      Diberikan nama dan nilai mahasiswa, jika nilai tersebut lebih besar atau sama dengan 60 maka mahasiswa tersebut dinyatakan lulus jika nilai lebih kecil dari 60 maka dinyatakan tidak lulus.
 •Uraian kalimat deskriptif (narasi)
DESKRIPSI :
baca nama dan nilai mahasiswa.
jika nilai >= 60 maka keterangan = lulus
tetapi jika nilai < 60 maka keterangan = tidak lulus.
tulis nama dan keterangan
Flow chart
Pseudo-code

Contoh 3 : Algoritma Cetak_Frase
Diberikan sebuah angka, kemudian tuliskan frase ‘Dasar Pemrograman’ sebanyak angka tersebut
Uraian kalimat deskriptif (narasi)
DESKRIPSI :
–baca angka
–selama jumlah_frase_tercetak < angka
•tulis ’Dasar Pemrograman’
Flow chart
Pseudo-code

2. Konsep Dasar Algoritma

1.1. Pengertian algoritma

Algoritma adalah urutan langkahlangkah logis peenyelesaian masalah yang disusun secara sistematis dan tidak tergantung pada bahasa pemrograman.
Kata Logis merupakan kata kunci dalam Algoritma. Langkahlangkah dalam Algoritma harus logis (masuk akal dan mengikuti suatu urutan tertentu, tidak boleh melompat-lompat) serta harus dapat ditentukan bernilai salah atau benar
Perbedaan algoritma dengan pemrograman,
 – Komputer hanyalah salah satu pemroses,  agar dapat dilaksanakan oleh komputer algoritma harus ditulis dalam notasi bahasa pemrograman sehingga dinamakan program.  
  – Jadi program adalah perwujudan atau implementasi teknis Algoritma yang ditulis dalam bahasa pemrogaman tertentu sehingga dapat dilaksanakan oleh komputer.


•Tahapan pelaksanaan algoritma oleh komputer
•Algoritma sangat diperlukan dalam menyelesaikan berbagai masalah pemrograman, terutama dalam komputasi numeris.
•Tanpa algoritma yang dirancang baik maka proses pemrograman akan menjadi salah, rusak, atau lambat dan tidak efisien.
1.2. Algoritma untuk memecahkan permasalahan sehari-hari
Contoh 1 :
Jika seorang ingin memasak atau membuat kue, baik itu melihat resep ataupun tidak
pasti akan melakukan suatu langkah-langkah tertentu sehingga masakannya atau
kuenya jadi dan rasanya enak.
•Contoh 2 : Algoritma TUKAR ISI BEJANA
Diberikan dua buah bejana A dan B, bejana A berisi larutan berwarna merah, bejana B
berisi larutan berwarna biru. Pertukarkan isi kedua bejana itu sedemikian sehingga
bejana A berisi larutan berwarna biru dan bejana B berisi larutan berwarna merah.
Deskripsi Algoritma 1:
Aksi 1 : Tuangkan larutan dari bejana A ke dalam bejana B
Aksi 2 : Tuangkan larutan dari bejana B ke dalam bejana A.
Algoritma TUKAR ISI BEJANA di atas tidak menghasilkan pertukaran yang benar.
   Langkah di atas tidak logis, hasil pertukaran yang terjadi adalah percampuran kedua
   larutan tersebut.
Untuk mempertukarkan isi duah bejana, diperlukan sebuah bejana tambahan sebagai
   tempat penampungan sementaramisalnya bejana C. Maka algoritma untuk
   menghasilkan pertukaran yang benar adalah sebagai berikut :
Deskripsi Algoritma 2:
Aksi : Tuangkan larutan dari bejana A ke dalam bejana C.
Aksi 2 : Tuangkan larutan dari bejana B ke dalam bejana A.
Aksi 3 : Tuangkan larutan dari bejana C ke dalam bejana B.
Contoh 3 : Ibu Tati mengupas kentang untuk makan malam
  Sub masalah :
  1.Apakah kentangnya harus dibeli dulu atau sudah di dapur?
  2.Apakah pisau sudah siap?
  3.Berapa jumlah kentang yang dikupas?
Maka kita harus membatasi dengan jelas keadaan awal dan keadaan akhirnya.
Keadaan awal dan keadaan akhir algoritma dapat dijadikan acuan bagi pemrogram dalam merancang sebuah algoritma
Initial State(T0) : Kentang sudah ada di kantong plastik, yang ditaruh di lemari di dapur dimana Ibu Tati akan mengupasnya, pisau ada di rak.
Final State(T1) : 100 Kentang dalam keadaan terkupas siap untuk dimasak dan kantong kentangnya harus dikembalikan ke lemari lagi jika masih ada kentangnya.

Deskripsi Algoritma 1
Aksi 1 : Ibu Tati mengambil kantong kentang dari lemari
Aksi 2 : Ibu Tati mengambil pisau dari rak
Aksi 3 : Ibu Tati mengupas kentang
Aksi 4 : Ibu Tati mengembalikan kantong kentang ke dalam lemari
Deskripsi Algoritma di atas masih belum memenuhi Final State dimana kentang yang
sudah dikupas ada 100 buah dan kantong kentang harus dikembalikan ke lemari jika
masih ada kentangnya. Pada algoritma tersebut kentang yang dikupas hanya 1 dan Aksi
4 akan tetap dilaksanakan walaupun kantong kentang sudah kosong.
Supaya kentang yang sudah terkupas ada 100 maka perlu dilakukan proses
PENGULANGAN pengupasan kentang sebanyak 100 kali. Dan supaya Ibu Tati hanya
mengembalikan kantong kentang ke lemari hanya jika masih ada isinya, maka perlu
ada PEMILIHAN berdasarkan kondisi isi kantong kentang. Maka algoritma untuk
mencapai Final State yang benar adalah sebagai berikut :

Deskripsi Algoritma 2
Aksi 1 : Ibu Tati mengambil kantong kentang dari lemari dan
Aksi 2 : Ibu Tati mengambil pisau dari rak
Aksi 3 : Selama kentang terkupas < 100 maka
                  •Kupas 1 kentang
Aksi 4 : Lihat isi kantong
                •Kantong Kosong à buang
                •Kantong Tidak kosong à Kembalikan kantong ke lemari

Ciri penting algoritma:
Algoritma harus berhenti setelah mengerjakan sejumlah langkah terbatas.
Setiap langkah harus didefinisikan dengan tepat dan tidak berarti-dua (Ambiguitas).
Algoritma memiliki nol atau lebih masukan (input).
Algoritma memiliki nol atau lebih keluaran (output).
Algoritma harus efektif (setiap langkah harus sederhana sehingga dapat dikerjakan dalam waktu yang efisien).

1.3. Struktur dasar algoritma
     Langkah-langkah penyelesaian masalah bisa berupa :
     a.Runtunan (sequence)
 –Sebuah runtunan terdiri dari satu atau lebih instruksi.
          –Tiap instruksi dikerjakan berurutan sesuai aturan penulisannya.
          – Urutan instruksi menentukan keadaan akhir algoritma, jika urutannya diubah maka       hasil akhirnya mungkin akan berubah.
       –Urutan instruksi menunjukkan cara berfikir penyusun algoritma dalam menyelesaikan masalah.
        Contoh : Algoritma Tukar isi Bejana
                       Runtunan instruksi :
1.Tuangkan larutan dari bejana A ke dalam bejana C
2.Tuangkan larutan dari bejana B ke dalam bejana A
3.Tuangkan larutan dari bejana C ke dalam bejana B
Hasil akhir :
Bejana A berisi larutan dari bejana B, bejana B berisi larutan dari bejana A
Jika runtunan instruksi diubah maka hasilnya berubah

     b.Pemilihan (selection)
Adakalanya sebuah instruksi dikerjakan jika sebuah kondisi tertentu terpenuhi Struktur umum:
If kondisi
Then
  Aksi
Atau
If kondisi
Then
Aksi 1
Else
Aksi 2
         Contoh :
If Amir memperoleh juara kelas then
Ayah akan membelikannya hadiah
If Jalan Dago macet then
Ambil alternative Jalan Dipati Ukur
If Kantong Kentang kosong then
Buang
Else
Kembalikan kantong kentang ke lemari
Endif

c.Pengulangan (repetition)
    Komputer tidak pernah bosen dan lelah jika diminta untuk mengerjakan instruksi
    secara berulang-ulang.
    Contoh :
  Menulis kalimat ”Saya harus lebih giat belajar” sebanyak 1000 kali Ulangi :
   - Tulis kalimat ” Saya harus lebih giat belajar” Sampai jumlah_kalimat = 1000
–Mengupas 100 buah kentang Selama kentang terkupas < 100 maka
- Kupas 1 kentang