Mata kuliah Algoritma dan Pemrograman bertujuan untuk memberikan pemahaman konsep algoritma dan penerapannya dalam pembuatan program menggunakan bahasa pemrograman tertentu. Mahasiswa akan mempelajari logika berpikir komputer, prinsip kerja program, dan membuat program sederhana menggunakan bahasa C.
3. Kompetensi Matakuliah
Mahasiswa mampu:
menjelaskan logika berpikir komputer (computational
thinking),
menjelaskan alasan-alasan komputer dapat mengerjakan
perintah-perintah yang diberikan,
menjelaskan prinsip kerja program,
menggambarkan logika jalannya program secara tertulis
dengan algoritma (pseudo code) dan dilengkapi dengan
diagram alir (flow chart) menggunakan suatu bahasa
pemrograman tertentu
menjelaskan konsep pemrograman terstruktur
membuat program sederhana dengan bahasa C
5. Mengapa Belajar Algoritma dan
Pemrograman?
Untuk menulis kode dalam bahasa yang dimengerti
komputer
Untuk melatih logika berpikir
Untuk dasar matakuliah lain di Teknik Informatika dan
Sistem Informasi
6. Apakah belajar programming
itu sulit?
Hanya butuh waktu / “jam terbang”
Hanya butuh semangat dan kemauan
Hanya butuh sering mencoba / latihan!
Kuncinya latihan dan diskusi!
7. Referensi
Referensi
Algoritma dan Pemrograman dalam Bahasa
Pascal dan C (Buku 1), Rinaldi Munir, Informatika
Bandung
Algoritma dan Pemrograman dalam Bahasa
Pascal dan C (Buku2), Rinaldi Munir&Leoni Lidya,
Informatika Bandung
11. Definisi Program
Perwujudan atau implementasi algoritma yang ditulis dalam bahasa
pemrograman tertentu
A computer program is just a collection of the instructions necessary
to solve a specific problem
Program adalah kumpulan instruksi atau perintah yang disusun
sedemikian rupa sehingga mempunyai urutan nalar yang tepat untuk
menyelesaikan suatu persoalan.
Adalah kumpulan instruksi-instruksi tersendiri yang biasanya disebut
source code yang dibuat oleh programmer (pembuat program)
Instruksi (statement) yang dimaksud adalah syntax (cara penulisan)
sesuai dengan bahasa pemrograman yang digunakan yang
mempunyai komponen-komponen : Input, Output, Proses,
Percabangan dan Perulangan.
12. Algoritma
Penemunya adalah seorang ahli matematika dari
uzbekistan yang bernama Abu Abdullah Muhammad Ibn
Musa al-Khwarizmi (770-840).
Di literatur barat dia lebih terkenal dengan sebutan
Algorizm. Panggilan inilah yang kemudian dipakai untuk
menyebut konsep algorithm yang ditemukannya. Dalam
bahasa Indonesia kita kemudian menyebutkannya sebagai
algoritma.
Algoritma adalah kunci dari bidang ilmu komputer, karena
banyak bidang di bawah ilmu komputer yang lahir
berdasarkan konsep algoritma ini.
Pada hakekatnya algoritma juga adalah kunci dari
kehidupan kita.
Cara membuat masakan (resep masakan) adalah juga
sebuah contoh nyata dari algoritma.
13. Algoritma
adalah logika, metode dan tahapan
(urutan) sistematis yang digunakan untuk
memecahkan suatu permasalahan.
urutan langkah logis untuk
menyelesaikan masalah tertentu
14. Algoritma
Ketika manusia berusaha memecahkan
masalah, metode atau teknik yang
digunakan untuk memecahkan masalah
itu ada kemungkinan bisa banyak (tidak
hanya satu).
Dan kita memilih mana yang terbaik
diantara teknik-teknik itu.
Hal ini sama juga dengan algoritma,
yang memungkinkan suatu
permasalahan dipecahkan dengan
metode dan logika yang berlainan.
15. Komunikasi Manusia dan
Komputer
Proses komunikasi antara manusia dengan komputer adalah sebagai
berikut:
Manusia mendesain Algoritma
Manusia menterjemahkan Algoritma tersebut ke dalam bahasa
pemrograman yang dipilih sehingga menjadi sebuah program
Komputer menjalankan program hasil penterjemahan algoritma menjdi
bahasa pemrograman diatas
Komputer mengeluarkan respon kepada manusia
16. User : Masukkan user name
User : Masukkan Password
Sistem :Cek apakah username terdaftar?
Sistem :Jika tidak terdaftar, maka sistem akan
mengeluarkan peringatan adanya kesalahan. Jika terdaftar
maka, selanjutnya sistem akan mengecek apakah username
dan password cocok (sesuai dengan database)?
Sistem :Jika Username dan password cocok maka user
diperbolehkan masuk ke Facebook ybs. Jika tidak cocok
maka sistem akan mengeluarkan peringatan adanya
kesalahan
User : Dapat mengakses halaman facebook ybs
Algoritma Login ke Facebook
17. Belajar Memprogram & Belajar
Bahasa Pemrograman
Belajar memprogram:
pemahaman persoalan, analisis, dan sintesis
Belajar Bahasa Pemrograman :
Belajar memakai suatu bahasa
aturan sintaks (tata bahasa)
Pemecahan Masalah
-Strategi
-Metodologi
-Sistematika
Notasi yang telah
disepakati
18. Bahasa Pemrograman
Adalah alat untuk membuat program
Contoh: C, C++, C#, Pascal, Basic, Perl, PHP, ASP, JHP,
Java, dll.
Perbedaan: cara memberikan instruksi (sintaks)
Persamaan: bertujuan menghasilkan output yang sama
19. Bahasa C di tingkat dunia
http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html
20. Paradigma Pemrograman
Pemrograman Prosedural / Terstruktur
Berdasarkan urutan-urutan, sekuensial
Program adalah suatu rangkaian prosedur untuk
memanipulasi data. Prosedur merupakan kumpulan instruksi
yang dikerjakan secara berurutan.
Harus mengingat prosedur mana yang sudah dipanggil dan
apa yang sudah diubah.
Program dapat dibagai-bagi menjadi prosedur dan fungsi.
Contoh: PASCAL dan C
Pemrograman Fungsional
Berdasarkan teori fungsi matematika
Fungsi merupakan dasar utama program.
Pemrograman Modular
Pemrograman ini membentuk banyak modul.
Modul merupakan kumpulan dari prosedur dan fungsi yang
berdiri sendiri
Sebuah program dapat merupakan kumpulan modul-modul.
Contoh: MODULA-2 atau ADA
21. Paradigma Pemrograman
Pemrograman Berorientasi Obyek
Pemrograman berdasarkan prinsip obyek, dimana obyek
memiliki data/variabel/property dan
method/event/prosedur yang dapat dimanipulasi
Contoh: C++, Object Pascal, dan Java.
Pemrograman Berorientasi Fungsi
Pemrograman ini berfokus pada suatu fungsi tertentu saja.
Sangat tergantung pada tujuan pembuatan bahasa
pemrograman ini.
Contoh: SQL (Structured Query Language), HTML, XML
dan lain-lain.
Pemrograman Deklaratif
Pemrograman ini mendeskripsikan suatu masalah dengan
pernyataan daripada memecahkan masalah dengan
implementasi algoritma.
Contoh: PROLOG
23. Siklus Hidup Perangkat
Lunak (Waterfall Model)
Dilihat dari Siklus diatas, Algoritma Pemrograman menempati
posisi dibagian Code / implementasi karena bagian implementasi
merupakan bagian dimana pemrogram melakukan proses coding
(pembuatan program).
24. Aksi dalam algoritma
Kejadian yang terjadi pada waktu yang terbatas dan
menghasilkan efek yang memang direncanakan
Dari waktu0 ke waktuN
Contoh: “aksi Bu Ani mengupas kentang untuk makan
malam”
Batasan:
Apa kentang harus dibeli dulu atau sudah ada?
Apakah mengupas berarti sampai kentang terhidang?
Apakah setelah kentang selesai dikupas, harus ada kegiatan
lain seperti dibuat sup atau digoreng?
Berarti harus ada kejadian awal = start dan kejadian akhir =
finish
Kejadian bu Ani dapat juga diterapkan pada ibu-ibu
yang lain, yang juga akan mengupas kentang
Cara (Metode) sebisa mungkin harus bersifat universal
25. Contoh kasus
Ada 2 gelas kosong berukuran: 5 liter dan 3 liter
Bagaimana cara kita mendapatkan air berukuran 4
liter?
Bagaimana cara mendapatkan air berukuran 2 liter?
26. Cara
Masukkan air ke 3 liter hingga penuh
Masukkan air 3 liter ke 5 liter, sisa 2 liter
kosong
Masukkan air ke 3 liter hingga penuh
Tuangkan air 3 liter ke sisa 2 liter, berarti sisa
1 liter di gelas 2 liter
Buang seluruh air di gelas 5 liter tadi
Tuangkan air 1 liter yg ada di gelas 3 liter tadi
hingga ke 5 liter kosong
Masukkan air ke 3 liter hingga penuh
Tuangkan 3 liter ke gelas 5 liter yang sudah
ada 1 liter tadi, hingga kita dapat 4 liter
28. Proses, Instruksi, dan Aksi
Algoritma merupakan deskripsi urutan
pelaksanaan suatu proses
Algoritma tersusun oleh sederetan
langkah instruksi yang logis
Tiap langkah instruksi akan mengerjakan
suatu tindakan (Aksi)
Bila Aksi dilaksanakan, maka sejumlah
operasi yang bersesuaian akan
dikerjakan oleh CPU
29. Struktur Dasar Algoritma
Runtunan (sequence)
aksi-aksi dalam algoritma yang dikerjakan secara
berurutan
contoh :
A1. Aksi 1
A2. Aksi 2
A3. Aksi 3
30. Struktur Dasar Algoritma(2)
Pemilihan (selection)
aksi dikerjakan jika kondisi tertentu terpenuhi
contoh :
IF kondisi1 THEN
Aksi1
ELSE
IF kondisi2 THEN
Aksi2
ELSE
Aksi3
(Aksi 3 dilakukan jika kondisi 1 dan 2
tidak terpenuhi)
IF kondisi THEN
aksi
IF kondisi THEN
aksi1
ELSE
aksi2
31. Struktur Dasar Algoritma (3)
Pengulangan (repeatition)
aksi-aksi yang dikerjakan berulang kali
contoh :
FOR pencacah pengulangan dari a sampai b DO
Aksi
(aksi dilakukan sebanyak hitungan pencacah pengulangan, yaitu
dari a sampai b yakni sebanyak b-a+1 kali)
REPEAT
Aksi
UNTIL kondisi
(pengulangan aksi dilakukan sehingga kondisi/persyaratan
berhenti terpenuhi)
WHILE kondisi DO
Aksi
(selama kondisi/persyaratan pengulangan masih benar, maka
aksi dikerjakan)
32. Flow Chart
Flow chart suatu bagan/diagram yang
menggambarkan aliran proses yang
dikerjakan program dari awal sampai
akhir.
Flow chart adalah algoritma yang
digambarkan dengan diagram
Fungsi dari flow chart adalah
mendeskripsikan urutan pelaksanaan
suatu proses (sama dengan fungsi
algoritma)
37. Teks Algoritma
Teks algoritma berisi langkah-langkah
penyelesaian masalah
Tidak ada notasi baku tapi sebaiknya
berkorespondensi dengan bahasa
pemrograman umum, supaya mudah
ditranslasikan ke dalam bahasa
pemrograman
Notasi yang digunakan untuk menulis
algoritma disebut notasi algoritmik
38. Teks Algoritma
Struktur teks algoritma
Kepala algoritma
terdiri atas nama algoritma dan penjelasan
(spesifikasi) tentang algoritma tersebut
Deklarasi
mendefinisikan semua nama (konstanta, peubah,
tipe, prosedur atau fungsi) yang dipakai dalam
algoritma
Deskripsi
Berisi uraian langkah-langkah penyelesaian
Komentar ditulis diantara tanda kurung “{“ dan “}”
39. Contoh Teks Algoritma
Judul algoritma
spesifikasi algoritma
Kata2 yg biasanya menjadi keyword bhs pemrogram diberi garis bawah
42. Tipe Data
Tipe data terdiri dari tipe:
Tipe dasar
Tipe yang dapat langsung dipakai (disediakan
oleh bahasa pemrograman)
Contoh: boolean, integer, real, char, string (?)
Tipe bentukan
Tipe yang didefinisikan sendiri oleh pemrogram
Tipe yang dibentuk dari tipe dasar atau dari tipe
bentukan lain yang sudah didefinisikan
Contoh: tipe dasar yang diberi nama tipe baru,
record
43. Tipe Data(2)
Empat hal yang harus diperhatikan dalam pendefinisian tipe:
Nama
Domain harga
Konstanta
Operator
45. Tipe Bentukan
Tipe dasar yang diberi nama tipe baru
Nama baru untuk tipe dasar menggunakan kata kunci type
Domain nilai, cara menulis konstanta, dan operasi-operasi
yang dapat dijalankan pada tipe baru tersebut tidak
berubah, sama seperti tipe dasarnya.
Contoh: type BilanganBulat: integer
Rekaman (record)
Rekaman disusun atas satu atau lebih field
Tipe field menyimpan data dan tipe dasar tertentu atau dari
tipe bentukan lain yang sudah didefinisikan sebelumnya
Nama rekaman ditentukan oleh pemrogram
Rekaman disebut juga tipe terstruktur
46. Contoh Record
DEKLARASI
type MataKuliah : record <KodeMK : string, {kode matakuliah}
NamaMK : string, {nama matakuliah}
Nilai : char {indeks nilai}
>
type Mahasiswa : record <NIM : integer, {nomor mhs}
NamaMhs : string, {nama mhs}
MK : array[1..4] of MataKuliah
>
LarikMhs : array[1..100] of Mahasiswa
47. Nama
Untuk mengidentifikasikan dan membedakan obyek
Unik dan tidak boleh sama
Dalam algoritma nama diberikan pada:
Variabel
Tempat penyimpanan data/informasi di memori yang nilainya
dapat diubah selama pelaksanaan program
Konstanta
Tempat penyimpanan di memori yang nilainya tidak dapat diubah
selama pelaksanaan program
Tipe bentukan
Tipe data baru yang didefinisikan oleh program dari tipe data
yang sudah ada
Prosedur
Modul program (sederetan instruksi) yang ditulis terpisah dari
badan program utamadan dapat dipanggil berulang dari program
utama
Fungsi
Prosedur yang mengembalikan suatu nilai dengan tipe data
sederhana
48. Aturan Penulisan Nama
Harus dimulai dengan huruf alfabet, tidak boleh
dimulai dengan angka, spasi, atau karakter
khusus lainnya.
Tidak case sensitif (beda dengan bahasa
pemrograman)
Karakter penyusun nama hanya boleh: huruf
alfabet, angka dan “_” (underscore)
Tidak boleh dipisahkan dengan spasi
Panjang nama tidak terbatas
Semua nama yang dipakai harus dideklarasikan
dulu pada bagian deklarasi
49. Contoh Penamaan
SALAH
6titik {dimulai dg angka}
nilai ujian {dipisahkan spasi}
PT-1 {mengandung operator kurang}
hari! {mengandung karakter khusus}
BENAR
titik6 atau titik_6
nilai_ujian atau nilaiUjian
PT_1 atau PT1
hari
50. Nilai
Merupakan besaran dari tipe data yang sudah
didefinisikan (tipe dasar maupun tipe bentukan)
Nilai dapat berupa:
Isi variabel atau konstanta
Nilai dari hasil perhitungan
Nilai yang dihasilkan oleh fungsi
Nilai yang disimpan di variabel dimanipulasi
dengan cara:
Mengisikan ke variabel lain yang bertipe sama
Dipakai untuk perhitungan
Dituliskan ke piranti keluaran
51. Nilai(2)
Pengisian nilai ke variabel:
Pengisian nilai secara langsung(assignment)
Memasukkan sebuah nilai ke dalam nama
variabel langsung di dalma teks algoritma
Syaratnya nilai yang didisikan harus bertipe
sama dengan tipe peubah
Notasi:
Contoh:
variabel konstanta NoMhs 1234
variabel1 variabel2 Nil_prev Nil_cur
variabel ekspresi Luas 0.5 * p * l
52. Nilai(3)
Pembacaan nilai dari piranti masukan
Nilai untuk nama variabel dapt diisi dari piranti
masukan, misalnya dari keyboard.
Dinamakan dengan operasi pembacaan data
Notasi dalam teks algoritma: read
Contoh:
read (nama1, nama2,…namaN)
53. Ekspresi
Ekspresi terdiri atas: operand dan operator
Operand adalah nilai yang dioperasikan dengan
operator tertentu
Operand dapat berupa konstanta, nama
variabel, nama konstanta, atau hasil suatu
fungsi
Hasil evaluasi dari sebuah ekspresi adalah nilai
di dalam domain yang sesuai dengan tipe
operand yang dipakai, ada tiga macam: ekspresi
aritmetik, ekspresi relasional, ekspresi string.
54. Ekspresi(2)
Ekspresi Aritmetika
Ekspresi yang baik operand dan hasilnya berupa
numerik
(ingat: tingkat prioritas operator)
i. / , div, mod
ii. *
iii.+, -
Ekspresi relasional
Ekspresi dengan operator <,≤,>,≥,=,≠, not, and, or,
dan xor
Hasil evaluasi adalah nilai bertipe boolean
Ekspresi string
56. Menuliskan Nilai ke Piranti
Keluaran (monitor/printer)
Dilakukan dengan notasi write
Contoh:
write (nama1, nama2, …, namaN)
57. Contoh Algoritma
Algoritma Hello_World
{mencetak string Hello World diikuti nama orang. Nama
orang diinputkan dari piranti masukan}
DEKLARASI
const ucapan = ‘Hello World’
namaUser : string
DESKRIPSI
read(namaUser)
write(ucapan + ‘ ‘ + namaUser)
58.
59.
60.
61. Dasar Algoritma
Dalam penulisan Algoritma ada beberapa
ketentuan yaitu:
Program atau metode penyelesaian
masalah harus sesuai tahapan / urutan
Tahapan tersebut tidak baku, yang
penting efektif
Program bersifat terstruktur
Tidak bermakna ganda
62. Struktur Badan Algoritma
Kepala Program
Berisi judul program dan keterangan tentang
program
Bahasa Algoritma : Algoritma judul_program
Ex. Algoritma menghitung_luas_segitiga
Ex. Algoritma MenghitungLuasSegitiga
Bisa ditambahkan komentar tentang program
dengan menggunakan operator “{ }”
63. Struktur Badan Algoritma (2)
Deklarasi
Berisi variabel yang digunakan dalam
program
Bahasa Algoritma : nama_variabel : Tipe
Data
Ex. AlasSegitiga : integer
Ex. TinggiSegitiga : integer
Ex. LuasSegitiga : integer
64. Struktur Badan Algoritma (3)
Deskripsi
Berisi uraian langkah penyelesaian
Example:
read(PanjangSegitiga)
read(LebarSegitiga)
LuasSegitiga ← ½ * PanjangSegitiga *
LebarSegitiga
write(LuasSegitiga)
65. Struktur Badan Algoritma (4)
Algoritma menghitung_luas_segitiga
{menghitung luas segitiga dengan inputan alas dan tinggi
segitiga berasal dari keyboard}
DEKLARASI
AlasSegitiga : Integer
TinggiSegitiga : Integer
LuasSegitiga: Integer
DESKRIPSI
read(AlasSegitiga)
read(TinggiSegitiga)
LuasSegitiga ← ½ * AlasSegitiga * TinggiSegitiga
write(LuasSegitiga)
66. Kasus
Deklarasi data untuk mobil
Merk : String {Contoh: Honda}
NoKendaraan : String {Contoh: KH1A}
TahunProduksi : Integer {Contoh: 2007}
Deklarasi data untuk Mata kuliah
Deklarasi data untuk Waktu
67. Deklarasi data untuk Alamat Rumah
Deklarasi data untuk Data Pribadi <min
6 variabel>
68. Tugas di kumpul minggu depan
Buatlah algoritma lengkap tentang perhitungan konversi
dari jam ke detik
Inputan berupa jam. Misalnya
Masukan jam : 1
Ouput
Detik : 3600