Anda di halaman 1dari 72

TUGAS PRAKTIKUM ALGORITMA

KELAS A, TEKNIK INFORMATIKA 2014/2015 SEMESTER I


RIKI RUSNANDAR / 2014081095

MODUL 1
PENGENALAN BAHASA PEMROGRAMAN C++
Dasar Teori
Bahasa C merupakan perkembangan dari bahasa BCPL yang dikembangkan oleh
Martin Richards pada tahun 1967. Selanjutnya bahasa ini memberikan ide kepada
Ken Thomson yang kemudian mengembangkan bahasa yang disebut bahasa B pada
tahun 1970. Perkembangan selanjutnya dari bahasa B adalah bahasa C oleh Denis
Rithie sekitar tahun 1970-an di Bell Telephone Laboratories Inc. (sekarang adalah
AT&T Bell Laboratories). Bahasa C pertama kali digunakan dikomputer Digital
Equipment Corporation PDP-11 yang menggunakan system operasi UNIX. Hingga
saat ini penggunaan bahasa C telah merata di seluruh dunia. Hampir semua perguruan
tinggi di dunia menjadikan bahasa C sebagai salah satu sebagai mata kuliah wajib.
Selain itu, banyak bahasa pemprograman popular seperti PHP dan Java menggunakan
sintaks dasar yang mirip bahasa C. oleh karena itu, kita juga sangat perlu
mempelajarinya.

Setiap program C++ mempunyai bentuk umum seperti di bawah ini :


# preprocessor directive
void main()
{

// Batang Tubuh Program Utama


}
Penjelasan :
1. Include
Adalah satu pengarah preprocessor directive yang tersedia pada C++
2. Fungsi main()
Fungsi ini menjadi awal dan akhir eksekusi profram C++. Main adalah nama judul
fungsi.
3. Komentar
Komentar tidak pernah dicompile oleh compiler.
4. Tanda semicolon
Tanda semicolon ; digunakan untuk mengakhiri sebuah pernyataan.
Variable
Variable adalah suatu pengenal (identifier) yang digunakan untuk mewakili satu nilai
tertentu di dalam proses program.
Nama dari suatu variable dapat ditentukan sendiri oleh pemrogram dengan aturan sebagai
berikut :
1. Terdiri dari gabungan huruf dan angka dengan karakter pertama harus berupa
huruf.
2. Tidak boleh mengandung spasi
3. Tidak boleh mengandung simbol-simbol khusus, kecuali garis bawah
(underscore)
4. Panajangnya bebas, tetapi hanya 32 karakter pertama yang terpakai.
Deklarasi
Deklarasi diperlukan bila kita akan menggunakan pengenal (identifier) dalam program.

1. Deklarasi variable
Bentuk umumnya :
Nama_tipe nama_variable;
Contoh :
a. Int x;

//Deklarasi x vertipe integer

b. Char y, huruf, nim[10];

//Deklarasi variable bertipe char

2. Deklarasi konstanta
a. Menggunakan keyboard const
Contoh : const float PI = 3.14152965;
b. Menggunakan #define
Contoh : #define PI 3.14152965
Tipe data
Tipe

Ukuran (byte)

Batas Bawah

Batas Akhir

Char

Unsigned char

225

Short int

-32768

327767

Unsigned short int

65536

Int

-231

+231-1

Float

-3.2x1038

+3.2x1038

Double

-1.7x10308

+1.7x10308

Karakter dan string


Dalam C++, selain \n terdapat juga beberapa karakter khusus yang biasa disebut escape
sequence character, yaitu :

Karakter

Keterangan

\0

Karakter ber-ASCII nol (karakter null)

\a

Karakter Bell

\b

Karakter backspace

\f

Karakter ganti halaman

\n

Karakter baris baru

\r

Karakter carriage return (ke awal baris)

\t

Karakter tab horizontal

\v

Karakter tab vertical

\\

Karakter \

Karakter

Karakter

\?

Karakter ?

Format data
Format data adalah penentu format yang akan mengatur penampilan dari argument yang
terletak pada daftar argument. Bentuk penentu format antara lain :
%d

: untuk menampilkan bilangan bulat (integer)

%f

: untuk menampilkan bilangan real

%c

: untuk menampilkan sebuah karakter

%s

: untuk menampilkan sebuah string

TUGAS PRAKTIKUM ALGORITMA


KELAS A, TEKNIK INFORMATIKA 2014/2015 SEMESTER I
RIKI RUSNANDAR / 2014081095

MODUL 2
OPERASI INPUT/OUTPUT DAN PENGGUNAAN OPERATOR
Dasar Teori
Operasi input/output (header stdio.h)
1. Printf()
Fungsi ini digunakan untuk menampilkan suatu keluaran pada layar.
Bentuk umum dari printf() adalah sebagai berikut :
Printf(string kontrol, arguman1, argumen2,);
2. Puts()
Cara lain untuk menampikan suatu keluaran ke layar adalah dengan
menggunakan puts. Tetapi fungsi puts hanaya digunakan untuk menampilkan
nilai string dan sudah mengandung line feed atau escape sequence ganti baris.
3. Putchar()
Fungsi ini digunakan untuk menampilkan sebuah karakter saja dan tidak
mengandung escape sequence \n.
4. Scanf()
Jika kita ingin memasukan data dari keyboard, kita dapat menggunakan fungsi
scanf. Data selanjutnya dapat didefinisikan sebagai data variable. Jika fungsi
scanf ini digunakan untuk membaca data tipe array, karakter selanjutnya kita
sebut dengan istilah string, maka fungsi ini hanya akan membaca data sampai
ditemukan blank.
5. Gets()

Jika menggunakan fungsi scanf untuk membaca data bertipe string, maka data
tersebut hanya akan dibaca sampai ditemukan spasi. Untuk keperluan pemasukan
data string yang panjang dipisahkan dengan spasi, bahasa C menyediakan fungsi
gets.
6. Getchar()
Perintah ini digunakan untuk memasukan sebuah nilai karakter ke variable yang
bertipe karakter.
Operasi input/output (header iostream.h)
1. Cout
Cout merupakan sebuah objek di dalam C++, yang digunakan untuk
mengarahkan data ke dalama standar output (cetak pada layar).
Bentuk umum daric out adalah sebagai berikut :
Cout << daftar_keluaran;
2. Cin
Cin merupakan sebuah objek yang digunakan untuk memasukan data ke suatu
variable melalui keyboard.
Operator
Operator merupakan simbol khusus yang mempresentasukan perhitungan sederhana
seperti penambahan dan perkalian.
Macam-macam tipe operator :
1. Operator penunjukan (assignment)
Memberikan nilai dari bagian setelah kanan operator ke bagian sebelah kiri
operator. Operator penunjukan data bahasa C/C== menggunakan tanda sama
dengan =. Termasuk +=,-=,*=,/=,%=
2. Operator aritmatika
Merupakan simbol-simbol matematika seperti +,-,/,*

3. Operator rasional
Operator untuk membandingkan kesamaan dua nilai digunakan tanda == dan
menghasilkan sebuah ekspresi Boolean. Operator-operator yang lain : !=,>,<,>=.

Pratikum
Pratikum 1 : Penggunaan printf()
1. Tulis source code berikut ini :
# include <stdio.h>
Void main()
{
Int nilai=3;
Printf(Bahasa C Menyenangkan \n);
Printf(Nilai = %d \n, nilai);
}

2. Compile dan jalankan


3. Amati penggunaan bentuk penulisan untuk fungsi printf
4. Ubah menggunakan preprocessor directive iostream.h

Pratikum 2 : Penggunaan puts()


1. Tulis source code berikut ini :
# include <stdio.h>
Void main()
{
Puts(Bahasa C Menyenangkan \n);
Puts(Belajar bahasa C);
}

