Anda di halaman 1dari 36

Lab. Fisika Komputasi Jur.

Fisika FMIPA UNSRI

MODUL I
PENGENALAN LINGKUNGAN BAHASA C++

TUJUAN :
1. Memperkenalkan lingkungan bahasa C
2. Mempelajari struktur dasar bahasa C
3. Mengenal elemen dasar bahasa C
4. Membuat program-program sederhana

DASAR TEORI
Bahasa C diciptakan oleh Denis Ritchie pada awal tahun 1970, di
perusahan Bell Laboratories, milik Bell Telephone Company, Murray Hill, New
Jersey, USA. Oleh karena bahasa C lahir di perusahaan maka dapat dipastikan
bahwa titik berat cirinya tentu terpusat pada daya guna dan daya manfaatnya
untuk menunjang produk. Efesiensi susunan program kemampuan akses ke
perangkat keras untuk kendali dan juga kemampuan komputasi sangat
diperhatikan.
Bahasa C++ tidak bisa lepas dari bahasa C, sebab bahasa C++, merupakan
bahasa hybrid atau pengembangan dari bahasa C++. C++ diciptakan oleh Bjarne
Stroustroup dari laboratorium Bell AT & T pada tahun 1983. Sedangkan
pemberian nama C++ oleh Rick Mascitti.
Keistimewaan yang sangat berarti dari C++ adalah dapat mendukung
pemrograman berorientasi objek (OOP). Dewasa ini tersedia berbagai compiler
C++ seperti visual C++, Borland C++, C++ builder, dan Turbo C++.
Struktur Bahasa C
#include<file_header>
void main()
{
//komentar
Perintah_perintah; //baris diakhiri oleh tanda;
}

1
Lab. Fisika Komputasi Jur. Fisika FMIPA UNSRI

Pada bagian #include<file_header>, file header merupakan prototype dari fungsi-


fungsi yang digunakan dalam program misal : iostream.h
Elemen Bahasa pada Borland C
Identifier (pengenal)
Pengenal adalah suatu nama yang dipakai dalam pemrograman. Untuk
menyatakan variable, fungsi, type data, dan lain-lain. Ada beberapa trik agar
pemberian nama pengenal menggunakan kata yang mudah dibaca. Misalkan,
untuk menyatakan nomor induk lebih baik kita gunakan :
Nomor_induk (maksimum 32 karakter)
Dari pada kita menggunakan :
No
Pada C++ penulisan huruf bersifat case sensitife artinya dibedakan antara
huruf kecil dan huruf besar. Jadi kata NAMA, nama, dan Nama merupakan tiga
pengenal yang berbeda.

Dalam bahasa C ++ terdapat 32 kata kunci (keywords) yang telah terdefinisikan:

auto double int struct


break else long switch
case enum register typedef
char extern return union
const float short unsigned
continue for signed void
default goto sizeof volatile
do if static while

Mengenal Tipe data


Tipe Keterangan
menyatakan sebuah karakter (bias berupa huruf seperti A dan
char
a, digit seperti 0 atau 7, atau symbol seperti * dan &)
double menyatakan bilangan real dengan ketelitian yang tinggi
float menyatakan bilangan real dengan ketelitian yang rendah
menyatakan bilangan bulat antara -32768 sampai dengan
int
32767
menyatakan bilangan bulat yang berkisar antara -2147483648
long int s/d 2147483647

2
Lab. Fisika Komputasi Jur. Fisika FMIPA UNSRI

CONTOH PROGRAM
Program 1
#include<stdio.h>
void main ()
{
printf (“ini pertama kali menggunakan C\n”);
printf (“ini baris kedua”);
}
Program 2
#include<stdio.h>
void main ()
{
int a,b;
int c=4;
a=12;
b=10;
printf (“nilai c=%d\n”,c);
printf (“nilai a=%d\n dan b=%d”,a,b);
}

Program 3
#include<stdio.h>
void main ()
{
double a,b;
double c=5.2;
printf (“nilai a=”);
scanf (“%lf”,&a);
printf (“nilai b=”);
scanf (“%lf”,&b);
c=a*b;
printf (“nilai c=%lf\n”,c”);
}

3
Lab. Fisika Komputasi Jur. Fisika FMIPA UNSRI

Program 4
#include<iostream.h>
void main ()
{
int x;
cout <<”masukkan sebuah bilangan bulat:”;
cin>>x;
cout<<”bilangan yang anda masukan adalah:”<<x<<endl;
}

TUGAS PENDAHULUAN
1. Jelaskan Pengertian Case Sensitive? Dan berikan contoh?
2. Buatlah Flowchart dari contoh program 1 dan 2?
3. Buatlah algoritma dari contoh program 3 dan 4?

PADA SAAT PRAKTIKUM


1. Jalanakan semua contoh program di atas
2. Ikuti petunjuk asisten

TUGAS AKHIR
1. Jelaskan menurut bahasa anda sendiri mengenai bahasa C++?
2. Apa fungsi lambang {…} pada program ?
3. Apa yang dimaksud dengan file header dan jelaskan file header di bawah
ini :
a. iostream.h
b. stdio.h

4
Lab. Fisika Komputasi Jur. Fisika FMIPA UNSRI

MODUL II

PENGENALAN MATLAB

TUJUAN :

