LABORATORIUM SOFTWARE
ENGINEERING AND APPLICATION
TEKNIK KOMPUTER
FAKULTAS TEKNIK ELEKTRO
Hanya dipergunakan di lingkungan Fakultas Teknik Elektro
UNIVERSITAS TELKOM
DAFTAR PENYUSUN
Diperbaiki Oleh
• Ir. Burhannudin Dirgantoro, M.T
VISI:
Menjadi fakultas unggul berkelas dunia yang berperan aktif pada pengembangan ilmu
pengetahuan dan teknologi elektro serta fisika, berbasis teknologi informasi dan komunikasi.
MISI:
VISI:
MISI:
Setiap Mahasiswa Fakultas Teknik Elektro yang akan menggunakan Fasilitas Laboratorium,
WAJIB mematuhi Aturan sebagai berikut :
1. Menggunakan seragam resmi Telkom University, dan Membawa Kartu Tanda Mahasiswa
(KTM) yang masih berlaku.
3. Dilarang merokok dan makan minum didalam ruangan, dan membuang sampah pada
tempatnya
6. Jam Kerja Laboratorium dan Ruang Riset adalah 06.30 WIB sampai 22.00 WIB
7. Mahasiswa yang akan menggunakan Laboratorium dan atau ruang riset diluar jam kerja,
harus mengajukan ijin kepada Fakultas
A. Tujuan
1. Memahami peraturan kegiatan praktikum.
2. Memahami Hak dan Kewajiban praktikan dalam kegiatan praktikum.
3. Memahami komponen penilaian kegiatan praktikum.
B. Peraturan Praktikum
1. Praktikum diampu oleh Dosen Mata Kuliah Praktikum dan dibantu oleh Asisten
Laboratorium dan Asisten Praktikum.
2. Praktikum dilaksanakan di Laboratorium SEA (N207) sesuai jadwal yang ditentukan.
3. Praktikum Alpro terdiri dari 12 Modul.
4. Praktikan wajib membawa kartu praktikum, modul praktikum (optional), dan alat
tulis.
5. Praktikan wajib mengisi daftar hadir praktikum dengan pulpen bertinta hitam.
6. Durasi praktikum = 2,5 jam (150 menit).
• 15 menit untuk pengerjaan tes awal.
• 25 menit untuk pembahasan modul.
• 90 menit untuk pengerjaan jurnal.
• 20 menit untuk pengerjaan test akhir.
7. Praktikan wajib hadir minimal 75% dari seluruh pertemuan praktikum Alpro di
Laboratorium SEA. Jika total kehadiran kurang dari 75%, maka nilai Praktikum = 0.
8. Praktikan yang datang terlambat:
• Terlambat kurang dari 15 menit : diperbolehkan mengikuti praktikum tanpa ada
tambahan waktu untuk pengerjaan tes awal.
• Terlambat lebih dari 15 menit : tidak diperbolehkan mengikuti praktikum.
9. Saat praktikum berlangsung, praktikan:
• Wajib menggunakan seragam sesuai aturan instansi.
• Wajib mematikan atau men-silent semua alat komunikasi.
• Dilarang membuka aplikasi yang tidak berhubungan dengan praktikum.
• Dilarang membawa makanan maupun minuman di ruang praktikum.
• Dilarang makan, minum, merokok dan sejenisnya di ruangan praktikum.
• Dilarang memberikan jawaban ke praktikan lain (TP, Tes Awal, Jurnal, dan Tes
Akhir).
• Dilarang menyebarkan soal Tes Awal, Jurnal, dan Tes Akhir.
• Dilarang membuang sampah/sesuatu apapun di ruangan praktikum.
A. Tujuan Praktikum
1. Memahami bentuk algoritma pemograman dan implementasinya dalam bahasa C.
2. Membuat program sederhana yang melibatkan tipe data, variabel, dan I/O.
3. Memahami tipe-tipe data pada algoritma pemograman beserta persamaannya dalam
bahasa C.
B. Perangkat
1. PC yang terinstal code blocks
C. Dasar Teori
1. Struktur Bahasa Pemrograman C
Dalam bahasa C, struktur pemograman terdiri dari fungsi-fungsi (bersifat
prosedur). Berikut merupakan struktur umum bahasa pemograman C:
//fungsi_utama
main() {
/*statement*/
}
//fungsi_lain
fungsi_lain() {
/*statement*/
}
2. Tipe Data
Tipe data adalah jenis dari suatu variabel yang digunakan dalam algoritma.
Berikut adalah beberapa macam tipe data:
a. Int : Menyatakan bilangan bulat antara -326767 sampai +32767.
Contoh : 1 0 3 -5 -7
b. Float : Menyatakan bilang real (asli) dari 10-38 sampai dengan 1038.
Contoh : 1.1 1.3 -9.2
c. Char : Menyatakan sebuah karakter.
Contoh : A, f, 9, atau *.
d. Bool : Menyatakan nilai logika
Contoh : true atau false
6 % 4 = 2 → {6 = 4 x 1 + 2}
int % int = int 8 % 5 = 3 → {8 = 5 x 1 + 3}
-5 % 3 = 1 → {1 = 3 x (-2) + 1}
Tabel 1.2 Contoh Modulus (Mod)
5. Tipe Bentukan
Tipe bentukan adalah tipe data yang dibuat sendiri oleh pengguna. Tipe ini
dibuat karena ada relasi antar variabel yang bila digabungkan mempunyai suatu maksud
yang sama. Untuk membuat tipe data bentukan, digunakan kata kunci “struct”. Salah
satu contoh dari tipe data bentukan adalah mahasiswa, dimana mahasiswa
mempunyai nama, nim, jurusan, dan nilai.
a = 7; A <- 7
Tabel 1.4 Contoh Input Nilai Secara
Langsung
Source Code
#include <stdio.h>
int main ()
{
int x,y,z;
printf("Bilangan 1 = ");
scanf ("%d",&x);
printf("Bilangan 2 = ");
scanf("%d",&y);
z = x + y;
printf("Bilangan 1 + Bilangan 2 = %d \n",z);
return 0;
}
Algoritma
Kamus :
x,y,z : integer
Algoritma :
output (‘Bilangan 1 = ‘)
input (x)
output (‘Bilangan 2 = ‘)
input (y)
z = x + y
output(‘Bilangan 1 + Bilangan 2 = ‘, z)
Output
Bilangan 1 = 12
Bilangan 2 = 7
Bilangan 1 + Bilangan 2 = 19
Tabel 1.5 Program Input Nilai scanf()
3) Penggunaan konstanta
Source Code
#include <stdio.h>
#define phi 3.14
int main (){
int r;
float luas;
printf("Jari-Jari Lingkaran = ");
scanf (“%d”, &r);
luas = phi*r*r;
printf("Luas Lingkaran = %.2f\n", luas);
return 0;
}
Jari-Jari Lingkaran = 12
Luas Lingkaran = 452.16
Tabel 1.6 Program Input Nilai Menggunakan Konstanta
Catatan:
• %x.f berfungsi untuk menampilkan x angka di belakang koma dari
variabel keluaran. Pada contoh di atas, printf(“Luas Lingkaran = %.2f
\n”,luas); akan menampilkan 2 angka di belakang koma
c. Tipe Data Bentukan
Source Code
#include <stdio.h>
struct biodata{
char nama[50],jurusan[30], nim[20], kelas [20]
}b;
Algoritma
Kamus :
b : biodata
Algoritma :
output(‘Nama : ‘) input(b.nama)
output(‘Jurusan : ‘) input(b.jurusan)
output(‘NIM : ‘) input(b.NIM)
output(‘Kelas : ‘) input(b.Kelas)
output(‘Biodata Anda : ‘)
output(‘Nama : ‘,b.nama)
output(‘Jurusan : ‘,b.jurusan)
output(‘NIM : ‘,b.NIM)
output(‘Kelas : ‘,b.kelas)
Biodata Anda :
Nama : Muhammad Rizqi Mubarak
Jurusan : S1 Teknik Komputer
NIM : 1103161076
Kelas : TK-40-03
Tabel 1.7 Program Tipe Data Bentukan
Catatan :
• Fungsi gets() digunakan untuk menginputkan string. Jika menggunakan fungsi
scanf() ketika menginputkan string maka hanya akan terbaca sampai
ditemukan spasi. Misal “Christiano Ronaldo”, maka hanya akan terbaca
Christiano, sedangkan Ronaldo tidak terbaca sebab sebelum kata tersebut
program telah menemukan spasi.
• Setiap input dengan scanf dan output dengan printf harus menyertakan penentu
format dari input dan output tersebut. Contoh, kita akan menginputkan nilai 5
(integer) ke variabel x maka kita akan menuliskan : scanf (“%d”, &x); dimana
“%d” merupakan penentu format untuk tipe data integer. Berikut ini adalah
beberapa penentu format yang digunakan dalam bahasa pemrograman C:
A. Tujuan Praktikum
1. Memahami konsep percabangan dalam pemograman
2. Membuat program sederhana menggunakan percabangan dengan bahasa C
3. Mampu memahami dan memecahkan masalah-masalah kasus dalam pemograman
bahasa C
B. Perangkat
1. PC yang terinstal code blocks
C. Dasar Teori
Dalam kehidupan sehari-hari, untuk melakukan sesuatu pasti akan dihadapkan
dengan sebuah atau beberapa keputusan. Di dalam pemograman bahasa C, keputusan
disebut juga dengan fungsi kondisional. Fungsi kondisional menggunakan operasi boolean
(true atau false), operasi logika, dan operasi relasi untuk menentukan aksi (keputusan)
yang akan dilakukan oleh program.
Operasi
Program Keterangan Contoh
Boolean
Operasi
Program Keterangan Contoh
Boolean
if(kondisi){
/*statement atau aksi*/
}
Contoh:
if(kondisi){
/*statement atau aksi*/
}
else{
/*statement atau aksi*/
}
Contoh:
if(kondisi1){
/*statement atau aksi*/
}
else if(kondisi2){
/*statement atau aksi*/
}
Contoh:
}
else if(nilai>60 && nilai<=80)
{
printf("SELAMAT ANDA LULUS!");
printf("\nIndeks = B");
}
else
{
printf("MAAF, TIDAK LULUS!");
}
}
Tabel 2.5 Program If – Else If
if(kondisi1){
if(kondisi2){
/*statement atau aksi*/
}
}
Contoh:
else
{
printf("MAAF, TIDAK LULUS!");
}
return 0;
}
Tabel 2.6 Program Nested If
switch(variabel){
case value_1 :
/*statement value 1*/;
break;
case value_2 :
/*statement value 2*/;
break;
.
.
case value_n :
/*statement value n*/;
break;
default :
/*statement selain value-value diatas*/;
break;
}
Contoh:
a. Syarat variabel dalam menggunakan switch case adalah harus bertipe int, char,
dan enum.
b. Peletakan default: bebas.
c. Tidak boleh ada duplikat pada value case.
d. Keyword break; berfungsi untuk menghentikan perintah yang ada pada case. Jika
tidak menyertakan break;, maka case selanjutnya akan dilakukan.
e. “ … “ 3 titik pada program diatas digunakan untuk menandakan range/interval.
Misal: 1 sampai 5 bisa kita tuliskan menjadi 1 … 5.
f. Nested switch case diperbolehkan
A. Tujuan Praktikum
1. Memahami struktur perulangan dalam bahasa C.
2. Mampu membuat program sederhana menggunakan perulangan dengan Bahasa C
B. Perangkat
1. PC yang terinstal code blocks
C. Dasar Teori
1. Operator Unary
Operator Unary adalah operator yang hanya mengguanakn operand saja. Dalam
perulangan terdapat beberapa operator unary yang sering digunakan, yaitu :
Contoh:
Source Code
#include<stdio.h>
int main(){
int n=0;
float jumlah=0,bil,rata;
char lagi='Y';
while ((lagi=='Y')||(lagi=='y')){
printf("Masukkan bilangan : ");
scanf("%f",&bil);
jumlah=jumlah+bil;
n=n+1;
printf("Apakah Anda akan memasukkan data lagi[Y/T]: ");
scanf("%s",&lagi);
printf("\n");
}
rata=jumlah/n;
printf("\n");
printf("Banyaknya bilangan : %i \n",n);
printf("Rata-rata bilangan : %.2f \n",rata);
}
Output
Masukan bilangan : 3
Apakah anda akan memasukan data lagi [Y/T]: y
Masukan bilangan : 5
Apakah anda akan memasukan data lagi [Y/T]: t
Banyaknya bilangan : 2
Rata-rata bilangan : 4.00
Tabel 3.3 Program Perulangan While
Pada contoh program menghitung rata-rata bilangan di atas input bilangan diisi
3 dan 10 namun bisa diisi secara bebas, kemudian pertanyaan “Apakah anda akan
memasukkan data lagi[Y/T]: ” akan terus muncul secara berulang jika inputnya “y” dan
akan berhenti jika input “t”.
do {
statement-statement;
} while (condition expression);
Contoh:
Source Code
#include<stdio.h>
int main() {
int n=0;
float jumlah=0,bil,rata;
char lagi;
do {
printf("Masukkan bilangan : ");
scanf("%f",&bil);
jumlah=jumlah+bil;
n=n+1;
printf("Apakah Anda akan memasukkan data lagi[Y/T]: ");
scanf("%s",&lagi);
printf("\n");
} while ((lagi=='Y') || (lagi=='y'));
rata=jumlah/n; printf("\n");
printf("Banyaknya bilangan : %i \n",n);
printf("Rata-rata bilangan : %.2f \n",rata);
return 0;
}
Output
Masukan bilangan : 10
Apakah anda akan memasukan data lagi [Y/T]: y
Masukan bilangan : 9
Apakah anda akan memasukan data lagi [Y/T]: t
Banyaknya bilangan : 2
Rata-rata bilangan : 9.50
Tabel 3.4 Program Perulangan Do While
Keterangan :
• Initial value
Memberikan nilai awal pada variable kontrol
• Conditional expression
Eksprsi yang menyatakan berhentinya pengulangan. Jika teskondisi bernilai salah
maka loop aka berhenti.
• Incremental expression
Berfungsi menaikkan/menurunkan nilai dari variable kontrol. Dapat berupa nilai
positif (penaikan) / nilai negatif (penurunan)
Penaikan: setiap loop operator ++ akan menambah 1 ke variable kontrol.
Penurunan: setiap loop operator -- akan menurunkan 1 ke variable kontrol.
Contoh:
Source Code
#include<stdio.h>
int main()
{
int i;
for (i=1;i<=5;i++) {
printf("%d. Selamat belajar, Aku pasti bisa... \n",i);
}
Return 0;
}
Output
A. Tujuan Praktikum
1. Memahami konsep array
2. Memahami syntax pada array
3. Memahami komsep multidimensial array
B. Perangkat
1. PC yang terinstal code blocks
C. Dasar Teori
1. Pengertian Array
Array merupakan sebuah jenis struktur data yang dapat menyimpan ukuran dari
elemen yang mempunyai tipe data sama. Array merupakan konsep yang penting dalam
pemrograman, karena array menyimpan data dalam jumlah banyak dan terindeks.
Misalkan ada kumpulan data bertipe int yaitu angka 1, 2, 3, 4, dan 5. Kumpulan
data ini dapat disajikan dalam bentuk Array karena memiliki tipe data yang sama yaitu
int. Misal kumpulan data tadi diberi nama Angka sehingga jika disajikan dalam bentuk
array akan menjadi int Angka[] = {1, 2, 3, 4, 5} atau int Angka[5] = {1, 2, 3, 4, 5}. Pada
sebuah array, index array dimulai dari indeks ke-0, sehingga pada array Angka[], angka
1 berada di indeks ke-0 (Array[0]), angka 2 berada di indeks ke-1 (Array[1]), dan
seterusnya. Sedangkan pada pendeklarasian Array, int Angka [5] berarti Array Angka
dapat menampung 5 masukan nilai int.
double data[10];
Type namaArray[x];
Type namaArray[x][y];
#include <stdio.h> 1 2 3
int main() 4 5 6
{
int x[2][3] = {{1, 2, 3}, {4, 5, 6}};
//insialisasi data
int i, j;
return 0;
}
Tabel 4.4 Program Array Dua Dimensi
A. Tujuan Praktikum
1. Mempelajari konsep Prosedur dan Fungsi
2. Mengenali syntax C yang digunakan untuk Memahami implementasi Prosedur dan
Fungsi pada C
B. Perangkat
1. PC yang terinstal code blocks
C. Dasar Teori
1. Prosedur
Di dalam dunia pemrograman, prosedur adalah modul program yang
mengerjakan tugas atau aktivitas yang spesifik dan menghasilkan suatu efek netto.
Suatu efek netto diketahui dengan membandingkan keadaan awal dan keadaan akhir
pada pelaksanaan sebuah prosedur. Oleh karena itu, pada setiap prosedur kita perlu
mendefinisikan keadaan awal sebelum rangkaian instruksi di dalam prosedur
dilaksanakan dan keadaan akhir yang diharapkan setelah rangkaian instruksi di dalam
prosedur dilaksanakan.
1.1 Pendefinisian Pemanggilan Prosedur
Pendefinisian prosedur artinya menuliskan nama prosedur, mendeklarasikan
nama-nama konstanta, variabel dan tipe (jika ada), dan menjabarkan rangkaian aksi
yang dilakukan. Pada dasarnya, struktur prosedur sama dengan struktur algoritma
yang sudah dikenal, yaitu: ada bagian judul (header) yang terdiri atas nama
prosedur dan deklarasi parameter (jika ada), bagian deklarasi untuk mengumumkan
nama-nama, dan bagian algoritma yang disebut badan prosedur. Setiap prosedur
mempunyai nama yang unik. Nama prosedur sebaiknya diawali dengan kata kerja
karena prosedur berisi suatu aktivitas, misalnya:
• HitungLuas
• Tukar
• CariMaks
• Dan lain sebagainya.
Parameter adalah nama-nama variabel yang dideklarasikan pada bagian
header prosedur. Sebagian besar program memerlukan pertukaran data/informasi
antara prosedur atau fungsi dan titik dimana ia dipanggil. Penggunaan parameter
menawarkan mekanisme pertukaran informasi tersebut. Tiap item data ditransfer
antara parameter aktual dan parameter formal yang bersesuaian. Parameter
aktual/argumen adalah parameter yang disertakan pada waktu pemanggilan
prosedur, sedangkan parameter formal adalah parameter yang dideklarasikan di
dalam bagian header prosedur itu sendiri. Ketika prosedur dipanggil, parameter
aktual menggantikan parameter formal.
ALGORITMA:
badan prosedur, berisi urutan instruksi */
}
Prosedur bukan program yang berdiri sendiri, jadi ia tidak dapat dieksekusi
secara langsung. Ini berarti, instruksi-instruksi di dalam prosedur baru dapat
dilaksanakan hanya bila prosedur tersebut diakses.
• Cara memanggil prosedur tanpa parameter:
Nama_Prosedur();
Nama_Prosedur(parameter aktual);
Source Code
#include <stdio.h>
int main(){
int i, N;
float a, t;
Output
Banyaknya segitiga? 2
Source Code
jumlah=0; /* algoritma */
printf("\n");
for (k=1; k<=N; k++){
printf("Masukkan angka: ");
scanf("%d", &x);
jumlah= jumlah + x;
}
*u= jumlah/N;
}
int main(){
int banyak;
float U;
Output
Banyaknya data? 3
Masukkan angka: 19
Masukkan angka: 21
Masukkan angka: 34
Rata-rata: 24.666666
Tabel 5.2 Program Prosedur dengan Parameter Keluaran
Source Code
#include <stdio.h>
void Tukar(int *A, int *B){
int temp;
printf("X = ?");
scanf("%d", &X);
printf("Y = ?");
scanf("%d", &Y);
Output
Banyaknya data? 3
Masukkan angka: 19
Masukkan angka: 21
Masukkan angka: 34
Rata-rata: 24.666666
Tabel 5.3 Program Prosedur dengan Parameter Masukan/Keluaran
ALGORITMA:
badan fungsi, berisi urutan instruksi */
return ekspresi;
//pengembalian nilai yang dihasilkan fungsi
}
Catatan:
1. Apabila fungsi tidak memiliki daftar parameter formal, maka tanda kurung
buka dan kurung tutup ( ) tetap harus ditulis. Hal yang sama juga berlaku pada
waktu pemanggilannya.
2. Sebagaimana halnya pada prosedur, fungsi didefinisikan di luar blok int
main().
Berikut ini bentuk umum dari definisi fungsi dalam bahasa C :
• Tipe-data merupakan penentu tipe data dari keluaran fungsi yang berupa salah
satu dari tipe data yang didukung oleh bahasa C seperti char atau int.
• Nama-fungsi adalah pengenal atau identifier dari fungsi misalnya saat
dipanggil.
Source Code
#include<stdio.h>
float F(float x){
return x*x + 2*x -4;
}
int main(){
float x = 2.0;
printf("----------------------\n");
printf("| x | f(x) |\n");
printf("----------------------\n");
while(x <= 5.0){
printf("| %.2f | %10f |\n", x, F(x));
x += 0.5;
}
printf("----------------------\n");
return 0;
}
Output
----------------------
| x | f(x) |
----------------------
| 2.00 | 4.000000 |
| 2.50 | 7.250000 |
| 3.00 | 11.000000 |
| 3.50 | 15.250000 |
| 4.00 | 20.000000 |
| 4.50 | 25.250000 |
| 5.00 | 31.000000 |
----------------------
Tabel 5.4 Program Fungsi f(x) = x2 + 2x – 4
Source Code
#include<stdio.h>
Output
Masukkan bilangan a : 3
Masukkan bilangan b : 8
Bilangan terbesar : 8
Tabel 5.5 Program Bilangan Maks
2.2 Parameter Fungsi
Parameter sebuah fungsi adalah variabel yang menyertai fungsi tersebut baik
saat deklarasi maupun saat pemanggilan fungsi. Dalam bahasa C dikenal dua jenis
parameter, yaitu parameter formal dan aktual. Parameter formal adalah parameter
yang berupa variabel yang ada dalam definisi fungsi saat dideklarasikan.
Sedangkan parameter aktual adalah parameter yang bisa berupa variabel atau
konstanta yang dipakai saat pemanggilan fungsi
Ada 2 Jenis Parameter diantaranya:
• Parameter Formal
Parameter Formal adalah sebuah fungsi harus berupa variabel karena
dia bersifat kerangka yang nanti nilainya bisa berubah selama proses
program. Tata cara penulisan parameter formal tampak jelas pada saat
pembahasan tentang prototipe fungsi. Parameter formal bisa berupa satu atau
beberapa variabel yang ditulis setelah nama fungsi, ditaruh didalam kurung
dengan masing-masing variabel dipisahkan tanda koma
Source Code
#include<stdio.h>
int main(){
int i=0;
deret(i);
}
Output
0 1 2 3 4 5 6 7 8 9
Tabel 5.6 Program Fungsi Rekrusif
Pada program diatas bisa kita lihat dan kita nyatakan bahwa:
• Basis dari program diatas adalah if(i<10) dimana dinyatakan titik berhenti
program ketika If variable I adalah 10.
• Rekrusif terdapat pada class main ditulis deret(i) dinyatakan bahwa class
deret diulang sebanyak I kali.
Source Code
#include <stdio.h>
void TentukanMaks(int a, int b, int *maks){
printf("Masukkan bilangan 1: ");
scanf("%d", &a);
printf("Masukkan bilangan 2: ");
scanf("%d", &b);
if (a<b)
*maks=b;
else if (b<a)
*maks=a;
}
int main(){
int c,d,e;
TentukanMaks(c, d, &e);
printf("Angka terbesar: %d", e);
}
Output
Masukkan bilangan 1 : 12
Masukkan bilangan 2 : 10
Angka terbesar: 12
Tabel 5.7 Program Fungsi -> Prosedur
3.2 Mengubah Prosedur Menjadi Fungsi
Prosedur yang mempunyai satu buah parameter keluaran dapat ditulis
sebagai fungsi dengan cara menyatakan parameter keluaran sebagain nilai yang
dikembalikan oleh fungsi. Sebagai contoh, tinjau prosedur menghitung rata-rata di
sub bab prosedur. Maka program fungsi nya adalah:
Source Code
Output
Banyaknya data? 3
Rata-rata: 20.666667
Tabel 5.8 Program Prosedur -> Fungsi
A. Tujuan Praktikum
1. Mengetahui dan Memahami Konsep Sorting
2. Mengetahui Jenis-Jenis Sorting dan Perbedaan Masing-masing Sorting
3. Memahami Bagaimana Implementasi Sorting
B. Perangkat
1. PC yang terinstal code blocks
C. Dasar Teori
Dalam pemrograman dengan bahasa C memiliki cara untuk mengurutkan data.
Konsep Sorting dalam pemrograman dengan bahasa C dapat memudahkan mengurutkan
data acak. Ada beberapa teknik atau metode sorting dalam bahasa C,sebagai berikut :
1. Bubble Sort
Bubble sort (metode gelembung) adalah metode/algoritma pengurutan dengan
dengan cara melakukan penukaran data dengan tepat disebelahnya secara terus menerus
sampai bisa dipastikan dalam satu iterasi tertentu tidak ada lagi perubahan. Jika tidak
ada perubahan berarti data sudah terurut.
Source Code
#include <stdio.h>
int main ()
{
int data[10] = {3, -2, 7, 10, -5, 22, 1, 27, 25, 30};
int pass, i, temp;
//bubble sort
for (pass = 1; pass < 10; ++pass)
{
for (i = 0; i < 10 - 1; ++i)
{
//Membandingkan data array ke-i dengan array ke-i+1
if (data[i] > data[i + 1])
{
temp = data[i];
//data array ke i dipindahkan ke variable temp
data[i] = data[i + 1];
//data array i menjadi array i+1
data[i + 1] = temp;
//data array i+1 menjadi data array i
}
}
}
Output
Source Code
#include <stdio.h>
#define SIZE 5
int main (){
int data[SIZE] = {3, 12, 7, 1, 5};
int i, j, temp;
printf("Data sebelum diurutkan :\n");
//printing data items
for ( i = 0; i < SIZE; ++i){
printf("%4d", data[i]);
}
Source Code
#include <stdio.h>
#define SIZE 5
Output
Source Code
#include<stdio.h>
int main(){
int a[50],n,i,max=0;
printf("Masukan jumlah data : ");
scanf("%d",&n);
printf("\n");
for(i=0;i<n;++i){
printf("Masukkan data ke %d : ",i);
scanf("%d",&a[i]);
if(a[i]>max)
max=a[i];
}
counting_sort(a,n,max);
return 0;
}
Masukkan data ke 0 : 9
Masukkan data ke 1 : 52
Masukkan data ke 2 : 7
Masukkan data ke 3 : 2
Masukkan data ke 4 : 7
Masukkan data ke 5 : 54
Masukkan data ke 6 : 8
A. Tujuan Praktikum
1. Memahami dan mengerti logika pencarian dengan menggunakan metode sekuensial
dan binary
2. Mampu mengimplementasikan logika pencarian ke dalam program menggunakan
bahasa C.
3. Mampu melakukan analisis pada algoritma Searching yang dibuat.
B. Perangkat
1. PC yang terinstal code blocks
C. Dasar Teori
Searching merupakan proses pencarian suatu data / nilai di dalam sebuah array
dengan cara mengecek satu persatu pada setiap index baris atau setiap index kolomnya.
Hampir sama dengan sorting, searching menggunakan teknik perulangan untuk melakukan
pencarian data. Ada 2 Teknik umumnya adalah sebagai berikut:
1. Sequential Search
Sequential Search adalah teknik pencarian data dimana data dicari secara urut
dari depan ke belakang atau dari awal sampai akhir. Data dibandingkan satu per satu
dari awal sampai data ditemukan atau tidak ditemukan. Kelebihan dari proses pencarian
secara sequential ini jika data yang dicari terletak didepan, maka data akan ditemukan
dengan cepat. Tetapi dibalik kelebihannya ini, teknik ini juga memiliki kekurangan.
Pertama, jika data yang dicari terletak dibelakang atau paling akhir, maka akan
membutuhkan waktu yang lama dalam proses pencariannya. Kedua, beban komputer
akan semakin bertambah jika jumlah data dalam array sangat banyak.
Misalkan terdapat sebuah data pada array A : 5 3 1 8 4, yang dicari angka 1,
maka program akan mengecek satu persatu dan data ditemukan pada indeks ke 3.
Contoh:
Source Code
#include<stdio.h>
int main(){
int a[100], i, n, cari;
printf("Banyak data : ");
scanf("%d",&n);
printf("\n");
for (i=0;i<=n-1;i++){
printf("Data ke-%d : ",i+1);
scanf("%d",&a[i]);
}
printf("\nData yang ingin dicari : ");
scanf("%d",&cari);
//proses sequential search
i=0;
while ((i<=n-1) && (a[i]!=cari)){
Algoritma
Program sequentialSearch
Kamus
a : array [1..100] of integer
i, n, cari : integer
Algoritma :
Output(‘Masukkan banyak data : ‘)
Input(n)
i traversal [1..n]
Output(‘Masukkan data ke-‘,i,’ : ‘);
Input(ai)
Output(‘Data yang ingin dicari : ‘)
Input(cari)
i = 1
while (i ≤ n) and (ai≠cari) do
i = i + 1;
if(ai = cari) then
Output(‘Data ditemukan pada indeks : ‘,i)
break
if(i = n-1) then
Output(‘Data tidak ditemukan’)
Output
Banyak data : 6
Data ke-1 : 98
Data ke-2 : 23
Data ke-3 : 54
Data ke-4 : 66
Data ke-5 : 31
Data ke-6 : 78
1 2 3 4 5 6 Indeks
1 3 10 15 17 20 Array A (sudah diurutkan
terlebih dahulu)
1 2 3 4 5 6 Indeks
Array
1 3 10 15 17 20 A
1 2 3 4 5 6 Indeks
Array
1 3 10 15 17 20 A
Gambar 7.3 Binary Search-3
Pencarian akan terus berlangsung hingga data ditemukan atau nilai dari mid = low =
high.
Modul Praktikum Algoritma Pemrograman 55
Contoh:
Source Code
#include <stdio.h>
int a[100];
int i,n,cari,idx,low,high, mid;
void main (){
printf("Banyak data : ");
scanf("%d",&n);
for (i=1;i<=n;i++)
{
printf("Data ke-%d : ",i);
scanf("%d",&a[i]);
}
printf("Data yang dicari : ");
scanf("%d",&cari);
low=1;
high=n;
idx=0;
while ((low<=high) && (idx==0))
{
mid=(low+high)/2;
if (a[mid]==cari)
idx=mid;
else if (a[mid]<cari)
low=mid+1;
else
high=mid-1;
}
if (idx!=0)
printf("\nData ditemukan pada indeks : %d",idx);
else
printf("\nData tidak ditemukan");
return 0;
}
Algoritma
Program binarySearch
Kamus
a : array [1..100] of integer
i, n, cari, idx, low, high, mid : integer
Algoritma :
Output(‘Masukkan banyak data : ‘) Input(n)
Output
Banyak data : 6
Data ke-1 : 98
Data ke-2 : 23
Data ke-3 : 54
Data ke-4 : 66
Data ke-5 : 31
Data ke-6 : 78
A. Tujuan Praktikum
1. Memahami cara membuat, membuka, dan menutup file.
2. Memahami cara read dan write pada file.
3. Memahami cara truncate dan mengubah data pada file.
B. Perangkat
1. PC yang terinstal code blocks
C. Dasar Teori
1. Pengertian
Secara definisi file adalah entitas dari data yang disimpan di dalam sistem
berkas yang dapat diakses dan diatur oleh pengguna. File juga dapat didefinisikan
sebagai kumpulan informasi yang biasanya disimpan dalam sebuah disk komputer,
dimana informasi disimpan dan dapat diambil kembali. Sebuah berkas memiliki nama
yang unik dalam direktori dimana ia berada. Alamat direktori dimana suatu berkas
ditempatkan diistilahkan dengan path. File atau berkas diorganisasikan dari sejumlah
record. Masing-masing record bisa terdiri dari satu atau beberapa field. Setiap field
terdiri dari satu atau beberapa byte
2. Operasi File
Secara umum operasi file dibagi menjadi 4, yaitu:
2.1 Membuat File
Dalam membuat file kita memerlukan nama file terlebih dahulu sehingga deklarasi
yang di perlukan sebagai berikut:
fp = fopen("file.txt", "w+");
//variabel fp sekarang berisi file.txt
fclose(fp);
//menutup file yang ada di variabel fp uaitu file.txt
//untuk fgets
fgets(char *str, int p, file*fp);
//untuk fputs
fputs(char *str, file *fp);
Catatan:
• char *str menyesuaikan dengan nama variabel string yang ingin kita
masukkan kedalam file atau yang akan kita baca dari file.
• int p merupakan panjang dari string atau filenya.
• file *fp merupakan variabel file yang ingin kita akses.
b) Blok Data
Untuk menulis blok data kita dapat menggunakan fwrite() dan fread().
Penulisannya sebagai berikut:
Catatan:
• buffer merupakan alamat memori dari variabel yang ingin kita ambil
nilainya.
• b merupakan panjang byte yang ingin ktia pakai.
• c merupakan panjang karakter yang digunakan.
• fp merupakan pointer ke file.
c) File Yang Sudah Terformat
Jika diperlukan kita bisa menuliskan, data yang sudah terformat. Penulisannya
sebagai berikut:
Source Code
#include<stdio.h>
#include<stdlib.h>
int main(){
FILE *pf;
char kar;
if((pf=fopen("COBA.TXT","a+"))==NULL)
{
printf("file tidak dapat diciptakan!\r\n");
exit(0);
}
while((kar=fgetc(pf)) != EOF) /*baca kar dari file*/
putchar(kar);
while((kar=getchar())!='\n') /*baca inputan user */
fputc(kar,pf);
fclose(pf);
return 0;
}
Tabel 8.1 Program Read and Write
2.4 Truncate File
Truncate file merupakan suatu cara untuk menghapus atau mengubah isi
dalam sebuah file, truncate akan menghapus satu line dalam file. Contoh Program:
Source Code
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main(){
int status;
char COBA[25];
printf("\tProgram penghapus file\n");
printf("Tulis nama file yang ingin dihapus\n");
scanf("%[^\n]",COBA);
status = remove(COBA);
#include<stdio.h>
int main(){
int request, acc;
float bal;
char name[25],min;
FILE *cfPtr;
if((cfPtr = fopen("klien.txt","r+"))==NULL)
printf("File could not be opened\n");
else{
printf("Enter Request\n"
"1 - List account with zero balances\n"
"2 - List account with credit balances\n"
"3 - List account with debit balances\n"
"4 - End of run\n\n? ");
scanf("%d", &request);
while(request!=4){
fscanf(cfPtr,"%d %s %c %f", &acc, name, &min, &bal);
switch(request){
case 1:
printf("Account with zero balances:\n");
while(!feof(cfPtr)){
if(bal == 0 && min!= '-')
printf("%-10d%-6s%5.2f\n", acc,name,bal);
fscanf(cfPtr,"%d %s %c %f",&acc,name,&min,&bal);
}break;
case 2:
printf("Account with credit balances:\n");
while(!feof(cfPtr)){
if(min == '-')
printf("%-10d%-6s%5.2f\n", acc,name,0-bal);
fscanf(cfPtr,"%d %s %c %f",&acc,name,&min,&bal);
}break;
case 3:
printf("Account with debit balances:\n");
while(!feof(cfPtr)){
if(bal > 0 && min!= '-')
printf("%-10d%-6s%5.2f\n", acc,name,bal);
fscanf(cfPtr,"%d %s %c %f",&acc,name,&min,&bal);
}break;
}
rewind(cfPtr);
printf("\n? ");
scanf("%d",&request);
}
printf("End of run.\n");
fclose(cfPtr);
}
return 0;
}
Enter Request
1 - List account with zero balances
2 - List account with credit balances
3 - List account with debit balances
4 - End of run
? 1
Account with zero balances:
123910909 indy 0.00
192891881 bayu 0.00
123761726 alif 0.00
? 2
Account with credit balances:
127718781 julian -188.19
129301898 rico -200.12
982837187 el -132.20
? 3
Account with debit balances:
982939881 bayok 999.99
192389011 gita 653.40
123187718 syifa 92.10
912881877 arief 199.10
182771823 tirta 1200.90
? 4
End of run.
Tabel 8.3 Program File Sekuensial
A. Tujuan Praktikum
1. Memahami formatting integer dalam printf pada C
2. Memahami formatting float dalam printf pada C
3. Memahami formatting string dalam printf pada C
4. Memahami formatting lainnya dalam printf pada C
5. Memahami escape sequence pada C
B. Perangkat
1. PC yang terinstal code blocks
C. Dasar Teori
1. Fungsi printf
Syntax :
printf("%flags|width|.precision|length|specifier", ...);
Fungsi printf pada dasarnya bukan bagian dari Bahasa pemograman C, tetapi
merupakan sebuah fungsi didalam header library <stdio.h>. Fungsi printf
menggunakan format specifier yang diawali dengan “%”, dimana format specifier akan
digantikan dengan nilai-nilai pada argumen-argumen selanjutnya pada fungsi printf.
Yang paling umum digunakan adalah %d atau %i untuk integer (bilangan bulat); %f
untuk float(bilangan pecahan); %c untuk char(karakter atau huruf); %s untuk string,
dan masih banyak lagi yang nantinya akan dijelaskan dalam bab ini
a. Integer Formatting
Formatting untuk integer menggunakan simbol %i atau %d, dalam source code
printf("%i\n", a);
printf("%d\n", a);
printf("%3d\n", a);
printf("%5d\n", a);
printf("%05d\n" ,a);
return 0;
}
Tabel 9.1 Program Integer Formatting
return 0;
}
Tabel 9.2 Program Float Formatting
Penjelasan:
• %f menandakan sebuah float atau double. Catatan: jika float tidak diformat
jumlah bilangan desimalnya, maka secara default adalah 6 digit dibelakang
koma.
• %5f menandakan bahwa float akan dialokasikan lima karakter, tetapi karena
float lebih panjang dari 5 karakter, tidak ada perubahan. PENTING: tanda
petik ( . ) dihitung sebagai 1 karakter
return 0;
}
Tabel 9.3 Program String Formatting
Penjelasan:
• %s – menampilkan string seperti biasa
• %15s – string dialokasikan lima belas karakter, jika string lebih pendek akan
diberi whitespace sampai string sepanjang 15 karakter.
• %.10s – sepuluh karakter pertama string saja yang ditampilkan
• %-10s – string akan dialokasikan sebanyak sepuluh karakter dan ditampilkan
rata kiri (-), karena string lebih panjang dari 10 karakter maka tidak ada
perubahan.
Source Code
#include<stdio.h>
int main()
{
printf("Heksadesimal 1 : %x\n", 123);
printf("Heksadesimal 2 : %#x\n\n", 123);
return 0;
}
Output
Heksadesimal 1 : 7b
Heksadesimal 2 : 0x7b
Oktal : 377
Flags Deskripsi
Width Deskripsi
.Precision Deskripsi
A. Tujuan Praktikum
1. Memahami fundamental dari string pada bahasa C
2. Memahami cara mengolah string pada bahasa C
B. Perangkat
1. PC yang terinstal code blocks
C. Dasar Teori
1. Fundamental String
Dalam bahasa pemograman C, pada dasarnya string merupakan sebuah array
dari char. Misalnya string “hello” merupakan array yang memuat ‘h’,’e’,’l’,’l’,’o’ dan
‘\0’ (null, tetapi karakter null ditambahkan secara automatic oleh C). Ketika membuat
string pada C digunakan array dari char, perlu diingat juga bahwa index pada array
dimulai dari nilai 0. Selain sebagai array dari char, string juga dapat ditulis sebagai
sebuah pointer char.
• Deklarasi Variabel String
Karena string merupakan array dari char, maka pendeklarasiannya sama dengan
mendeklarasikan array dari char, yaitu :
char nama_variabel[jumlah_karakter];
Contoh:
char alamat[40]
–> deklarasi variabel alamat dengan tipe data string.
b) Strcat
Berfungsi untuk menambahkan string sumber ke bagian akhir dari string
tujuan.
strcat(string_awal, string_tambahan);
strcmp(string1, string2);
d) Strlen
Berfungsi untuk memperoleh jumlah karakter dari suatu string.
strlen(string);
Contoh:
Source Code
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(){
char p1[10]="Welcome";
char p2[10]="Alpro";
char p3[10];
int pjg_karakter,index;
strcpy(p3,p1);
printf("p3 adalah : %s\n",p3);
strcat(p1 ,p2);
printf("p1 adalah : %s\n",p1);
printf("p2 adalah : %s\n",p2);
pjg_karakter=strlen(p2);
printf("panjang p2 adalah : %i\n",pjg_karakter);
index=strstr(p1,p2)-p1;
printf("p2 ada di index ke-%i pada karakter p1",index);
return 0;
}
Output
p3 adalah : Welcome
p1 adalah : WelcomeAlpro
p2 adalah : Alpro
panjang p2 adalah : 5
p2 ada di index ke-7 pada karakter p1
Tabel 10.1 Program String
A. Tujuan Praktikum
1. Memahami cara melakukan loop control pada C.
2. Memahami berbagai fungsi-fungsi matematika algoritma pemograman dasar terutama
pada C.
B. Perangkat
1. PC yang terinstal code blocks
C. Dasar Teori
1. Loop Control
Saat membuat program terkadang kita perlu untuk mengkontrol sebuah loop
agar program bisa berjalan sesuai yang kita mau, untuk mengkontrol sebuah loop kita
bisa menggunakan loop control sebagai berikut :
1.1 Keyword Break
Keyword break digunakan untuk keluar dari sebuah loop. Contoh:
Source Code
#include <stdio.h>
#include <stdlib.h>
int main(){
int n,i;
printf("Masukan jumlah baris : ");
scanf("%d",&n); //input nilai n
for(i=0;i<100;i++){
//perulangan for dimulai dari i=0 sampai i<100
if(i==n){
break;
//keyword break untuk keluar dari perulangan
}
printf("ini baris ke %d\n",i);
}
return 0;
}
Output
Source Code
#include <stdio.h>
#include <stdlib.h>
int main()
{
int n,i;
printf("Masukan nilai n : ");
scanf("%d",&n);
for(i=0;i<5;i++){
//perulangan for dimulai dari i=0 sampai i<5
if(i==n){
continue;
//keyword continue untuk melewatkan iterasi i = n
}
printf("ini baris ke %d\n",i);
}
return 0;
}
Output
Masukan nilai n : 3
ini baris ke 0
ini baris ke 1
ini baris ke 2
ini baris ke 4
Tabel 11.2 Program Keyword Continue
Saat iterasi dimana i = n, iterasi tersebut tidak dijalankan, dan langsung ke iterasi
selanjutnya.
1.3 Keyword Goto dan Pelabelan
Keyword goto digunakan untuk menjalankan program lagi dari sebuah “label”.
Contoh:
Source Code
#include <stdio.h>
#include <stdlib.h>
int main()
{
int n,i=0;
printf("Masukan nilai n : ");
scanf("%d",&n); //input nilai n
Output
Masukan nilai n : 5
label1
nilai i = 0
label1
nilai i = 1
label1
nilai i = 2
label1
nilai i = 3
label1
nilai i = 4
Tabel 11.3 Program Keyword Goto
Ketika program dijalankan pertama kali, nilai i = 0. Setiap melewati statement
“i++;”, nilai i menjadi bertambah 1 dan syarat “if(i < n)” terpenuhi, dan didalam
“if” tersebut diberikan perintah “goto label1”. Maka program akan dijalankan lagi
dari label “label1”, proses akan berulang-ulang hingga “if” tidak terpenuhi dan
statement “goto label1;” tidak dijalankan lagi.
2. Math Function
Untuk pemanggilan dan melakukan perhitungan fungsi matematika di
pemrograman C diperlukan library function <math.h> . Library function adalah fungsi-
fungsi yang disediakan oleh bahasa C dan C++ dalam file-file header atau librarynya.
Perlu diperhatikan bahwa library tersebut hanya menerima parameter dengan tipe data
float/double.
Bebarapa fungsi untuk melakukan perhitungan matematika sebagai berikut :
2.1 Trigonometri
Perlu diperhatikan dalam fungsi-fungsi trigonometri pada <math.h>,
digunakan satuan radians untuk sudut, bukan derajat (degree). Untuk konversi dari
radians ke derajat dapat digunakan rumus berikut:
Degrees= 180π×Radians
Untuk nilai π dapat dideklarasikan konstanta menggunakan preprocessor #define,
contoh :
#define PHI 3.14
Deklarasi Kegunaan
Source Code
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main(){
double radians,derajat;
printf("Masukan nilai : ");
scanf("%lf",&derajat); //input nilai derajat
radians = derajat * (M_PI/180); //menghitung radians
//menhitung sin menggunakan fungsi sin(radians)
printf("sin %.0f = %.2f \n", derajat, sin(radians));
//menghitung cos menggunakan fungsi cos(radians)
printf("cos %.0f = %.2f \n", derajat, cos(radians));
Output
Masukan nilai : 60
sin 60 = 0.87
cos 60 = 0.50
tan 60 = 1.73
Tabel 11.5 Program Trigonometri
2.2 Eksponensial
Fungsi – Fungsi Eksponensial :
Deklarasi Kegunaan
Source Code
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main()
{
double x,y;
return 0;
}
Output
Masukan nilai x : 16
Masukan nilai y : 2
e^16 = 8886110.52
log(16) = 2.77
log10(16) = 1.20
16^2 = 256.00
akar kuadrat 16 = 4.00
Tabel 11.7 Program Eksponensial
2.3 Fungsi-Fungsi Lainnya
Selain fungsi-fungsi trigonometri dan eksponensial. Terdapat fungsi lain yang
mendukung perhitungan matematika diantaranya :
Deklarasi Kegunaan
Source Code
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main(){
double x,y;
printf("Masukan nilai x: ");
scanf("%lf",&x); //input nilai x
printf("Masukan nilai y: ");
scanf("%lf",&y); //input nilai y
return 0;
}
Output
A. Tujuan Praktikum
1. Memahami dasar dari pointers pada C
B. Perangkat
1. PC yang terinstal code blocks
C. Dasar Teori
Pointer adalah sebuah variabel yang berisi alamat memori dari suatu variabel
lainnya. Jika biasanya sebuah variabel berisi dengan suatu nilai data, maka variabel pointer
berisi dengan suatu alamat memori yang ada di computer kita. Sebuah variabel pointer
ditandai dengan asterisk (*) , dan dapat dideklarasikan dengan syntax berikut:
Type_data *nama_variabel
Output(…,&nama_variabel);
Source Code
#include<stdio.h>
int main(){
int x = 7;
int *ptr;
ptr = &x;
printf("* - nilai pada alamat\n& - alamat\n\n");
printf("Nilai x : %i\n", x);
printf("Nilai &x : %x\n", &x);
printf("Nilai ptr : %x\n", ptr);
printf("Nilai *ptr: %i\n", *ptr);
printf("Nilai &ptr: %x\n", &ptr);
return 0;
}
Nilai x : 7
Nilai &x : 60ff0c
Nilai ptr : 60ff0c
Nilai *ptr : 7
Nilai &ptr : 60ff08
Tabel 12.1 Program Pointer
Untuk lebih jelasnya coba perhatikan
• x – sudah dapat diketahui nilai dan type datanya yaitu 7 (type data integer).
• &x – alamat dari variabel x adalah 60ff0c (hexadecimal)
• ptr – nilai dari alamat pointer ptr1adalah alamat dari variabel x,karena perintah atau
logika prt = &x, maka nilai ptr1 sama dengan alamat variabel x
• *ptr – nilai pada alamat yang ditunjuk pointer ptr, karena ptr mengandung alamat x,
nilai pada alamat yang ditunjuk adalah nilai variabel x
• &ptr – alamat dari ptr adalah 60ff0c (hexadecimal).
Supaya lebih memahami address dan pointer, bisa dipelajari juga penjelasan ilustratif dari
program diatas.