2. Compile dan jalankan


3. Amati penggunaan bentuk penulisan untuk fungsi puts

Pratikum 3 : Penggunaan putchar()


1. Tulis source code berikut ini :
# include <stdio.h>
Void main()
{
Char a;
Printf(a = ); scanf (%c, &a);
Printf(Data yang anda masukan);
Putchar(\n);
Putchar(a);
}

2. Amati penggunaan bentuk penulisan untuk fungsi putchar

Pratikum 4 : Penggunaan scanf()


1. Tulis source code berikut ini :
# include <stdio.h>
Void main()
{
Char a[25];
Int b;
Printf(a = ); scanf (%s, &a);
Printf(b = ); scanf (%d, &b);
Printf(Data yang anda masukan \n);
Printf(a = %s \n,a);
Printf(b = %s \n,b);
}

2. Compile dan jalankan


3. Amati penggunaan untuk penulisan untuk fungsi scanf

Pratikum 5 : Penggunaan operator penggunaan


1. Tulis source code berikut ini :

# include <stdio.h>
Void main()
{
Float p,q,r,s,t;
P=1; q=1;r=1;s=1;t=1;
P+=q=r/s+t;
Printf(Hasil perhitungan p adalah %.0f \n, p);
}

2. Compile dan jalankan


3. Amati penggunaan operator penunjukan

Pratikum 5 : Penggunaan operator penggunaan


1. Tulis source code berikut ini :
/* intruksi increment post-fixed */
# include <stdio.h>
Void main()
{
Int a,b=10;
a=10 + b++;
printf(a= %d, b= %d\n, a,b);
}

2. Compile dan jalankan


3. Amati penggunaan intruksi increment post-fixed
4. Tulis source code berikut ini :
/* intruksi increment pre-fixed */
# include <stdio.h>
Void main()
{
Int a,b=10;
a=10 + ++b;
printf(a= %d, b= %d\n, a,b);
}

5. Compile dan jalankan


6. Amati penggunaan intruksi increment pre-fixed

Tugas Modul 2
1. Ubah source kode praktikum diatas menggunakan preprocessor directive
iostream.h !
2. Apa perbedaan intruksi increment post-fixed dengan intruksi increment pre-fixed
? jelaskan !
3. Buat kesimpulan dari hasil praktikum dan tugas praktikum.
Jawab !

TUGAS PRAKTIKUM ALGORITMA


KELAS A, TEKNIK INFORMATIKA 2014/2015 SEMESTER I
RIKI RUSNANDAR / 2014081095

MODUL 3
STRUKTUR PEMILIHAN (CONDITION)
Dasar Teori
Struktur pemilihan (pengkondisian) mempunyai beberapa instruksi antara lain
sebagai berikut :
1. Intruksi IF-THEN
a. IF sederhana
b. IF-THEN-ELSE
c. IF bertingkat (bersarang)
2. Instruksi SWITCH-CASE

Instruksi IF-THEN
1. IF Sederhana
Pemilihan suatu pernyataan dieksekusi hanya jika suatu kondisi terpenuhi atau
tidak terpenuhi. Pernyataan IF-THEN (jika-maka) digunakan untuk menguji
sebuah kondisi. Bila kondisi yang diuji terpenuhi, maka program akan
menjalankan pernyataan-pernyataan tertentu. Bentuk umum IF-THEN adalah :
If (kondisi)
{
<pernyataan>
}
Keterangan :

Pernyataan sesudah kata THEN (dapat berupa satu atau lebih pernyataan)
hanya akan dilaksanakan bila <kondisi> bernilai benar (true). Bila <kondisi>
bernilai salah (false),tidak ada aksi yang dilaksanakan.

2. IF-THEN-ELSE
Pernyataan struktur IF-THEN-ELSE (jika-maka-kalau tidak) untuk menguji dua
kondisi yaituyang terpenuhi atau tidak terpenuhi. Bentuk umum struktur IFTHEN-ELSE adalah sebagai berikut :
If (kondisi)
{
<pernyataan_true>
}
Else
{
<pernyataan_false>
}
Keterangan :
Pernyataan_true akan dilaksanakan jika <kondisi> bernilai benar, tetapi jika
kondisi bernilai salah, maka else yang dinyatakan ingkaran (negation) dari
kondisi akan melaksanakan pernyataan_false.

3. IF bertingkat
Pernyataan IF-THEN-ELSE bertingkat digunakan untuk menguji sebuah kondisi
lebih dari dua kondisi yaitu satu kondisi terpenuhi dan lebih dari satu kondisi
yang tidak terpenuhi. Bentuk umum pernyataan IF-THEN-ELSE bertingkat
adalah sebagai berikut :
If (kondisi_1)
<pernyataan_1>
Else
If (kondisi_2)
<pernyataan_2>

Else
If (kondisi_3)
<pernyataan_3)
Else
If (kondisi_n)
<pernyataan_n>
Keterangan :
Pernyataan IF-THEN-ELSE bertingkat (bersarang) atau IF di dalam IF
digunakan untuk menguji sebuah kondisi lebih dari dua kondisi dalam bentuk
bertingkat atau bersarang.

Instruksi SWITCH-CASE
Pemilihan proses menggunakan instruksi IF selalu didasarkan pada dua pilihan yg
bisa terjadi. Dengan demikian untuk mengetes lebih dari dua pilihan harus digunakan
sejumlah intruksi IF jika terlihat pada bentuk umum instruksi IF untuk pilihan jamak.
Pemilihan proses untuk sejumlah pilihan kondisi bisa dilaksanakan dengan instruksi
SWITCH-CASE.

Statement

SWITCH-CASE

merupakan

statement

yang

dimanfaatkan untuk menentukan pilihan dari sejumlah pilihan yang terlibat. Bentuk
umum algoritma untuk instruksi SWITCH-CASE :
Switch <pilihan>
Case <pilihan_1> : <aksi_1>
Case <pilihan_2> : <aksi_2>
. . .
Case <pilihan_n> : <aksi_n>
{ otherwise aksi }
Endcase

Keterangan :
Pilihan_1, pilihan_2, dst mempunyai nilai kebenaran. Setiap pilihan diperiksa
nilai kebenarannya,mulai dari pilihan pertama sampai ditemukannya pilihan
yang bernilai benar.
Aksi yang dipasangkan dengan aksi ke-i dapat berupa satu baris intstruksi
atau blok instruksi. Apabila tidak ada satupun pilihan yang bernilai benar,
maka aksi sesudah otherwise dikerjakan. Dalam bahasa C/C++, otherwise
diganti dengan kata kunci default.

Pengguanaan SWITCH-CASE dalam bahasa C/C++ sebagai berikut :


Switch (kondisi)
{
Case konstanta_1 : {statement-statement; break;}
Case konstanta_2 : {statement-statement; break;}
. . . . . . . . . .
Default : {statement-statement; break;}
}

Praktikum
Praktikum 1 : penggunaan struktur IF-THEN
Menuliskan algoritma dan mengimplementasikan kedalam bahasa C/C++ dari
permasalahan untuk mengetahui apakah sebuah bilangan bulat yang dimasukan
merupakan bilangan genap atau bukan?

Algoritma:
Algoritma bilangan_genap
, mencetak pesan bilangan Genap,jika sebuah bil. Bulat yang dibaca dari
keybaoard merupakan bilangan genap}
Kamus (deklarasi)
Bil : integer
Algoritma (deskripsi)
Input ( Bil )
If ( bil mod 2 = 0 ) then
Output ( Bilangan Genap)
endif