1. Mahasiswa dapat Mengenal MATLAB dan tools yang disediakannya.

2. Mahasiswa dapat mengenal operator dalam matlab dan mengenal operasi


matrik dalam matlab.

TEORI DASAR

Matlab merupakan bahasa pemrograman dengan kemampuan tinggi dalam


bidang komputasi. Matlab memiliki kemampuan mengintegrasikan komputasi,
visualisasi, dan pemrograman. Oleh karenanya, matlab banyak digunakan dalam
bidang riset-riset yang memerlukan komputasi numerik yang kompleks.
Penggunaan Matlab meliputi bidang–bidang:
 Matematika dan Komputasi
 Pembentukan Algorithm
 Akusisi Data
 Pemodelan, simulasi, dan pembuatan prototype
 Analisa data, explorasi, dan visualisasi
 Grafik Keilmuan dan bidang Rekayasa

Matlab merupakan kepanjangan dari Matrix Laboratory. Sesuai dengan


namanya, struktur data yang terdapat dalam Matlab menggunakan matriks atau
array berdimensi dua (double). Oleh karenanya penguasaan teori matriks mutlak
diperlukan bagi pengguna pemula Matlab agar mudah dalam mempelajari dan
memahami operasi-operasi yang ada di Matlab.

Memulai Matlab

Perhatikan Dekstop pada layar monitor PC, mulailah MATLAB dengan


melakukan double-clicking pada shortcut icon MATLAB. Selanjutnya akan
muncul tampilan seperti pada Gambar berikut ini.

5
Lab. Fisika Komputasi Jur. Fisika FMIPA UNSRI

Gambar 1: Jendela Utama Matlab


Pada gambar diatas, terlihat beberapa jendela yang merupakan bagian penting di
dalam Matab, antara lain:
a. Jendela perintah (Command Window)
Pada command window, semua perintah matlab dituliskan dan diekskusi.
Kita dapat menuliskan perintah perhitungan sederhana, memanggil fungsi,
mencari informasi tentang sebuah fungsi dengan aturan penulisannya (help), demo
program, dan sebagainya. Setiap penulisan perintah selalu diawali dengan prompt
„>>‟.

b. Jendela ruang kerja (Workspace)


Jendela ini berisi informasi pemakaian variabel di dalam memori matlab.
Untuk melihat variabel yang aktif saat ini, kita dapat menggunakan perintah who.

c. Jendela histori (Command History)


Jendela ini berisi informasi tentang perintah yang pernah dituliskan
sebelumnya. Kita dapat mengambil kembali perintah dengan menekan tombol
panah ke atas atau mengklik perintah pada jendela histori, kemudian melakukan
copy-paste ke command window.

Variabel dan Operator


1. Variabel
Seperti bahasa pemrograman lainnya, matlab pun memiliki variabel, tetapi
dalam penulisannya, variabel di dalam matlab tidak perlu dideklarasikan, karena

6
Lab. Fisika Komputasi Jur. Fisika FMIPA UNSRI

matlab mampu mengenali tipe data dari variable dari isi variabel tersebut. Aturan
penulisan variabel pada matlab sama dengan aturan pada bahasa pemrograman
lainnya, yaitu bersifa case sensitive, diawali dengan huruf dan selanjutanya boleh
menggunakan gabungan huruf-angka atau tanda garis bawah. Matlab mampu
mengenali sampai 31 karakter pertama, selanjutnya diabaikan.
Semua tipe data di matlab memiliki bentuk yang sama, yaitu array. Array
minimal berukuran 0x0 dan dapat bertambah menjadi array n x m dimensi dengan
sebarang ukuran. Matlab mempunyai beberapa tipe data dasar (atau class), yaitu:
logical, char, numeric, cell, structure, java classes, function handles.
2. Operator
Di dalam matlab, operator diklasifikasikan menjadi tiga bagian, yaitu:
a) Operator Arimatika
Operator aritmatika digunakan untuk mengerjakan komputasi numeric.

Operator Arti
+ Penjumlahan
- Pengurangan
* Perkalian (aturan matriks)
.* Perkalian masing-masing
eleman yang bersesuaian
(aturan array)
/ Pembagian kanan (matriks)
./ Pembagian kanan (array)
\ Pembagian kiri (matriks)
.\ Pembagian kiri (array)
^ Perpangkatan (matriks)
.^ Perpangkatan (array)
: langkah

7
Lab. Fisika Komputasi Jur. Fisika FMIPA UNSRI

b) Operator Relasional
Operator relasional digunakan untuk membandingkan operand-operand
secara kuantitatif.

Operator Arti
== Sama dengan
~= Tidak sama dengan
< Kurang dari
> Lebih dari
<= Kurang dari sama dengan
>= Lebih dari sama dengan

c) Operator Logika
Operator Arti
& Akan menghasilkan nilai 1 jika kedua elemen yang
bersesuaian memiliki nilai true dan 0 untuk lainnya
| Akan bernilai 1 jika salah satu elemennya true
~ Komplen dari elemen yang diinputkan
xor Akan bernilai 1 jika salah satu dari kedua elemen
memiliki nilai berbeda dan bernilai nol jika sama

