I. Tujuan
Setelah mengerjakan tugas praktikum ini, mahasiswa/i diharapkan:
a) Memahami lebih dalam mengenai lanjut mengenai skema pemoresan
sekuensial dan penerapannya pada sejumlah kasus
b) Dapat mengimplementasikan tipe data array dan pemrosesannya untuk
table sederhana dan matrix ke dalam program-program C++.
Data adalah rekaman atau catatan mengenai fakta dari suatu objek atau
peristiwa. Misalnya, data hasil pengukuran berupa angka-angka disebut dengan
data kuantitatif, sedangkan data teks yang bukan angka melainkan keterangan
atau label mengenai fakta objek / peristiwa tertentu disebut data kualitatif. Data
selain berupa teks dapat juga berupa suara ataupun gambar.
2. Tipe Data
Tipe data adalah pola representasi data dalam sistem komputer. Pola
representasi ini juga mempengaruhi berapa besar ruang yang diperlukan untuk
menyimpan suatu data. Dalam implementasi program, untuk mengolah data
tertentu, kita harus mendefinisikan tipe data dan nama data (variabel) penampung
data tersebut.
Ada sejumlah tipe data dasar yang telah tersedia (didefinisikan) dalam suatu
bahasa pemrograman dan dapat langsung digunakan di dalam algortima atau pun
program. Berikut adalah tipe-tipe data dasar yang biasanya dianggap sudah
tersedia dalam bahasa pemrograman:
• integer (bilangan bulat)
• real (bilangan pecahan)
• boolean (bilangan logika)
• character (karakter atau huruf dan tanda baca)
Tipe Data Array adalah tipe dari sekumpulan elemen data yang mengacu setiap
elemen datanya melalui indeks. Array sederhan satu dimensi biasa disebut juga
dengan istilah vector, sedangkan array dua dimensi biasa juga disebut dengan
istilah tabel. Struktur data ini digunakan untuk merepresentasikan sekumpulan
informasi yang bertipe sama, misalnya daftar hadir, daftar nilai, daftar mata kuliah,
dll
Mendefinisikan data bertipe array dalam teks algoritma dilakukan dengan kata
kunci array diikuti dengan rentang nilai index dari array dan tipe data dari elemen
array. Berikut adalah contoh pendefinisian data bertipe array.
Beberapa contoh kasus penggunaan array dapat dilihat pada materi kuliah
pertemuan-9.
3. Pemrograman Modular
Dalam menyelesaikan suatu persoalan, sering kali kita melakukan teknik yang
dikenal dengan istilah “devide and conquer”. Teknik ini memandang sebuah
persoalan besar / rumit dapat dipecah-pecah menjadi sejumlah sub-sub persoalan
yang lebih kecil / sederhana. Sub-sub persoalan yang lebih kecil / sederhana
akan lebih mudah diselesaikan. Teknik “devide menyelesaiakan persoalan
dengan tiga tahap berikut:
Teknik “devide and conquer” ini juga diterapkan pada pemrograman modular atau
disebut juga pemrograman terstruktur. Sebuah program yang besar dapat
dipecah-pecah menjadi sejumlah sub-sub program yang lebih kecil. Pemecahan
dilakukan berdasarkan fungsi komputasi spesifik yang harus diselesaikan oleh
setiap sub program. Jadi, setiap sub program memiliki tugas spesifik sub
persoalan yang harus diselesaikannya dan tidak tergantung dari sub persoalan
lainnya. Dengan pendekatan ini, setiap sub program dapat dibangun secara
terpisah tanpa tergantung dari sub program lainnya termasuk program utamanya.
Fungsi Prosedur
Contoh: Contoh:
1. Fungsi SQRT: mengeluarkan 1. Prosedur Input: melakukan
sebuah nilai hasil akar kuadrat proses pembacaan nilai data
dari nilai input yang diterimanya dari alat masukan
2. Fungsi POW: mengeluarkan 2. Prosedur Output: melakukan
nilai x pangkat n dari nilai input proses pencetakan nilai data ke
n dan x yang diterimanya alat keluaran
Fungsi dan Prosedur hasil analisa dan desain solusi sebuah program dengan
pendekatan modular, didefinisikan pada bagian kamus program ataupun pada
bagian kamus lokal sebuah fungsi ataupun prosedur.
Pendefinisian Fungsi
Algoritma
Fungsi dapat menerima input lebih dari satu nilai, untuk dipetakan ke nilai
keluarannya. Parameter fungsi didefinisikan dengan menyebukan nama data dan
tipe data dari parameter tersebut.
Pemanggilan Fungsi
Program Panggil_FX
{ membaca nilai real r, dan mencetak nilai f(r) = 2r + 4 }
{ K. awal: …. }
{ K. akhir: …. }
Kamus
r : real {data yg dibaca}
Kamus Lokal
y : real {nilai keluaran fungsi Fx}
Algoritma
y2*x+4
→y
Algoritma
input (r)
output (Fx (r))
Fungsi Fx digunakan oleh program di dalam perintah output untuk mencetak nilai
kalkulsi 2r + 4, yang dilakukan dengan pemanggilan fungsi Fx dengan
memberikan parameter input nilai r.
Pendefinisian Prosedur
Kamus Lokal
Algoritma
Sebuah prosedur bisa memiliki lebih dari satu parameter atau pun tanpa
parameter. Setiap parameter harus didefinisikan tipe datanya dan jenisnya (input,
output, atau input / output). Parameter yg didefinisikan ini disebut dengan istilah
parameter formal. Ketika nanti prosedur dipanggil (digunakan) dengan beserta
parameter input dan / atau outputnya, parameter pada saat pemanggilan ini
disebut dengan istilah parameter aktual.
Pemanggilan Prosedur
Program Panggil_Hitung
{ contoh program melakukan komputasi dgn pemanggilan prosedur }
{ K. awal: nilai A sembarang; dan B dan C diinisialisiasi }
{ K. akhir: A, B, dan C berisi nilai hasil komputasi oleh prosedur Hitung dan
tercetak ke alat keluaran }
Kamus
A, B, C : integer
Procedure Hitung (output A : integer; input B, C : integer)
{Prosedur komputasi menghitung nilai A dan C}
{K. awal : … }
{K. akhir : …}
Kamus Lokal
Algoritma
A 10 + B - C
CC+4
Algoritma
B3
C5
Hitung (A, B, C)
output (A, B, C)
Hitung (C, A, B)
output (A, B, C)
Hitung (C, B, A)
output (A, B, C)
Prosedur Hitung melakukan proses kalkulasi untuk nilai A dan nilai C. Namun,
nilai yang dikembalikan sebagai output kepada program pemanggilnya hanya
parameter A saja. Nilai C meskipun dikalkulasi, hasilnya tidak dikembalikan
sebagai output bagi program pemanggilnya.
Elemen bisa bertipe dasar (integer, real, character, boolean), atau juga type
bentukan terstruktur misal NilaiMK: <nim : String, nama : String, ipk : real>).
Deretan elemen tersebut dapat merupakan kumpulan elemen data yang dibaca
satu per satu dari peralatan input, dapat berupa data dalam sebuah array (tabel
atau matrix), dapat berupa data yang tersimpan dalam file sekuensial, ataupun
data dalam suatu struktur data list.
Procedure GetFirstElmt
{Aksi yang memberikan elemen pertama yang akan diproses secara
sekuensial}
{K. awal: CurrElmt berisi sembarang}
{K. akhir: CurrElmt berisi elemen pertama yang akan diproses}
Procedure GetNextElmt
{Aksi mendapatkan elemen berikutnya dari Current Element}
{K. awal: CurrElmt berisi current element}
{K. akhir: CurrElmt berisi elemen berikutnya yang akan diproses}
Dalam model proses dengan Mark, EoP bernilai true ketika current elemen berisi
elemen fiktif yang merupakan tanda dari akhir elemen data. Sedangkan dalam
model tanpa mark, EoP berinilai true ketika current elemen berisi elemen terakhir
dari kumpulan data yang diproses. Elemen terakhir mengandung informasi yang
menunjukkan atau menandakan bahwa elemen tersebut adalah elemen terakhir.
Berikut adalah contoh implementasi algoritma program NamaHari yang telah kita
diskusikan di kelas. Program NamaHari ini menyimpan daftar nama-nama hari
dalam seminggu ke dalam sebuah tabel hari dan mencetak daftar tersebut ke alat
keluaran. Inisialisasi tabel nama hari dan proses pencetakanya diimplementasikan
masing-masing dalam sebuah prosedur.
Teks algoritma yang kita sepakati, terdiri dari tiga bagian, yakni:
• Judul: bagian yang menjelaskan tentang algoritma, berupa identitas atau
nama dan keterangan tambahan terkait dengan masalah yang akan
diselesaikan
• Kamus: bagian tempat kita data, prosedur, dan fungsi
• Algoritma: bagian tempat kita menuliskan langkah-langkah atau instruksi
penyelesaian masalah
Teks Algoritma:
001 Program Judul
002 {Deskripsi yang menjelaskan algoritma secara ringkas untuk
003 memudahkan pembaca memahami}
004 {Keadaan Awal: }
005 {Keadaan Akhir:}
006
007 Kamus
008 {Bagian tempat mendeklarasikan data, prosedur, dan fungsi}
009
010 Algoritma
011 {Bagian tempat menuliskan langkat-langkah atau instruksi
012 penyelesaian masalah }
013
Notasi // dalam teks program C++ menginformasikan bahwa apa yg ditulis setelah
tanda tersebut adalah komentar (bukan instruksi).
Baris ke-10 (#include <iostream> adalah instruksi bagi compiler C++ untuk
menambahkan kode-kode terkait dengan instruksi input dan output (iostream).
Dan, baris ke-11 adalah informasi bagi compiler C++ bahwa dalam teks program
kita menggunakan kata-kata kunci seperti cin, cout, endl, vector, string, dll yang
merupakan fitur-fitur dalam standard pustaka (library) bahasa pemrograman C++.
}
Implementasi pendefinisian Prosedur dalam Bahasa C++
Notasi Algoritma
Kamus Lokal
Algoritma
Bahasa C++
// Kamus Lokal
//Algoritma
#include <string>
Kamus // Kamus
Algoritma // Algoritma
Int main() {
hari[1] “Minggu”
hari[2] “Senin” hari[0] = “Minggu”;
hari[3] “Selasa” hari[1] = “Senin”;
hari[4] “Rabu” hari[2] = “Selasa”;
hari[5] “Kamis” hari[3] = “Rabu”;
hari[6] “Jumat” hari[4] = “Kamis”;
hari[7] “Sabtu” hari[5] = “Jumat”;
hari[6] = “Sabtu”;
return 0;
}
6. Contoh
Berikut adalah contoh implementasi algoritma program NamaHari yang telah kita
diskusikan di kelas. Program NamaHari ini menyimpan daftar nama-nama hari
dalam seminggu ke dalam sebuah tabel hari dan mencetak daftar tersebut ke alat
keluaran. Inisialisasi tabel nama hari dan proses pencetakanya diimplementasikan
masing-masing dalam sebuah prosedur.
// Program JumlahDeret
// {menjumlahkan 1+2+3+4+....+N, model tanpa MARK}
// {K. awal: sembarang}
// {K. akhir: {K. akhir: nilai N terbaca dan mencetak hasil penjumlah deret
1+2+3+ … +N}
//
// Nama Programmer : ...
// Versi Program : ...
// Tgl Pembuatan : ...
// Tgl Revisi Terakhir : ...
#include <iostream>
using namespace std;
// Kamus
int i;
int N; // {banyaknya bilangan)
int Sum; // {hasil penjumlahan}
// Algoritma
int main() {
// Inisiasi
cout << "Banyaknya bilangan (N): "; cin >> N;
Sum = 0;
// GetFirstElmt
i = 1;
do {
// ProcessCurrElmt
Sum = Sum + i;
// GetNextElmt
i = i + 1;
// Terminasi
cout << "Hasil penjumlahah deret: " << Sum;
return 0;
}
Berikut adalah contoh program Rata_Rata menghitung nilai rata-rata dari deret N.
Program Rata_Rata membaca nilai bertipe integer N (banyaknya bilangan dalam
deret bilangan integer positif). Kemudian program, menghitung nilai rata-rata dari
bilangan-bilangan deret N tersebut.
// Program Rata_Rata
// {menjumlahkan 1+2+3+4+....+N dan menghitung nilai rata-ratanya, model tanpa MARK}
// {K. awal: sembarang}
// {K. akhir: nilai N terbaca dan mencetak hasil penjumlah deret 1+2+3+ … +N; dan nilai rata-ratanya}
// Nama Programmer : NIM - Nama
// Versi Program :
// Tgl Pembuatan :
// Tgl Revisi Terakhir :
#include <iostream>
using namespace std;
// Kamus
int i;
int N; // {banyaknya bilangan)
float Sum; // {hasil penjumlahan}
float Rata2;
// Algoritma
int main() {
// Inisiasi
cout << "Banyaknya bilangan (N): "; cin >> N;
Sum = 0;
// Terminasi
Rata2 = Sum / N;
cout << "Nilai rata-rata dari deret " << N << " : " << Rata2;
return 0;
}
III. TUGAS
Lakukan uji coba implementasi program C++ dari contoh-contoh yang diberikan
di atas, yakni program JumlahDerat dan Rata_Rata. Hasil akhir yang diharapkan
dari tugas ini adalah anda memiliki 4 file program dan 1 file dokumen laporan
praktikum. Masing-masing program terdiri dari sebuah file source code (cpp) dan
sebuah executable file (exe).
.
2. Implementasi Algoritma Program Cacah dan Rata2DgnMark.