Bahasa C/C++ :
/* program bilangan_genap */
/* mencetak pesan Bilangan Genap jika sebuah bilangan bulat yang dibaca
dari piranti masukan merupakan bilangan Genap */
#include <stdio.h>
Void ain ( )
{
Int Bil;
Printf (masukan bilangan bulat : );
Scanf (%d, &Bil);
If (Bil & 2 == 0);
Printf (Bilangan bulat);
}
1. perhatikan pengimplementasian ke bahasa C++ dari algoritma tersebut.
2. Analisa bentuk penulisan untuk struktur IF-THEN tersebut.
Sebagai hasilnya :

Praktikum 2 : penggunaan struktur IF-THEN-ELSE


Dibaca dua buah bilangan bulat dari piranti masukan. Tentukan dari kedua bilangan
itu yang terbesar, misalkan misalkan kedua bilangan adalah A dan B.
Analisis :
Kasus A > B Bilangan terbesar adalah A
Kasus B A Bilangan terbesar adalah B
Algoritma :
Algoritma Cari_Max
{ Menentukan bilangan terbesar dari dua buah bilangan bulat }
Kamus (Deklarasi)
A, B : integer
Bahasa C/C++ :
/* PROGRAM CARI_MAX*/
/* Menentukan bilangan terbesar dari dua buah bilangan bulat */
#include <stdio.h>
Void main()
{
int A, B;
printf(A = ); scanf(%d, &A);
printf(B = ); scanf(%d, &B);
if (A > B)
printf(Bilangan terbesar adalah %d, A);

else
printf(Bilangan terbesar adalah %d, B);
}
Sebagai hasilnya :

Praktikum 3 : penggunaan struktur IF-THEN-ELSE Bertingkat


Pengelompokan nilai bertingkat dengan ketentuan :
jika nilai angka>=90,maka nilai huruf = A, jika nilai angka>=70, maka nilai huruf =
B, jika nilai angka>=50, maka nilai huruf = C, jika angka <50, maka nilai huruf = E.

Algoritma :
Algoritma Nilai
{ Menentukan nilai yang sesuai dengan kriteria }
Kamus (Deklarasi)
grade : integer
Algoritma (Deskripsi)
input (grade)
If (grade >= 90) then
output (nilai = A)
else
if (grade >= 70) then
output (Nilai = B)
else

if (grade >= 50) then


output (Nilai = C)
else
if (grade < 50) then
output (Nilai = E)
endif
endif
endif
endif

Bahasa C/C++ :
/* PROGRAM NILAI */
/* Menentukan nilai yang sesuai dengan kriteria */
#include<stdio.h>
Void main( )
{
int grade;
printf("Masukan nilai [10 - 100] : ");
scanf("%d", &grade);
if (grade>= 90)
printf("Nilai = A");
else
if (grade >= 70)
printf("Nilai = B");
else
if (grade >= 50)
printf("Nilai = C");
else
if (grade < 50)
printf("Nilai = E");
}

Sebagai hasilnya :

Praktikum 4 :
Dibaca nomor bulan (integer). Tuliskan nama bulan seuai dengan nomor bulannya.
Misalnya jika bulan 8, maka akan tercetak agustus. Masalah ini memiliki 12 buah
kasus karena nama bulan berbeda-beda tergantung pada nomor bulan yang diberikan
(ada 12 bulan dalam kalender masehi).

Algoritma :
Algoritma Nama_Bulan
{ mencetak nama-nama sesuai dengan nomor bulan }
Kamus (deklarasi)
No Bulan : integer
Algoritma (deskripsi)
Input (no Bulan)
Switch
Case 1 : output (januari)
Case 2 : output (februari)
Case 3 : output (maret)
Case 4 : output (april)
Case 5 : output (mei)
Case 6 : output (juni)
Case 7 : output (juli)
Case 8 : output (agustus)
Case 9 : output (September)
Case 10 : output (Oktober)

Case 11 : output (Nopember)


Case 12 : output (Desember)
Otherwise : output (Bukan bulan yang benar)
Endswitch

Bahasa C/C++ :
/* program Nama_Bulan */
/* Mencetak Nama bulan sesuai dengan nomor bulan */
#include <stdio.h>
void main ( )
{
int NoBulan;
printf("Bulan : ");
scanf("%d", &NoBulan);
switch (NoBulan)
{
case 1 : printf (januari \n); break;
case 2 : printf (februari \n); break;
case 3 : printf (maret\n); break;
case 4 : printf (april\n); break;
case 5 : printf (mei\n); break;
case 6 : printf (juni\n); break;
case 7 : printf (juli\n); break;
case 8 : printf (agustus\n); break;
case 9 : printf (september\n); break;
case 10 : printf (oktober\n); break;
case 11 : printf (nopember\n); break;
case 12 : printf (desember\n); break;
default : printf (bukan bulan yang benar);
}
}

Sebagai hasilnya :

Praktikum 5 :

Tulis kembali praktek diatas (no 4) dengan kata kunci break dihilangkan,
lakukan proses kompilasi dan jalankan programnya!.
Bahasa C sebagai berikut:
/* program Nama_Bulan */
/* Mencetak Nama bulan sesuai dengan nomor bulan */
#include <stdio.h>
void main ( )
{
int NoBulan;
printf("Bulan : ");
scanf("%d", &NoBulan);
switch (NoBulan)
{
case 1 : printf ("januari \n");
case 2 : printf ("februari \n");
case 3 : printf ("maret\n");
case 4 : printf ("april\n");
case 5 : printf ("mei\n");
case 6 : printf ("juni\n");
case 7 : printf ("juli\n");
case 8 : printf ("agustus\n");
case 9 : printf ("september\n");
case 10 : printf ("oktober\n");
case 11 : printf ("nopember\n");
case 12 : printf ("desember\n");
default : printf ("Bukan bulan yang benar");

}
}

Sebagai hasilnya :

Tugas Modul 3
1. buatlah algoritma dan implementasikan menjadi program untuk membuat
program konversi dari nilai huruf menjadi nilai angka, dengan ketentuan
masukan nilai huruf (menggunakan instruksi IF dan SWITCH)
contoh :
-

Nilai huruf : A nilai angka : 4

Nilai huruf : B nilai angka : 3

Nilai huruf : C nilai angka : 2

Nilai huruf : D nilai angka : 1

Nilai huruf : E nilai angka : 0

2. Buatlah program untuk suatu menseleksi bilangan dengan ketentuan sebagai


berikut : (menggunakan instruksi IF dan SWITCH)
0<= nilai <30 : nilai Rendah
30<= nilai <60 : nilai Sedang

60<= nilai <= 100 : nilai Tinggi


3. Buatlah kesimpulan praktikum dan tugas praktikum.

Jawab !
1. Ketik algoritmanya berikut :
Mengatur_nilai
{ menyatakan nilai huruf menjadi nilai angka, dengan cara ketik huruf yang ditentukan
pada keyboar }
Kamus
grade : integer
Algoritma
input (grade)
if (grade == A) then
output (Nilai angka = 4)
else
if (grade == B) then
output (Nilai angka = 3)
else
if (grade == C) then
output (Nilai angka = 2)
else
if (grade == D) then
output (Nilai angka = 1)
else
if (grade == E) then
output(Nilai angka = 0)
endif
endif
endif
endif
endif

Ketik source code pada c++ :


#include <stdio.h>
void main()
{
int nilai;
printf("Masukan nilai huruf [A - E] : "); scanf("%s", &nilai);
if (nilai =='A')

printf("Nilai angka : 4\n");


else
if(nilai =='B')
printf("Nilai angka : 3\n");
else
if(nilai =='C')
printf("Nilai angka : 2\n");
else
if(nilai == 'D')
printf("Nilai angka : 1 \n");
else
if(nilai == 'E')
printf("Nilai angka : 0\n");
}

Pastikan compile statusnya success.

Sebagai hasilnya :