Pemrograman M-File
M-file merupakan sederetan perintah matlab yang dituliskan secara
berurutan sebagai sebuah file. Nama file yang tersimpan akan memiliki ekstensi
.m yang menandakan bahwa file yang dibuat adalah file matlab. M-file dapat
ditulis sebagai sebuah script atau dapat pula ditulis sebagai sebuah fungsi yang
menerima argument atau masukan yang menghasilkan output.

8
Lab. Fisika Komputasi Jur. Fisika FMIPA UNSRI

CONTOH PROGRAM

TUGAS PENDAHULUAN
1. Sebutkan dan jelaskan tipe-tipe data pada pemrograman Matlab?

TUGAS AKHIR
Jalankan program diatas dengan menggunakan program turbo C++ dan catat
output dari program.(syntaks disesuaikan dengan c++)

9
Lab. Fisika Komputasi Jur. Fisika FMIPA UNSRI

MODUL III
PERULANGAN DALAM TURBO C++

TUJUAN :
1. Memperkenalkan proses perulangan dalam bahasa pemograman
2. Mempelajari format perulangan di dalam turbo C++
3. Dapat menggunakan perulangan di dalam turbo C++

DASAR TEORI
Dalam bahasa pemrograman, perulangan atau kadang disebut dengan
istilah “looping” adalah sekumpulan proses yang berlangsung secara berulang-
ulang dalam suatu program. Perulangan biasanya dilakukan untuk menentukan
proses yang sama atau mirip berulang kali sampai pada kondisi tertentu.
Perintah perulangan didalam turbo C++ diantaranya :
1. For
2. While
3. Do… while
Masing-masing statement digunakan pada jenis perulangan yang berbeda, meski
untuk sebuah kasus, statement perulangan dapat diganti dengan sebuah statement
perulangan yang lain.
a. Statement for
Statement for digunakan untuk perulangan yang telah diketahui secara
tepat berapa kali statement akan diproses(diulang).
b. Statement while
Pada struktur while pengulangan dilakukan hanya jika kondisi syarat
bernilai true. Struktur ini memungkinkan instruksi yang berada di dalam
pengulangan tidak dieksekusi sama sekali, karena pemeriksaan syarat
pengulangan dilakukan di awal struktur.
c. Statement do…while
Struktur ini memiliki makna yang sama dengan while, tetapi pada struktur
ini pengulangan dilakukan minimal satu kali, karena kondisi pengulangan
diperiksa diakhiri pengulangan.

10
Lab. Fisika Komputasi Jur. Fisika FMIPA UNSRI

CONTOH PROGRAM :
/*Program repeat.cpp
Menjumlahkan deret 1+2+3+4+..............+n dengan n adalah bilangan bulat positif
di baca dari keyboard*/
#include<iostream.h>
main ()
{
Int n, angka, jumlah;
cout<<”banyak suku deret=”;
Cin>>n;
jumlah = 0;
angka = 0;
do
{
jumlah = jumlah + angka;
angka = angka + 1
cout<<angka<<endl;
}while(angka<=n);
cout<<”jumlah deret=”<<jumlah<<endl;
return 0;
}

//Program for1.cpp
//mencetak perulangan berurut menaik
#include<iostream.h>
main ()
{
int n;
for (n-0; n<10; n++)
{
Cout<<”pengulangan ke_”<<n<<endl;
}
return 0;
}

11
Lab. Fisika Komputasi Jur. Fisika FMIPA UNSRI

//program for2.cpp
//mencetak perulangan berurut menurun
#include<iostream.h>
main ()
{
int k, bilangan;
cout<<”banyak pengulangan=”;
cin>>bilangan;
for (k = bilangan; k>0; k--)
{
cout<<bilangan<<endl;
}
cout<<”selesai”;
return 0;
}

TUGAS PENDAHULUAN
1. Jelaskan cara kerja program (buat algoritmanya)
a. For1.cpp
b. Repeat.cpp
2. Buat flowchart untuk program soal di atas.

PADA SAAT PRAKTIKUM


Modifikasi program for 1 dan for 2 menjadi program deret huruf.

TUGAS AKHIR
Kerjakan tugas-tugas lain yang diberikan asisten.

12
Lab. Fisika Komputasi Jur. Fisika FMIPA UNSRI

MODUL IV
STRUKTUR PEMILIHAN

TUJUAN:
Mahasiswa dapat mengerti konsep dasar dari pernyataan seleksi (pilihan),
dan dapat mengimplementasikannya dalaam program C++.

TEORI DASAR
Pemilihan merupakan suatu struktur dasar algoritma yang memiliki satu
atau lebih kondisi tertentu, dimana sebuah instruksi dlaksanakan jika sebuah
kondisi atau persyaratan terpenuhi. Ada beberapa pengertian bentuk di struktur
dasar pemilihan.
1. Struktur If
Suatu struktur dimana hanya memiliki suatu kondisi. Artinya
sebuah/sekelompok instruksi akan dijalankan jika kondisi ini dipenuhi,
jika tidak terpenuhi maka instruksi tesebut tidak dapat dijalankan.
Sintaksnya adalah sebagai berikut:
if (ekspresi)
statement;
atau
if (ekspresi)
{
statement;
statement;
}

2. Struktur If – Else
Instruksi ini akan menjalankan instruksi lain, jika kondisi tidak terpenuhi.
Sintaknya sebagai berikut:
if (ekspresi)
statement;
else