2. Ketik source kode sebagai berikut :


#include<stdio.h>
void main()
{

int nilai;
printf("Masukan nilai 0 - 100 : ");
scanf("%d", &nilai);
if(nilai<=30)
printf("Nilai Rendah");
else
if(nilai<=60)
printf("Nilai Sedang");
else
if(nilai<=100)
printf("Nilai Tinggi");
}

Pastikan compile statusnya success.

Sebagai hasilnya :

3. Kesimpulan
Pernyataan IF-THEN
Digunakan untuk menguji sebuah kondisi. Bila kondisi yang diuji
terpenuhi, maka program akan menjalankan pernyataan-pernyataan
tertentu.
IF-THEN-ELSE
Digunakan untuk menguji dua kondisi yaituyang terpenuhi atau tidak
terpenuhi.
IF-THEN-ELSE bertingkat
Digunakan untuk menguji sebuah kondisi lebih dari dua kondisi yaitu satu
kondisi terpenuhi dan lebih dari satu kondisi yang tidak terpenuhi.

TUGAS PRAKTIKUM ALGORITMA


KELAS A, TEKNIK INFORMATIKA 2014/2015 SEMESTER I
RIKI RUSNANDAR / 2014081095

MODUL 4
STRUKTUR PERULANGAN (LOOPING)
Dasar Teori
1. Instruksi FOR
Inruksi ini digunakan apabila mengetahui secara pasti banyaknya perulangan
yang dilakukan.
Pernyataan FOR mempunyai 3 parameter :
1) Nilai awal (initial value)
2) Test kondisi yang menentukan akhir LOOP
3) Penentu perubahan nilai
Bentuk umum pseudocode FOR
For indeks nilai_awal to nilai_akhir do
<instruksi / blok instruksi>
endfor
Cara kerjanya :
1) Indeks di-assign dengan nilai awal
2) Indeks dibandingkan dengan nilai akhir
3) Jika indeks <= nilai akhir maka
a. Instruksi / blok instruksi dikerjakan
b. Secara otomatis nilai indeks ditambah 1
c. Indeks dibandingkan dengan nilai akhir
4) Jika indeks > nilai akhir, maka dikerjakan perintah pertama sesudah
endfor

Dalam bahasa C/C++ untuk FOR adalah :


For (initial value; condition_expr; incremental_expr)

2. Instruksi WHILE
Instruksi ini dapat digunakan apabila belum mengetahui secara pasti berapa kali
banyaknya perulangan yang akan dilakukan. Selama kondisi terpenuhi, maka
perulangan terus dilakukan, sebaliknya bila kondisi tidak terpenuhi, maka
perulangan dihentikan.
Bentuk umum pseudocode WHILE
While <kondisi> do
<instruksi / blok instruksi>
endwhile
Cara kerjanya :
1) Sebelum masuk ke while loop yang merupakan ekspresi Boolean harus
sudah mempunyai nilai.
2) Jika kondisi true, maka seluruh badan loop dikerjakan
3) Cek kembali apakah kondisi bernilai true atau false.
4) Looping berhenti setelah bernilai false, sehingga harus ada statement yang
mengakibatkan kondisi bernilai false.
Dalam bahasa C/C++ bentuk WHILE adalah :
While (condition_expr)

3. Instruksi DO-WHILE
Instruksi DO-WHILE pada dasarnya sama dengan instruksi WHILE.
Perbedaan yang penting antara keduanya hanya terletak pada penempatan
ekspresi kondisi (condition_expr). Untuk DO-WHILE, kondisi diletakan

pada bagian bawah.jadi statement-statement yang berada dalam loop akan


dikerjakan dahulu baru dilakukan tes terhadap kondisi.
Bentuk umum pseudocode WHILE
Do
<instruksi / blok_instruksi>
While <kondisi>

Praktikum
Praktikum 1 : penggunaan instruksi IF
Menuliskan angka 1 s/d 10 dengan masing-masing output diberi keterangan
yang berbeda pada saat 3 dan 8. Output yang dihasilkan, misalnya :
Angka = 1
Angka = 2
Angka = 3

ini angka favoritku

Angka = 4
Angka = 5
Angka = 6
Angka = 7
Angka = 8

ini angka favorit temanku

Angka = 9
Angka = 10

Algoritma :
Algoritma Tulis_angka
{mencetak angka 1 s/d 10}
Kamus (deklarasi)
Angka : integer

Algoritma (Deskripsi)
For angka 1 to
If angka = 3 then
Komentar (ini angka favoritku)
Output (angka, komentar)
Else
If angka = 8 then
Komentar (ini angka favorit temanku)
Output (angka, komentar)
Else
Output (angka)
Endif
Endfor

Bahasa C/C++
/* PROGRAM TULIS_ANGKA */
/* Mencetak angka 1 s/d */
#include <stdio.h>
void main()
{
int angka;
for(angka = 1; angka <= 10; angka++)
{
if (angka == 3)
printf("Angka %d ini angka favoritku \n", angka);
else
if (angka == 8)
printf("Angka %d ini angka favorit temanku \n", angka);
else
printf("Angka %d \n", angka);
}
}

sebagai hasilnya :

Praktikum 2 : penggunaan instruksi WHILE


Menuliskan angka 1 s/d 10 dengan masing-masing output diberi keterangan yang
berbeda saat 3 dan 8. Output yang dihasilkan, misalnya :

Angka = 1
Angka = 2
Angka = 3

ini angka favoritku

Angka = 4
Angka = 5
Angka = 6
Angka = 7
Angka = 8
Angka = 9
Angka = 10

ini angka favorit temanku

Algoritma Tulis_angka
{mencetak angka 1 s/d 10}
Kamus (deklarasi)
Angka : integer
Algoritma (Deskripsi)
angka 1
while (angka <= 10)
if angka = 3 then
Komentar (ini angka favoritku)
Output (angka, komentar)
Else
If angka = 8 then
Komentar (ini angka favorit temanku)
Output (angka, komentar)
Else
Output (angka)
Endif
Endwhile

Bahasa C/C++
/* PROGRAM TULIS_ANGKA */
/* Mencetak angka 1 s/d */
#include <stdio.h>
void main()
{
int angka;
angka = 1;
while (angka <= 10)
{
if (angka == 3)
printf("Angka %d ini angka favoritku \n", angka);
else
if (angka == 8)
printf("Angka %d ini angka favorit temanku \n", angka);
else
printf("Angka %d \n", angka);
}
}

Tugas Modul 4
1. Buatlah program untuk menjumlahkan n buah data, dengan n merupakan
masukan dari piranti masukan kemudian hitunglah rata-ratanya menggunakan
instruksi IF dan WHILE
2. Buatlah program untuk menjumlahkan b buah data, tetapi yang dijumlahkan
hanya data ganjil menggunakan instruksi DO-WHILE
3. Buat kesimpulan dari hasil praktikum dan tugas praktikum.

TUGAS PRAKTIKUM ALGORITMA


KELAS A, TEKNIK INFORMATIKA 2014/2015 SEMESTER I
RIKI RUSNANDAR / 2014081095

MODUL 5
TIPE DATA TURUNAN (LARIK/ARRAY)
Dasar Teori

Larik merupakan sekumpulan data yang mempunyai nama dan tipe yang
sama. Larik sering disebut juga variabel berindeks. Nilai suatu data dalam
larik ditentukan oleh data indeks. Larik banyak digunakan pada operasi yang
melibatkan indeks seperti pada statistik dan matriks. Tipe data larik dapat
berupa satu dimensi, dua dimensi, tiga dimensi atau banyak dimensi.
Bentuk umum larik satu dimensi :
Tipe_larik nama_larik [ukuran]

Bentuk umum larik dua dimensi :


Tipe_larik nama_larik [ukuran1] [ukuran2]