13
Lab. Fisika Komputasi Jur. Fisika FMIPA UNSRI

stetement;
atau
if (ekspresi)
{
statement;
statement;
}
else
{
statement;
statement;
}

3. Struktur If bersarang (nested)


Struktur ini memiliki lebih dari satu kondisi. Bisa jadi kondisi akan berada
pada kondisi lain. Sintaknya sebagai berikut:
if (ekspresi)
statement;
else if (ekspresi)
statement;
else
statement;

4. Struktur switch – case


Struktu dengan menggunakan ekspresi/statement switch case. Sintaknya
sebagai berikut:
switch (ekspresi)
{
case konstanta 1;
statement 1;
break;
............

14
Lab. Fisika Komputasi Jur. Fisika FMIPA UNSRI

case konstanta 2;
statement_n;
default: statement;
}

TUGAS PENDAHULUAN
Buat flowcahart untuk keempat struktur pemilihan diatas

TUGAS SELAMA PRAKTIKUM


Ikuti saran dan petunjuk yang diberikan asisten.

TUGAS AKHIR
1. Buat program untuk membuat program dalam bentuk menu, yang mampu
menyelesaikan:
a. Luas dan keliling lingkaran
b. Luas dan keliling bujur sangkar
c. Luas dan keliling empat persegi
Ketentuan : masukan berupa nomor menu, ukuran sisi untuk menu bujur sangkar
dan empat persegi atau jari-jari untuk lingkaran.
Keluarannya berupa harga luaas dan keliling yang dicetak di monitor.

15
Lab. Fisika Komputasi Jur. Fisika FMIPA UNSRI

PROGRAM 1
/* PROGRAM TAMBAH 1 DETIK */
/* Menaikkan jam J dengan 1 detik */
#include<stdio.h>
main ()
{
/* DEKLARASI */
typedef struct { int hh; /* 0...59 */
int mm; /*0…59*/
int ss; /* 0...23 */
} Jam;
Jam J;
/* DESKRIPSI */
/* Baca Jam */
printf (“jam (hh) : “); scanft (“%d”, &J.hh);
printf (“menit (mm) : “); scanft (“%d”, &J.mm);
printf (“detik (ss) : “); scanft (“%d”, &J.ss);
if (J.ss + 1 < 60) /* tidak ada masalah penambahan 1 detik */
J.ss = J.ss + 1;
else /* J.ss + 1 = 60 */
{
J.ss = 0 /*detik kembali menjadi 0, menit tambah 1, tetapi periksa dulu
apakah menit + 1 < 60 */
if (J.mm + 1 < 60) /* tidak ada masalah penambahan 1 menit */
J.mm = J.mm + 1;
else /* J.mm + 1 = 60 */
{
J.mm = 0
if (J.hh + 1 < 24) /* tidak ada masalah penambahan 1 jam */
J.hh= J.hh + 1;
else /* J.hh + 1 = 24*/
J.hh = 0
/* endif */
}
}
printf (“jam yang baru %d:$d:%d \n “, J.hh, J.mm, J.ss);
}

16
Lab. Fisika Komputasi Jur. Fisika FMIPA UNSRI

PROGRAM 2
/* DESKRIPSI */
/* Cetak Menu */
#include<stdio.h>
#include<math.h>
main()
{
float panjang,lebar,luas, keliling,diagonal;
int nomor_menu;
printf (” MENU EMPAT PERSEGI PANJANG \n”);
printf (” 1. Hitung luas \n”);
printf (” 2. Hitung keliling \n”);
printf (” 3. Hitung panjang diagonal \n”);
printf (” 4. Keluar program \n”);
printf (” masukkan pilihan anda (1/2/3/4)? ”); scanf (“%d”, &nomor_menu);
switch (nomor_menu)
case 1: {
printf (“panjang?”); scanf (“%f”, &panjang);
printf (“lebar?”); scanf (“%f”, &lebar);
luas = panjang*lebar
printf (“luas = %f \n”, luas);
break;
}
case 2: {
printf (“panjang?”); scanf (“%f”, &panjang);
printf (“lebar?”); scanf (“%f”, &lebar);
keliling = 2*panjang + 2*lebar
printf (“keliling = %f \n”, keliling);
break;
}
case 3: {
printf (“panjang?”); scanf (“%f”, &panjang);
printf (“lebar?”); scanf (“%f”, &lebar);
diagonal = sqrt ((double)panjang*panjang + (double)lebar*lebar);
printf (“diagonal = %f \n”, diagonal);
break;
}
case 4: printf (“keluar program ... sampai jumpa \n”);
break;
}

17
Lab. Fisika Komputasi Jur. Fisika FMIPA UNSRI

PROGRAM 3
/* PROGRAM INDEKS NILAI UJIAN */
/* Menentukan indeks nilai mahasiswa berdasarkan nilai ujian */
#include<stdio.h>
main()
{
/* deklarasi */
float nilai;
char indeks;
/* deskripsi */
printf (“masukkan nilai:”); scanf (“%f”, &nilai);
if (nilai >= 80)
indeks = „A‟;
else
if (nilai >= 70 && nilai <80)
indeks = „B‟;
else
if (nilai >= 55 && nilai < 70)
indeks = „C‟;
else
if (nilai >= 40 && nilai < 55)
indeks = „D‟;
else
indeks = „E‟;
/* endif */
/* endif */
/* endif */
/* endif */
printf (“indeks nilai ujian = %c”, indeks);
}

18
Lab. Fisika Komputasi Jur. Fisika FMIPA UNSRI

MODUL V
PROSEDUR

TUJUAN :
Mahasiswa dapat memahami tentang prosedur dan dapat
mengimplementasikannya dalam bahasa C++.

TEORI DASAR

Seringkali suatu program besar perlu dipecah-pecah menjadi beberapa


subprogram yang lebih kecil. Teknik pemrograman seperti ini disebut teknik
pemrograman modular. Keuntungan modularisasi program adalah menghindari
penulisan teks program yang sama secara berulang kali serta memberikan
kemudahan dalam penulisan dan menemukan kesalahan program.
Prosedur adalah subprogram yang melakukan aktivitas yang spesifik.
Struktur prosedur sama dengan struktur algoritma biasa, yaitu ada bagian judul
yang berisi nama prosedur, bagian deklarasi dan badan program yang berisi
instruksi yang akan dilaksanakan.
Prosedur bukan program yang berdiri sendiri, jadi ia dapat dieksekusi
secara langsung. Instruksi-instruksi di dalam prosedur baru dapat dilaksanakan
hanya bila prosedur di akses. Prosedur diakses dengan cara dipanggil namanya
dari program pemanggil.
Ketika nama prosedur dipanggil, kendali program berpindah secara
otomatis ke prosedur tersebut. Instruksi di dalam badan prosedur dilaksanakan.
Setelah semua instruksi selesai dijalankan, kendali program berpindah secara
otomatis ke instruksi sesudah program pemanggilan prosedur.

TUGAS PENDAHULUAN
1. Apa yang dimaksud dengan parameter formal dan aktual ?
2. Apa yang dimaksud dengan parameter masukan, parameter keluaran dan
parameter masukan/keluaran ?

19
Lab. Fisika Komputasi Jur. Fisika FMIPA UNSRI

PROGRAM 1
//program hitung rata-rata
# include<iostream.h>
void hitung_rerata(int N, float&rerata)
int main()
{
int Ndata;
float rata_rata;
cout<<”inputkan jumlah data yang akan dicari rata-ratanya”;
cin>>Ndata;
hitung_rerata(Ndata,rata-rata);
cout<<”rata-rata nilai data yang diinputkan adalah=”<<rata_rata;
return 0;
}
void hitung_rerata(int N,float&rerata)
{
int x,i,jumlah;
Jumlah = 0;
for (i = 0;i < N;i++)
{
cout<<”masukkan data”;
cin>>x;
Jumlah = jumlah + x;
}
rerata = Jumlah/N;
}

20
Lab. Fisika Komputasi Jur. Fisika FMIPA UNSRI

PROGRAM 2
// program jam
#include <iostream.h>

typedef struct { int hh;


int mm;
int ss;
} Jam;
void tambah_detik(Jam&J);
int main()
{
Jam J;
cout<<”jam sekarang =”; cin>>J.hh;
cout<<”menit sekarang =”; cin>>J.mm;
cout<<”detik sekarang =”; cin>>J.ss;
Tambah_detik(J);
cout<<”setelah ditambah 1 detik =”<<J.hh<<”:”<<J.mm<<”:”<<J.ss;
return 0;
}
void tambah_detik (Jam J)
{
int total_detik,sisa;
Total_detik = J.hh* 3600 + J.mm*60 + J.ss;
Total_detik = Total_detik + 1;
J.hh = Total_detik/3600;

Sisa = Total_detik % 3600;


J.mm = Sisa/60;
J.ss = Sisa % 60;
}

TUGAS SELAMA PRAKTIKUM :


Ikuti petunjuk dan arahan yang diberikan asisten lab.

21
Lab. Fisika Komputasi Jur. Fisika FMIPA UNSRI

TUGAS AKHIR
1. Buat prosedur untuk menghitung pembagi bersama terbesar dari dua buah
bilangan bulat tak negatif m dan n. Prosedur memiliki parameter masukan
m dan n, serta parameter input/output pbt.

2. Buat prosedur yang menerima tanggal dalam bentuk dd-mm-yy dan


memberikan tanggal besoknya ?

22
Lab. Fisika Komputasi Jur. Fisika FMIPA UNSRI

MODUL VI
MENGENAL FUNGSI
TUJUAN :
Mahasiswa dapat memahami tentang fungsi dan dapat
mengimplementasikannya dalam bahasa C ++.
TEORI DASAR
Sering kali suatu program besar perlu dipecah-pecah menjadi beberapa
subprogram yang lebih kecil. Teknik pemograman seperti ini disebut teknik
pemograman modular. Keuntungan modularisasi program adalah menghindari
penulisan teks program yang sama secara berulang kali serta memberikan
kemudahan dalam penulisan dan menentukan kesalahan program.
Fungsi adalah subprogram yang memberikan atau mengembalikan sebuah
nilai dari tipe tertentu. Seperti juga prosedur, fungsi adalah subprogram yang
melakukan aktivitas yang spesifik. Struktur fungsi sama dengan struktur prosedur,
yaitu ada bagian judul yang berisi nama fungsi, bagian deklarasi dan badan
program yang berisi intruksi yang akan disampaikan.
Fungsi diakses dengan cara dipanggil namanya dari subprogram
pemanggilnya, diikuti dangan daftar parameter actual (jika ada). Karena fungsi
mengembalikan nilai, maka nilai tersebut dapat ditampung dalam sebuah variable
yang bertipe sama dengan tipe tersebut.
TUGAS PENDAHULUAN
1. Apa beda prosedur dengan fungsi ?
2. Buat program utama yang memanggil fungsi minimum diatas ?