Perhatikan :

Tanda kurung [] digunakan untuk menunjukan elemen larik

Perhitungan elemen larik dimulai 0, bukan 1

C++ tidak mengecek larik. Bila anda menyatakan int x[10], ini artinya 10 elemen
yang di mulai dari 0. Karena itu elemen terakhir larik adalah x[9]. Bila anda salah
mereferensikannya dengan x[10], anda akan mendapatkan harga yang tidak terpakai.
Akan lebih buruk lagi jika anda memberikan harga ke x[10], yang tidak dapat
diterima.

Representasi Larik
Misalkan kita memiliki sekumpulan data ujin seorang siswa, ujian pertama bernilai
90, kemudian 95,78,85. Sekarang kita ingin menyusunnya sebagai suatu kumpulan
data ujian seorang siswa. Dalam array kita menyusunnya sebagai berikut :
Ujian[0] = 90;
Ujian[1] = 95;
Ujian[2] = 78;
Ujian[3] = 85;

Empat nilai diatas memberikan nilai kepada array ujian. Tapi sebelum kita
memberikan nilai kepada array, kita harus mendeklarasikannya terlebih dahulu,
yaitu : int ujian[4];

Perhatikan bahwa nilai 4 yang berada didalam tanda kurung menunjukan jumlah
elemen larik, bukan menunjukan elemen larik yang ke-4. Jadi lemen larik ujian
dimulai dari angka 0 sampai 3. Pemogram juga dapat menginisialisasi larik
sekaligus mendeklarasikannya, contoh :
Int ujian[4] = {90,95,78,85};
Elemen terakhir dari larik diisi dengan karakter \0. Karakter ini memberitahu
kompiler bahwa akhir dari elemen larik telah dicapai.

Sekarang kita akan membuat daftar beberapa nama pahlawan di indonesia


Char pahlawan[3][15];
Char pahlawan[0][15] = soekarno;
Char pahlawan[1][15] = diponegoro
Char pahlawan[2][15] = soedirman

Larik diatas terlihat berbeda dengan contoh larik pertama, perhatikan bahwa pada
larik pahlawan memilih dua buah tanda kurung [ ][ ]. Larik seperti itu disebut larik
dua dimensi. Tanda kurung pertama menyatakan total elemen yang dapat dimiliki
oleh larik pahlawan dan tanda kurung kedua menyatakan elemen yang dapat
dimiliki setiap elemen larik pahlawan.

Menghitung jumlah elemen larik


Karena fungsi sizeof( ) mengembalikan jumlah byte yang sesuai dengan
argumennya, maka operator tersebut dapat digunakan untuk menemukan jumlah
elemen array, misalnya :
Int array[ ] = {26,7,82,166};
Cout<<sizeof(array)/sizeof(int);
Akan mengembalikan nilai 4, yaitu sama dengan jumlah elemen yang dimiliki
larik.

Menghitung jumlah elemen larik


Praktikum 1 : pengisian langsung pada saat deklarasi
#include <stdio.h>
void main ( )
{
int billy [ ] = {16,2,7,40,12071};
int n,
result=0;
for (n=0;n<5;n++)
{
result+=billy[n];
}
printf("%d", result);
}

Baris instruksi int billy [ ] = {16,2,7,40,12071}; merupakan pengisian langsung


data array pada saat deklarasi. Amati dan analisa pengisian langsung data array
pada saat deklarasi tersebut.
Sebagai hasilnya :

Praktikum 2 : pengaksesan dan pengisian langsung


#include <stdio.h>
void main ()
{
int A [5]={20,9,1986,200,13},n;
printf("Data yang lama :\n");
for (n=0;n<5;n++)
{
printf("%i ",A[n]);
}
printf("\n\nData yang baru : \n");
A[0]=4;
A[1]=2;
A[2]=1;
A[3]=3;
A[4]=5;
for (n=0;n<5;n++)
{
printf("%i ",A[n]);
}
}

Sebagai hasilnya :

Praktikum 3 : penghapusan data pada array


#include <stdio.h>
void main ()
{
int A [5]={20,9,1986,200,13},n,hapus;
printf("Data yang lama\n");
for (n=0;n<5;n++)
{
printf("%i ",A[n]);
}
printf("\n\ndata yang ingin dihapus : ");
scanf("%i",&hapus);
printf("\nData yang baru : \n");
for (n=hapus-1;n<5-1;n++)
{
A[n]=A[n+1];
}
for (n=0;n<4;n++)
{
printf("%i ",A[n]);
}
}

Sebagai hasilnya :