TUGAS SELAMA PRAKTIKUM


Ikuti petunjuk dan arahan yang diberikan asisten laboratorium.

PROGRAM 1
//program genap ganjil
#include<iostream.h>
typedef enum {false, true} boolean;
boolean genap (int n);
int main()

23
Lab. Fisika Komputasi Jur. Fisika FMIPA UNSRI

{
int bil;
cout<<”input sebuah bilangan bulat”;
cin>>bil;
if(genap(bil))
cout<<bil<<”adalah bilangan genap”;
else
cout<<bil<<”adalah bilangan ganjil;
return 0;
}
boolean genap (int n)
{
return (n%2==0);
}

PROGRAM 2
//Fungsi Minimum
Int minimum (int a, int b)
{
If (a>=b)
Return a;
else
return b;
}

24
Lab. Fisika Komputasi Jur. Fisika FMIPA UNSRI

PROGRAM 3

//Program Titik Tengah


#include<iostream.h>
Typedef struct { float x;
float y;
}titik ;
titik titik_tengah (titik P1, titik P2);
int main ()
{
titik P1,P2, Pt;
cout<<”inputkan koordinat titik pertama”<<endl;
cout<<”sumbu x =”;
cin>>P1.x;
cout<<”sumbu y =”;
cin>>P1.y;
cout<<”inputkan koordinat titik kedua”<<endl;
cout<<”sumbu x =”;
cin>>P2.x;
cout>>”sumbu y=;
cin>>p2.y;
pt = titik_tengah (P1, P2);
cout<<”koordinat titik tengah antara P1 dan P2 adalah “<<”(“<<Pt.x<<”,”<<Pt.y<<”)”;
return 0;
}
titik titik_tengah (titik P1, titik p2)
{
Titik Pt;
Pt.x = (P1.x + P2.x) / 2;
Pt.y = (P1.y + P2.y) / 2;
Return Pt;
}
TUGAS AKHIR
Buatlah fungsi yang menerima masukan nama hari sekarang (Senin,….,Minggu) dan
mengembalikan nama hari kemarinnya.

25
Lab. Fisika Komputasi Jur. Fisika FMIPA UNSRI

MODUL VII
LARIK 1-D

TUJUAN :
Melalui praktikum ini diharapkan praktikan :
1. Mampu menggunakan perintah-perintah dasar yang berkenan dengan larik.
2. Dapat membuat program sederhana yang berkenaan dengan larik 1-D.

DASAR TEORI
Larik (array) adalah tipe data bentukan terstruktur yang digunakan untuk
menyimpan serangkaian elemen yang bertipe sama. Istilah lain untuk larik antara
lain:
1. LIST(daftar) untuk larik 1-D, hal ini sama dengan vektor dalam pelajaran
matematika.
2. Table(tabel) untuk larik 2-D, hal ini sama dengan matriks dalam pelajaran
matematika.
Elemen larik dapat diakses secara acak dengan merujuk ke indeksnya.
Dimana indeks larik harus mempunyai keturunan atau ordinal(misal integer atau
alphabet).
Sebagai contoh larik misalkan larik A dengan delapan buah elemen dapat
dibayangkan sebagai setumpukkan kotak yang terurut sebagai berikut :
Larik A

1 2 3 4 5 6 7 8
Tiap kotak pada larik ini diberi indeks integer 1,2,3,4,5,6,7,8. Jadi tiap
elemen larik dapat ditulis dengan notasi :
A(1), A(2), A(3), A(4), A(5), A(6), A(7), A(8).
Setiap elemen larik menyimpan sebuah nilai. Karena seluruh elemen larik
bertipe sama maka nilai yang disimpan oleh setiap elemen juga harus bertipe sama

26
Lab. Fisika Komputasi Jur. Fisika FMIPA UNSRI

Sebelum digunakan larik harus didefenisikan (didelekrasikan). Contoh


pendeklasarian larik adalah sebagai berikut :
Sebagai peubah :
DEKLARASI
A : array [1..75] of integer
NamaMhs : array [1..65] of integer
NiUjian : array [0..100] of integer
Sebagai tipe bentukan :
DEKLARASI
Type LarikInt : array [1..100] of integer
A : LarikInt
Sebagai Konstanta :
DEKLARASI
Const Nmaks = 86
Pemerosesan Larik :
Elemen larik diperoses secara beruntun melalui indeks yang terturut.
Pemerosesan beruntun pada larik adalah pemerosesan mulai dari elemen dengan
indeks terkecil berturut-turut hingga elemen dengan indeks terbesar. Proses adalah
aksi yang dilakukan terhadap elemen tarik. Proses dapat berupa aksi pengisian
nilai, pembacaan, penulisan atau manipulasi lainnya.
Algoritma umum Pemerosesan Larik :
PROGRAM Pemerosesan Larik
{skema pemerosesan larik secara beruntun}
DEKLARASI
Const Nmaks = 100 {ukuran maksimum larik}
Type LarikInt : array[1..Nmaks] of integer
A : LarikInt
I : Integer {indeks larik}
ALGORITMA
Inisialisasi
i ← 1 {mulai dari elemen pertama}
while i ≤ Nmaks do

27
Lab. Fisika Komputasi Jur. Fisika FMIPA UNSRI

Pemrosesan terhadap A[i]


i ← 1 + 1 { tinjau elemen berikutnya}
endwhile
{i>Nmaks}
Terminasi

TUGAS PENDAHULUAN
1. Apa yang dimaksud dengan menginsialisasi larik?
2. Tuliskan alasan mengapa perlu menggunakan larik?

Pada Saat Praktikum


Berikut ini contoh program larik 1-D. Program ini dibuat untuk membaca
elemen-elemen larik, mencetak dan menghitung nilai reratanya.

/* Program rerata */
/* Program utama untuk membaca elemen-elemen larik, mencetak elemen-elemen
larik, dan menghitug nilai rata-ratanya */
/* Deklarasi prosedur yang digunakan */
#include<stdio. h>
const int Nmaks = 100; /* ukur maksimum larik */
typedef int Larik Int [Nmaks + 1]

void BacaLarik(LarikInt A, Int n);


/* mengisi elemen-elemen larik dengan A[1..n] dengan pembacaan */

void TulisLarik(LarikIntA, Int n);


/* mencetak elemen-elemen larik A[1...n] */

void HitungRerata(LarikInt A, Int n, float *u);


/* menghitung nilai rata-rata seluruh elemen larik A. */

/* Program utama */

28
Lab. Fisika Komputasi Jur. Fisika FMIPA UNSRI