Tugas Modul 5
1. Buatlah program yang menghitung jumlah elemen dalam suatu array (larik)
dengan array (larik) 1 dimensi {1,3,5,4,7,2,99,16,45,67,89,45}.
2. Buatlah program untuk menampilkan data mahasiswa yang terdiri dari nim dan
nama (minimal datanya 5 data).
3. Buat kesimpulan dari hasil praktikum dan tugas praktikum.
Jawab !
1. Ketiklah source code seperti di bawah ini :
#include <stdio.h>
void main ()
{
int nilai [] = {1,3,5,4,7,2,99,16,45,67,89,45};
int n, result=0;
for ( n=0 ; n<12 ; n++ )
{
result += nilai[n];
}
printf("nilainya = %d",result);

Pastikan caompile statusnya success.

Sebagai hasilnya :

2. Ketiklah source code seperti di bawah ini :


#include <stdio.h>
void main()
{
int A[] = {1,2,3,4,5},n,data,nim;
char nama;
printf("Masukan 5 Data \n\n ");
for (n=1;n<=5;n++)
{
printf("Data ke %d\n",n);
printf("Nim
: ");

scanf("%s", &nim);
printf("Nama : ");
scanf("%s", &nama);
}
}

Sebagai hasilnya :

3. Kesimpulan
Bahwa larik merupakan sekumpulan data yang mempunyai nama dan tipe yang
sama. Larik sering disebut juga variabel berindeks. Nilai suatu data dalam larik
ditentukan oleh data indeks. Larik banyak digunakan pada operasi yang
melibatkan indeks seperti pada statistik dan matriks. Tipe data larik dapat berupa
satu dimensi, dua dimensi, tiga dimensi atau banyak dimensi.

TUGAS PRAKTIKUM ALGORITMA


KELAS A, TEKNIK INFORMATIKA 2014/2015 SEMESTER I
RIKI RUSNANDAR / 2014081095

MODUL 6
FUNGSI (FUNCTION)
Dasar Teori
Fungsi atau function adalah suatu kumpulan intruksi/perintah/program yang
dikelompokan menjadi satu, letaknya terpisah dari program yang menggunakan
fungsi tersebut. Memiliki nama tertentu yang unik, dan digunakan untuk mengerjakan
suatu tujuan tertentu.
Adapun tujuan dari pembuatan fungsi ini adalah :
1. Program menjadi tekstruktur
2. Dapat mengurang duplikasi kode
3. Fungsi dapat dipanggil dari program atau fungsi yang lain.
Keuntungan dari fungsi adalah :
1. Dapat melakukan pendekatan top-down dan divide-and-conquer.
a. Top down : penelusuran program mudah
b. Divide-and-conquer : program besar dapat dipisah menjadi program-program
kecil.
2. Kode program menjadi lebih pendek, mudah dibaca, dan mudah dipahami.
3. Program dapat dikerjakan oleh beberapa orang sehingga program cepat selesai
dengan koordinasi yang mudah.
4. Mudah dalam mencari kesalahan-kesalahan karena alur logika jelas dan
sederhana.
5. Kesalahan dapat dialokasi dalam suatu modul tertentu saja.

6. Modifikasi program dapat dilakukan pada suatu modul tertentu saja tanpa
menunggu program keseluruhan.
7. Fungsi-fungsi menjadikan program mempunyai struktur yang jelas.
8. Dengan memisahkan langkah-langkah detail ke satu atau lebih fungsi-fungsi,
maka fungsi utama (main) akan menjadi lebih pendek, jelas dan mudah
dimengerti.
9. Langkah-langkah tersebut dapat dituliskan sekali saja secara terpisah dalam
bentuk fungsi. Selanjutnya bagian program yang membutuhkan langkah-langkah
ini tidak perlu selalu menuliskannya, karena tidak cukup memanggil fungsi
tersebut.
10. Mempermudah dokumentasi.
11. Reusability : suatu fungsi dapat digunakan kembali oleh program atau fungsi lain.
Dalam perancangan fungsi, perlu diperhatikan:
1. Data yang diperlukan sebagai inputan
2. Informasi apa yang harus diberikan oleh fungsi yang dibuat ke pemanggilnya
3. Algoritma apa yang harus digunakan untuk mengolah data menjadi informasi.
Stuktur fungsi
1. Deklarasi fungsi (function prototype/declaration), terdiri dari
a. Judul fungsi
b. Tipe data yang akan dikembalikan/void
c. Tidak ada kode implementasi function tersebut.
Bentuk umum :
tipe_data | void nama_fungsi (*arguman 1, arguman 2, +);
2. Tubuh function/definisi function (function definition), terdiri dari :

a. Function prototype yang disertai denagn kode implementasi dari function


tersebut.
b. Yang berisikan statemen/intruksi yang akan melakukan tugas sesuai dengan
tujuan dibuatnya fungsi tersebut.
Bentuk umum :
//prototype fungsi
Tipe_data/void nama_fungsi (arguman 1, arguman 2, )
{
//bagian ini merupakan tubuh fungsi
[variable_lokal ;]

[statement_1];
[statement_2];

[statement_3];
[return(variabel1];
}

Praktikum
Praktikum 1 : Deklarasi dan Definisi fungsi
1. Tulislah source code berikut :
#include <stdio.h>
int FindMax (int n1, int n2);
void PrintMax(int m);
main()
{
int i=5; int j=7; int k;
k=FindMax(i,j);
PrintMax(k);
return 0;

// deklarasi fungsi

}
int FindMax(int n1, int n2)
//definisi fungsi
{
if (n1>n2)
{
return n1;
}
else
{
return n2;
}
}
void PrintMax(int m)
{
printf("Bilangan yang terbesar adalah : %d\n",m);
}

Sebagai hasilnya :

Praktikum 2 : pemanggilan fungsi


1. Tulislah source code berikut :
#include <stdio.h>
void tukar (int x, int y);
void main()
{
int a,b;

a=99;
b=11;
printf("Nilai sebelum pemanggilan fungsi : \n");
printf("Nilai a = %d nilai b = %d\n\n",a,b);
tukar (a,b);
printf("Nilai sesudah pemanggilan fungsi : \n");
printf("Nilai a = %d nilai b = %d\n\n",a,b);
}
void tukar (int px, int py)
{
int z;
z=px;
px=py;
py=z;
printf("Nilai diakhir fungsi :\n");
printf("Niali px = %d nilai py = %d\n\n",px,py);
}

Sebagai hasilnya :

Tugas
Buatlah program untuk menentukan bilangan yang terbesar dan terkecil dari dua buah
bilangan yang diinputkan ! dengan output seperti berikut :
Masukan bil pertama

:6

Masukan bil kedua

:3

Bilangan yang lebih besar adalah : 6


Bilangan yang lebih kecil adalah : 3

Jawab !

Ketik source code berikut :

#include <stdio.h>
int terbesar (int n1, int n2) //Deklarasi Fungsi 1
{
if(n1>n2)
return n1;
else
return n2;
}
int terkecil (int n1, int n2) //Deklarasi Fungsi 2
{
if(n1<n2)
return n1;
else
return n2;
}
int main() //Pemanggilan Fungsi
{
int a,b,c,d;
printf("Masukan bilangan pertama : ");scanf("%d",&a);
printf("Masukan bilangan kedua : ");scanf("%d",&b);
printf("\n");
c=terbesar (a,b);

d=terkecil (a,b);
printf("Bilangan yang lebih besar adalah : %d\n",c);
printf("Bilangan yang lebih kecil adalah : %d",d);
return 0;
}

Pastikan compile statusnya success.

sebagai hasilnya :

TUGAS PRAKTIKUM ALGORITMA


KELAS A, TEKNIK INFORMATIKA 2014/2015 SEMESTER I
RIKI RUSNANDAR / 2014081095

MODUL 7
STRUKYUR (STRUCT)
Dasar Teori
Struktur (struct) adalah suatu kumpulan variabel yang berisi kumpulan data dengan
setiap elemen datanya mempunyai elemen berbeda. Bentuk struktur data mempunyai
satu nama, namun memiliki tipe data yang berbeda ataupun sama. Variabel-variabel
tersebut memiliki kaitan satu sama yang lain.

Struktur adalah sekumpulan variabel yang masing-masing tipe datanya bisa berbeda,
namun dikelompokan kedalam satu nama. Dalam C++ struktur sering diistilah kan
sebagai struct.
Deklarasi
Ada dua cara mendeklarasikan struktur, yaitu :
Deklarasi 1 :
Struct nama_struct
{
Tipe_data nama_var;
Tipe_data nama_var;
......
};

Deklarasi 2 :
Struct nama_struct
{
Tipe_data nama_var;
Tipe_data nama_var;
......
} nama struktur ;

Contoh :
Struct mahasiswa
{
Char NIM [8]
Char Nama [50]
Float ipk;
}

Struct mahasiswa
{
Char NIM [8]
Char Nama [50]
Float ipk;
} mhs;

Cara Pengaksesan
Untuk mengakses sebuah elemen dalam sebuah struct digunakan operator titik (.)

Sintaks :
Nama_Struktur . Nama_var;
Nested Struct
Sebuah kondisi dimana di dalam sebuah struct terdapat tipe data berupa struct lagi
Bentuk :
Struct nama_struktur2
{
Tipe_data nama_var;
Tipe_data nama_var;
Struct nama_struktur1
Nama_var;
......
}
Array of struct
Apabila hendak menggunakan 1 struct untuk beberapa kali, ada dua cara :
1. Deklarasi Manual
2. Array of struct

Praktikum
Praktikum 1
Tulis source code berikut :
#include <stdio.h>
struct lingkaran
{
int jari_jari;
float keliling;
float luas;
};
void main()
{

//definisi struct dibuat global

struct lingkaran L;
//deklarasi variable struct
printf("\nMasukan jari-jari lingkaran = ");
scanf("%i", &L.jari_jari);
//input
L.keliling = 2 * 3.14 * L.jari_jari;
//proses
L.luas = 3.14 * L.jari_jari * L.jari_jari;
//proses
printf("\nKelilingnya = %f", L.keliling); //output
printf("\nLuasnya = %f", L.luas);
//output
}

Sebagai hasilnya :

Praktikum 2
Tulis source code berikut :
#include <iostream.h>
#include <string.h>
struct mahasiswa
{
char Nama [40];
char NIM [11];
char Alamat [50];
float IPK;
};
void main()
{
mahasiswa mhs;
cout <<"Nama : ";
cin.getline(mhs.Nama, 40);

cout <<"NIM
: ";
cin.getline(mhs.NIM, 11);
cout <<"Alamat : ";
cin.getline(mhs.Alamat, 50);
cout <<"IPK
: ";
cin >> mhs.IPK;
cout << endl;
cout <<"Nama Anda
: " << mhs.Nama << endl;
cout <<"NIM Anda
: " << mhs.NIM << endl;
cout <<"Alamat Anda : " << mhs.Alamat << endl;
cout <<"IPK Anda
: " << mhs.IPK << endl;
}

Sebagai hasilnya :

Tugas Modul 7
1. Buat program untuk mencatat data siswa yang terdiri dari field : Nama, Alamat,
Tempat tanggal lahir, Jenis kelamin.
2. Buatlah struct untuk data buku yang berisi tentang : kode buku, nama buku, tahun
terbit, pengarang dan harga. Gunakan array of struct.

Jawab !
1. Ketik source code berikut :
# include <iostream.h>
# include <string.h>
struct Biodata
{
char Nama[30];
char Alamat[20];
char TTL[50];
char Jenis_kelamin;
};
int main()
{
Biodata Mhs;
cout << "Nama\t\t : ";
cin.getline(Mhs.Nama, 30);
cout << "Alamat\t\t : ";
cin.getline (Mhs.Alamat, 20);
cout << "TTL\t\t : ";
cin.getline(Mhs.TTL, 50);
cout << "Jenis_kelamin\t : ";
cin >> Mhs.Jenis_kelamin;
cout << endl;
cout << "Nama Anda\t\t : " << Mhs.Nama << endl;
cout << "Alamat Anda\t\t : " << Mhs.Alamat << endl;
cout << "TTL Anda\t\t : " << Mhs.TTL << endl;
cout << "Jenis kelamin Anda\t : " << Mhs.Jenis_kelamin << endl;
return 0;
}

Pastikan compile statusnya success.

Sebagai hasilnya :

2. Ketik source code berikut :


#include<iostream.h>
void main()
{
int a;
struct
{
char kode_buku[30];
char nama_buku[50];
char tahun_terbit[10];
char pengarang[35];
float harga;
}buku[5];

clrscr();
printf("\t DATA BUKU\n");
cout<<"__________________________"<<endl<<endl;
for(a=1;a<3;a++)
{
cout<<"masukan kode buku\t :";cin>>buku[a].kode_buku;
cout<<"masukan nama buku\t :";cin>>buku[a].nama_buku;
cout<<"masukan tahun terbit\t :";cin>>buku[a].tahun_terbit;
cout<<"masukan pengarang\t :";cin>>buku[a].pengarang;
cout<<"masukan harga\t\t :";cin>>buku[a].harga;
cout<<endl;
}
cout<<"\tDATA BUKU"<<endl;
for(a=1;a<3;a++){
cout<<"data ke\t :"<<a<<endl;
cout<<"kode buku\t :"<<buku[a].kode_buku<<endl;
cout<<"nama buku\t :"<<buku[a].nama_buku<<endl;
cout<<"tahun terbit\t :"<<buku[a].tahun_terbit<<endl;
cout<<"pengarang\t :"<<buku[a].pengarang<<endl;
cout<<"harga\t\t :"<<buku[a].harga<<endl;
cout<<endl;
}
getch();
}

Pastikan compile statusnya success.

Sebagai hasilnya :

TUGAS PRAKTIKUM ALGORITMA


KELAS A, TEKNIK INFORMATIKA 2014/2015 SEMESTER I
RIKI RUSNANDAR / 2014081095

MODUL 8
TUMPUKAN (STACK)
Dasar Teori
Stack bisa diartikan sebagai suatu kumpulan data yang seolah-olah diletakan diatas
data yang lain. Satu hal yang perlu diingat bahwa kita bisa menambah (menyisipkan)
data dan mengambil (menghapus) data melalui ujung yang sama, yang disebut
sebagai ujung atas stack ( top of stack ). Stack mempunyai sifat LIFO ( LAST IN
FIRST OUT ) yang terakhir masuk adalah yang pertama keluar.
Ada beberapa operasi dasar dalam stack, yaitu menyisipkan data (push), operasi
menghapus data (pop) dan lainnya. Berikut ini beberapa operasi dalam stack :
1. Push : digunakan untuk menambah item pada stack pada tumpukan paling atas
2. Pop : digunakan untuk mengambil item pada stack pada tumpukan paling atas
3. Clear : digunakan untuk mengosongkan stack
4. IsEmpty : fungsi yang digunakan untuk mengecek apakah stack sudah kosong
5. IsFull : fungsi yang digunakan untuk mengecek apakah stack sudah penuh.

Bentuk umum STACK


Contoh deklarasi MAX_STACK
#define MAX_STACK 10

Contoh deklarasi STACK dengan struct dan array data

Typedef struct STACK


{
Int top;
Int data [10];
};
Deklarasi/buat variabel dari struct
STACK tumpuk;

Inisialisasi STACK
1. Pada mulanya isi top dengan -1,karena array dalam bahasa C dimulai dari 0,
yang berarti bahwa data dalam stack adalah KOSONG!
2. Top adalah suatu variabel penanda dalam stack yang menunjukan elemen teratas
data stack sekarang.

3. Bentuk umum :
Void inisialisasi ( )
{
Tumpuk.top = -1;
}

Fungsi isFull
1. Untuk memeriksa apakah stack sudah penuh?
2. Dengan cara memeriksa top of stack, jika sudah sama dengan MAX_STACK -1
maka full
3. Bentuk umum :

Int isFull ( )
{
If (tumpuk.top ==
MAX_STACK -1)
Return 1;
Else
Return 0;
}

Fungsi isEmpty
1. Untuk memeriksa apakah data stack masih kosong?
2. Dengan cara memeriksa top of stack, jika masih -1 maka data stack masih
kosong!
3. Bentuk umum :
Int isEmpty ( )
{
If (tumpuk.top == -1)
Return 1;
Else
Return 0;
}

Fungsi Push
1. Untuk memasukan data kedalam stack.
2. Jika data belum penuh,

Tambah satu (increment) nilai top of stack lebih dahulu setiap kali ada
penambahan kedalam array data stack.

Isikan data baru kedalam stack berdasarkan top of stack yang telah di
increment sebelumnya.

3. Jika tidak, outputkan penuh

4. Bentuk umum :

Void push ( char d[10] )


{
Tumpuk.top++;
Strcpy (tumpuk.data
[tumpuk.top].d);
}

Fungsi Pop
1. Untuk mengambil data stack yang terletak paling atas (data yang ditunjuk
oleh TOP).
2. Tampilkan terlebih dahulu nilai elemen teratas stack dengan mengakses
indeks sesuai dengan top of stacknya, baru dilakukan di-decrement nilai
top of stacknya sehingga jumlah elemen stack berkurang.
3. Bentuk umum :
void pop ( )
{
Printf(data terambil =
%s\n,
tumpuk.data[tumpuk.to
p] );
Tumpuk.top--;
}
Praktikum
Praktikum 1
Ketik source code berikut :
#include <conio.h>
#include <string.h>
#include <stdio.h>
void main ()
{
char *str = "LIKU LIKU LAKI LAKI TAK LAKU LAKU";
printf("%s\r\n",strrev(str));
printf("%s\r\n",str);
}

Sebagai hasilnya :

Praktikum 2
Ketik source code berikut :
#include<stdio.h>
#define N 20
main( )
{
int nilai [N],i,jml;
printf("jmlh maksimal tumpukan (<=20)=");
scanf("%d",&jml);
for(i=0; i<=jml; i++)
{
if (i>=jml)
printf("tumpukan penuh");
else
{
printf("data ke-%d=",i+1);scanf("%d",&nilai[i]);
}
}
for(i=0; i<=jml; i++)
{
printf("\ndata ke-%d=%d",i+1,nilai[i]);
}
return 0;
}

Sebagai hasilnya :

Tugas Modul 8
1. Buatlah program tumpukan (stack)
sebagai berikut :
Masukan kata

:STACK

Setelah dibalik : K C A T S
Jawab.
1. Ketik source code berikut :
#include <conio.h>
#include <string.h>
#include <stdio.h>
void main ()
{
char *str = "S T A C K";
printf("%s\r\n",strrev(str));
printf("%s\r\n",str);
}

untuk membalik kata dengan tampilan

Pastikan compile statusnya success.

Sebagai hasilnya :

TUGAS PRAKTIKUM ALGORITMA


KELAS A, TEKNIK INFORMATIKA 2014/2015 SEMESTER I
RIKI RUSNANDAR / 2014081095

MODUL 9
ANTRIAN (QUEUE)
Dasar Teori
Antrian (queue) adalah duatu kumpulan data yang penambahan elemennya hanya
bisa dilakukan pada suatu ujung ( disebut dengan sisi belakang atau rear ), dan
penghapusan atau pengambilan elemen dilakukan lewat ujung yang lain ( disebut atau
sisi depan atau front ) . antrian ( queue ) mempunyai prinsip FIFO ( First In First Out
) bahwa yang pertama masuk yang pertama keluar.
Operasi dasar queue
1. Create Queue

Untuk menciptakan dan menginisialisasi queue

Dengan cara membuat Head dan Tail = -1

Bentuk umum :
Void create ( )
{
Antrian.Head = -1;
Antrian.head = -1;
}

2. Empty Queue

Untuk memeriksa apakah antrian sudah penuh atau belum

Dengan memeriksa nilai tail, jika Tail = -1 maka empty

Kita tidak memeriksa head, karena head adalah tanda untuk kepala antrian (
elemen pertama dalam antrian ) yang tidak akan berubah-ubah

Peergerakan pada antrian terjadi dengan penambahan elemen antria


kebelakang, yaitu menggunakan nilai Tail.

Bentuk umum :
Void IsEmpty ( )
{
If (antrian.tail = -1)
Return 1;
Else
Return 0;
}

3. Full Queue

Untuk mengecek apakah antrian sudah penuh atau belum

Dengan cara mengecek nilai Tail, jika tail >= MAX-1 (karena MAX-1
adalah batas elemen array pada C) berarti sudah penuh

Bentuk umum :
void isfull ( )
{
if (antrian.tail = max-1)
return 1;
else
return 0;
}

4. Enqueue

Untuk menambahkan elemen kedalam antrian, penambahan elemen selalu


ditambahkan di elemen paling belakang

Penambahan selalu menggerakan variabel tail dengan cara increment


counter tail terlebih dahulu

Bentuk umum :

void enqueue (int data)


{
if (isempty ( ) = 1) {
antrian.head=antrian.tail=0;
antrian.data[antrin.tail] =data;
printf(%d,masuk,antrian.data*antrian.tail+ );
}
else
if (isfull ( ) = 0) {
antrian.tail++;
antrian.data[antrian.tail]=data;
printf(%d,masuk,antrian.data*antrian.tail+ );
}
5. Dequeue

Digunakan untuk menghapus elemen terdepan/pertama (head) dari antrian

Dengan cara menggeser semua elemen antrian kedepan dan mengurangi tail
dengan 1

Pergeseran dilakukan dengan menggunakan looping

Bentuk umum :
int dequeue ( )
{
int i;
int e = antrian.data[antrian.head];
for (i=antrian.head;i<=antrian.tail;i++)
{
antrian.data[i]=antrian.data[i+1];
}
antrian.tail--;
return e;
}

6. Clear queue

Untuk menghapus elemen elemen antrian dengan cara membuat tail dan
Head = -1

Penghapusan elemen-elemen antrian sebenarnya tidak menghapus arraynya,


namun hamya mengeset indeks pengaksesannya ke nilai -1 sehingga
elemen-elemen antrian tidak lagi terbaca

Bentuk umum :
void clear ( )
{
antrian.head = -1;
antrian.tail = -1;
printf(data clear);
}

7. Tampil queue

Untuk menampilkan elemen elemen antrian

Menggunakan looping dan head s/d tail

Bentuk umum :
Void clear ( )
{
Antrian.head = -1;
Antrian.tail = -1;
Printf(data clear);
}

Praktikum
Praktikum 1
Ketik source code berikut :
# include <iostream.h>
# include <conio.h>
class Linked_list_Queue
{
private :
struct node
{

int data;
node *next;
};
node *rear;
node *entry;
node *print;
node *front;
public :
Linked_list_Queue();
void Delete();
void Insert();
void print_list();
void show_working();
};
Linked_list_Queue::Linked_list_Queue( )
{
rear = NULL;
front = NULL;
}
//-------Insert ()-------//
void Linked_list_Queue::Insert()
{
int num;
cout << "\n\n\n\n\n\t Masukkan angka dalam Queue : ";
cin >> num;
entry=new node ;
if (rear==NULL)
{
entry->data=num;
entry->next=NULL;
rear=entry;
front=rear;
}
else
{
entry->data=num;
entry->next=NULL;
rear->next=entry;
rear=entry;
}
cout <<"\n\n\t *** "<<num<<"sudah masuk dalam Queue."<<endl;
cout <<"\n\n\n\t\t Pres any key to return to menu. ";

getch();
}
//------------Delete()------------//
void Linked_list_Queue::Delete()
{
if (front==NULL)
cout <<"\n\n\n\t *** Error : Queue is empty. \n"<<endl;
else
{
int deleted_element=front->data;
node *temp;
temp=front;
front=front->next;
delete temp;
cout <<"\n\n\n\t *** "<<deleted_element<<" dihapus dari
Queue."<<endl;
}
cout <<"\n\n\n\t\t Pres any key to return to menu. ";
getch ();
}
//--------------print_list()------------//
void Linked_list_Queue::print_list()
{
print=front;
if (print!=NULL)
cout <<"\n\n\n\n\n\t Angka-angka yang ada dalam Queue adalah
:\n"<<endl;
else
cout <<"\n\n\n\n\n\t *** Tidak ada yang ditampilkan. "<<endl;
while (print!=NULL)
{
cout <<"\t "<<print->data<<endl;
print=print->next;
}
cout<<"\n\n\n\t\t Pres any key to return to menu. ";
getch();
}
//-------------show_working()--------------//
void Linked_list_Queue::show_working()
{
char Key=NULL;
do
{

clrscr();
gotoxy(5,5);
cout<<"***Implementation of Linked List as a Queue***"<<endl;
gotoxy(10,8);
cout<<"Pilih salah satu Menu :"<<endl;
gotoxy(15,10);
cout<<"- Press\'I\' to Masukkan data dalam Queue"<<endl;
gotoxy(15,12);
cout<<"- Press\'D\' to Hapus data dari Queue"<<endl;
gotoxy(15,14);
cout<<"- Press\'P\' to Tampilkan data dari Queue"<<endl;
gotoxy(15,16);
cout<<"- Press\'E\' to Exit"<<endl;
Input :
gotoxy(10,20);
cout<<"
";
gotoxy(10,20);
cout<<"Masukkan Pilihan :";
Key=getche();
if (int(Key)==27 || Key=='e' || Key=='E')
break;
else if(Key=='i' || Key=='I')
Insert();
else if(Key=='d' || Key=='D')
Delete();
else if(Key=='p' || Key=='P')
print_list();
else
goto Input;
}
while(1);
}
//---------------main()-----------------//
int main()
{
Linked_list_Queue obj;
obj.show_working();
return 0;
}

Sebagai hasilnya :

Tugas Modul 9
1. Tambahkan function untuk mencari suatu elemen dalam queue
2. Tambahkan function untuk mengedit suatu elemen dalam queue
3. Carilah nilai total,rata-rata, terbesar dan terkecil dari elemen-elemen queue dalam
function tersendiri.

Jawab untuk 3 soal sekaligus.

Anda mungkin juga menyukai