main()
{
/* deklarasi */
LarikInt A;
int k;
int n;
float u;
/* algoritma */
printf(“baca jumlah data (n):”);scanf(“%d”, &n);

printf(“baca data:\n”)
BacaLarik(A,n);

printf(“cetak data:\n”)
CetakLarik(A,n);

printf(“hitung rata-rata : \n”);


HitungRerata (A,n&u)

printf(“rata-rata data = %f10:6 \n”,u);


}
void BacaLarik(LarikInt A, Int n)
/* mengisi elemen-elemen larik dengan A[1..n] dengan pembacaan */
/* K. awal : n adalah ukuran efekrif larik, nilainya terdefenisi. */
/* K. akhir : setelah pembacaan, seluruh elemen larik A berisi nilai-nilai yang
dibaca dari piranti masukkan*/
{
/* deklarasi */
Int i ;
/* algoritma */
for (i=0; i<=n; i++
{
printf(“masukkan nilai A[%d]:”,i);scanf(“%d”, & A[i]);
}

29
Lab. Fisika Komputasi Jur. Fisika FMIPA UNSRI

}
void CetakLarik(LarikInt A, Int n)
/* mencetak elemen-elemen larik A[1...n] */
/* K. awal : n sudah berisi jumlah elemen larik yang dipakai. Elemen larik A
sudah terdefenisi. */
/* K. akhir : elemen-elemen larik A tercetak */
{
/* deklarasi */
Int i ;
/* algoritma */
for (i=1; i<=n; i++
{
printf(“A[%d] = %d”, i,A[i]);
}
/* endfor */
}
void HitungRerata(LarikIntA, Int n, float *u);
/* menghitung nilai rata-rata seluruh elemen larik A. */
/* K. awal :elemen-elemen larik A sudah terdefenisi; n adalah ukuran efektif larik,
nilainya terdefeisi */
/* K. akhir : u berisi nilai-nilai seluruh elemen-elemen */
{
/* deklarasi */
Int i ;
float jumlah;
/* algoritma */
i=1
jumlah = 0
for (i=1; i<=n; i++
jumlah = jumlah + A[i]
/* endfor */
*u = jumlah N;
}

30
Lab. Fisika Komputasi Jur. Fisika FMIPA UNSRI

Tugas :
Modifikasi program diatas sesuai arahan asisten!
Tugas setelah selesai Pratikum
Kerjakan tugas yang diberikan asisten!

31
Lab. Fisika Komputasi Jur. Fisika FMIPA UNSRI

MODUL VIII
LARIK 2D (MATRIKS)

TUJUAN :
Melalui praktikum ini diharapkan praktikum :
 Dapat membuat program yang berkaitan dengan larik 2D, khususnya
operasi pada matriks.

DASAR TEORI
Larik (array) 2D biasa dipakai untuk membuat tabel, ataupun untuk
menyelesaikan persoalan matriks di dalam matematika. Sehingga dengan larik 2D
kita dapat mengerjakan operasi-operasi pada matriks, mislakan operasi
penjumlahan, operasi pengurangan, operasi perkalian, dan lain sebagainya.
Silahkan Anda pelajari kembali materi matrik yang telah Anda peroleh pada saat
SMA.
Secara umum larik 2D dideklarasikan dengan aturan :
type namaarray = array[I,J] of tipe-basis;

I dan J menyatakan jangkauan array, mulai dari indeks terkecil sampai


dengan indeks terbesar. Tepatnya I menyatakan jangkaun baris dan J menyatakan
jangkauan kolom. Tipe indeks haruslah yang mempunyai keterurutan (terdefinisi
suksesor dan predesornya).

Inisialisasi Matriks :
Menginisialisasi matriks artinya memberi nilai awal yang sama untuk
seluruh elemennya. Proses ini biasanya dilakukan sebelum matriks digunakan
untuk perhitungan. Namun tidak semua matriks perlu diinisialisasi, misal untuk
matriks yang inputnya dari papan ketik.

ALGORITMA :
for I ← minBaris to maxBaris do
for J ← minKolom to maxKolom do

32
Lab. Fisika Komputasi Jur. Fisika FMIPA UNSRI

Mat[I,J] ← 0
endfor
endfor
Mengisi dan Menulis Isi Matriks :
Mengisi matriks artinya membaca elemen matriks dari piranti masukan.
Perlu diperhatikan pada saat pembacaan adalah urutan pemasukan data karena
akan disimpan di memori sesuai dengan urutan pemasukannya. Untuk
menghindari kesalahan pengisian elemen, biasanya diberikan informasi indeks
baris dan kolom pada saat pengisian.
Menulis isi matriks artinya mencetak elemen-elemen matriks ke piranti
keluaran dengan asumsi tersebut sudah terdefinisi nilainya.
ALGORITMA mengisi matriks :
for I ← minBaris to maxBaris do
for J ← minKolom to maxKolom do
output(mat[I,J])
endfor
endfor

TUGAS PENDAHULUAN
1. Buat bagan alir penjumlahan dua buah matriks !
2. Jika diketahui matriks A = [1 2 3 ; 4 5 6 ; 7 8 9] dan B = [ 9 8 7 ; 6 5 4 ; 3
2 1]. Selesaikan secara manual perkalian antara A dan B.

PADA SAAT PRAKTIKUM


Modifikasi program 1 sehingga nilai-nilai matriksnya dapat diketikkan
lewat keyboard

TUGAS AKHIR
1. Pada contoh program 1 terdapat manipulator setiosflags. Jelaskan apa itu
manipulator setiosflags beserta argument(ios::right) ?
2 Mengapa pada program terdapat dua file header?

33
Lab. Fisika Komputasi Jur. Fisika FMIPA UNSRI

CONTOH PROGRAM 1
//program penjumlahan matriks
#include<iostream.h>
#include<iomanip.h>
void cetak_matrix(double mat[][3]}
{
for (int i=0; i<3; i++){
for (int j = 0; j<3;j++){
cout<<setiosflags(ios::right)setw(10)<<mat[i][j];
}
cout<<endl;
}
cout<<endl;
}
void penjumlahan_matrix(double matA[][3],double matB[][3])
{
double tampung_matrix[3][3];
for(int i =0; i<3;i++){
for(int j =0;j<3;j++){
tampung_matrix[i][j]=matA[i][j] + matB[i][j];
}
}
cetak_matrix(tampung_matrix);
}
void main()
{
double matrixA[][3]={1,1,1,1,1,1,1,1,1};
double matrixB[3][3]={3,3,3,3,3,3,3,3,3};
cetak_matrix(matrixA);
cetak_matrix(matrixB);
penjumlahan_matrix(matrixA,matrixB);
}

34
Lab. Fisika Komputasi Jur. Fisika FMIPA UNSRI

MODUL IX
FUNGSI REKURSIF

TUJUAN :
Mahasiswa mengenal bentuk fungsi rekursif.

DASAR TEORI:
Fungsi rekursif adalah suatu fungsi yang memenggil dirinya sendiri,
artinya fungsi tersebut dipanggil dalam tubuh fungsi itu sendiri. Contoh fungsi
rekursif adalah fungsi faktorial yang menghitung nilai faktorial dari suatu
bilangan bulat positif. Fungsi faktorial didefenisikan secara matematik adalah
sebagai berikut:
n! = n x (n-1) x (n-2) .......... x 1 atau n! = n x (n-1)!
Jika n = 0 maka n! = 1
Jika n>0 maka n! = n x (n-1)!
Hal ini merupakan defenisi rekursif karena factorial terjadi kembali pada
sisi kanan persamaan atau fungi mendefenisikan dirinya sendiri.

TUGAS PENDAHULUAN
1. Buat flowchart untuk menyelesaikan masalah faktorial suatu bilangan
positif!
2. Buat program C++ yang mendefenisikan funsi faktorial dengan
mengimplementasikan struktur iterasi biasa (bukan fungsi rekursif)!

35
Lab. Fisika Komputasi Jur. Fisika FMIPA UNSRI

PROGRAM 1
//program factorial
#include<iostream.h>
int factorial(int n); //prototype fungsi factorial
int main()
{
int x;
cout<<”masukkan nilai x:”;
cin>>x;
cout<<”nilai factorial dari”<<x<<”adalah”<<factorial(x);
return 0;
}
int factorial(int n)
{
if(n==1)
return (1); //basis
else
return(n*factorial(n-1)); //rekursif
}

TUGAS SELAMA PRAKTIKUM


Ikuti petunjuk asisten dan arahan yang diberikan asisten lab.

TUGAS AKHIR
Buat program untuk menghitung x pangkat n secara relursif dan iterasi biasa,
dimana n adalah bilangan bulat positif.

36

Anda mungkin juga menyukai