7/22/2019 Diktat Algorithm & Programming
1/89
Algorithm and Programming
Hands on Lab
January 2011
For the latest information, please see bluejack.binus.ac.id
7/22/2019 Diktat Algorithm & Programming
2/89
i | P a g e
Information in this document, including URL and other Internet Web site references, is
subject to change without notice. This document supports a preliminary release of software
that may be changed substantially prior to final commercial release, and is the proprietary
information of Binus University.
This document is for informational purposes only. BINUS UNIVERSITY MAKES NO
WARRANTIES, EITHER EXPRESS OR IMPLIED, AS TO THE INFORMATION IN THIS
DOCUMENT.
The entire risk of the use or the results from the use of this document remains with the
user. Complying with all applicable copyright laws is the responsibility of the user. Without
limiting the rights under copyright, no part of this document may be reproduced, stored in
or introduced into a retrieval system, or transmitted in any form or by any means
(electronic, mechanical, photocopying, recording, or otherwise), or for any purpose, without
the express written permission of Binus University.
Binus University may have patents, patent applications, trademarks, copyrights, or other
intellectual property rights covering subject matter in this document. Except as expressly
provided in any written license agreement from Binus University, the furnishing of this
document does not give you any license to these patents, trademarks, copyrights, or other
intellectual property.
Unless otherwise noted, the example companies, organizations, products, domain names, e-
mail addresses, logos, people, places and events depicted herein are fictitious, and no
association with any real company, organization, product, domain name, email address,
logo, person, place or event is intended or should be inferred.
2011 Binus University. All rights reserved.
The names of actual companies and products mentioned herein may be the trademarks oftheir respective owners.
7/22/2019 Diktat Algorithm & Programming
3/89
ii | P a g e
Table of Contents
OVERVIEW ..................................................................................................... iii
SYSTEM REQUIREMENT .................................................................................... iv
Chapter 01 IDE dan Instruksi I/O .................................................................... 1
Chapter 02 Operasi Aritmatika ...................................................................... 10
Chapter 03 Struktur Kendali Pemilihan ........................................................... 20
Chapter 04 Struktur Kendali Perulangan ......................................................... 30
Chapter 05 Array ......................................................................................... 36
Chapter 06 Function .................................................................................... 45
Chapter 07 Built-in Function ......................................................................... 58
Chapter 08 Rekursif ..................................................................................... 64
Chapter 09 Operasi File ................................................................................ 68
Chapter 10 Sorting ...................................................................................... 75
Chapter 11 String ........................................................................................ 82
7/22/2019 Diktat Algorithm & Programming
4/89
iii | P a g e
OVERVIEW
Chapter 01
IDE dan Intruksi Dasar Input/Output
Chapter 02
Operasi Aritmatika : Penjumlahan, Pengurangan, Perkalian, Pembagian dan Modulus
Chapter 03
Struktur Kendali Pemilihan : If, If Else, If Else If dan Switch Case Ternary Operator
Chapter 04
Struktur Kendali Perulangan: DoWhile, While dan For
Chapter 05
Array : Array 1 Dimensi, 2 Dimensi dan N-Dimensi
Chapter 06
Function : Call By Value dan Call By References
Chapter 07
Build-In Function
Chapter 08
Fungsi Rekursif
Chapter 09
Operasi File : Baca dan Tulis File
Chapter 10
Sorting : Bubble Sort
Chapter 11
String : Input/Output dan Fungsi dalam Header String.h
7/22/2019 Diktat Algorithm & Programming
5/89
iv | P a g e
SYSTEM REQUIREMENT
Hardware:o Minimum:
1.6 GHz CPU, 192 MB RAM, 1024x768 display, 5400 RPM hard disk
o Recommended:2.2 GHz, 384 MB, 1280x1024 display, 7200 RPM or higher.
o On Windows Vista:2.4 GHz CPU, 768 MB RAM
Software:o Microsoft Visual Studio 2008 Express Edition (Visual C++)o 1.3 GB of available disk space for the full install
7/22/2019 Diktat Algorithm & Programming
6/89
1 | P a g e
Chapter 01
IDE dan Instruksi I/O
7/22/2019 Diktat Algorithm & Programming
7/89
2 | P a g e
1.1. Definisi Algoritma
Secara etimologis, Algoritma berasal dari kata Al Khwarizmi / algorism yang dalam
bahasa Arab berarti proses menghitung menggunakan angka. Tetapi, dalam pengertian
lain, algoritmaadalah urutan langkah-langkah logis penyelesaian masalah yang disusun
secara sistematis.
1.2. Definisi Pseudocode
Pseudocodeadalah kode-kode yang dapat kita mengerti yang nantinya akan diolah dan
diubah ke dalam suatu bahasa pemrograman. Selain itu, pseudocodedapat juga diartikan
sebagai cara untuk menuliskan sebuah algoritma secara high-level (leveltingkat tinggi).
Untuk penulisan, pseudocodebiasanya dituliskan dengan kombinasi bahasa manusia dan
notasi matematika dan biasanya sebuah pseudocodetidak terlalu detail jika dibandingkan
dengan kode program.
Isu-isu detail dalam kode program yang sifatnya teknis tidak dibahas di dalam
pseudocode.
1.3. Contoh Pseudocode
Contohpseudocodeuntuk meminta inputan nama dan mencetaknya:
1. Read Nama
2. Print Nama
Dalam bahasa C kita dapat mengubahnya menjadi:
char nama[100];
scanf(%s, nama); fflush(stdin); //Read Nama
printf(nama = %s, nama); //Print Nama
7/22/2019 Diktat Algorithm & Programming
8/89
3 | P a g e
1.4. Tipe data
NoTipe
DataUkuran
Range
(Jangkauan)Format Keterangan
1. Char 1 byte -128 s/d 127 %c Karakter/string
2. Int 2 byte -32768 s/d 32767 %d Integer/bilangan bulat
3. Float 4 byte - 3.4E-38 s/d 3.4E+38 %f Float/bilangan pecahan
4. Double 8 byte - 1.7E-308 s/d 1.7E+308 %lf Pecahan presisi ganda
Contoh deklarasinya:
char NIM[11];int age;
Contoh penggunaannya:
scanf(%s,NIM);
scanf(%d,&age);
1.5. Input/Output
Dalam bahasa C, operasi input output dapat ditemukan dalam header (stdio.h).
Stdio merupakan singkatan dari standard input output.
1.5.1. Input
a. scanf: untuk meminta inputan data dari keyboard.
#includeint main(){
char ID[11];
int age;printf(ID = );scanf(%s,ID);printf(Age = );scanf(%d,&age);printf(Hi! Binusian!! \n);printf(Your ID = %s \n,ID);printf(Your Age = %d \n,age);return 0;
}
Note :
Untuk pemakaian sintaks scanf, apabila data yang diinput adalah array ofcharacter / string, maka tanda & dapat dihilangkan
7/22/2019 Diktat Algorithm & Programming
9/89
4 | P a g e
%x Hexadecimal integer
%f Float (bilangan pecahan)
%lf Double float
%e Float tipe exponent menggunakan e
%c Karakter
%s String
%d Bilangan bulat (integer)
%ld Long integer
%u Unsigned integer
b. gets: untuk meminta inputan berupa kata atau kalimat sampai akhir line \n
(menekan tombol enter).
c. getchar: untuk memasukkan sebuah nilai karakter ke variabel yang bertipe
karakter.
#includeint main(){
char grade;printf(Your grade : );grade=getchar();printf(Youve inputed this grade = %c \n,grade);
#includeint main(){
char name[25];char addr[50];printf(Name : );gets(name);printf(Addr : );gets(addr);printf(\n);printf(Data youve inputed : \n);printf(Name : %s \n,name);printf(Addr : %s \n,addr);return 0;
}
Note :
Anda dapat menggunakan [^\n]untuk menggantikan gets.
Dengan scanf ini akan mengambil sampai karakter \n.Karakter \ntidak diambil. (dibaca : ambil sampai negasi \n).
Contoh: scanf(%[^\n], &variable);
7/22/2019 Diktat Algorithm & Programming
10/89
5 | P a g e
1.5.2. Output
a. printf: digunakan untuk menampilkan suatu keluaran pada konsol (layar).
Berikut beberapa variasi format untuk menampilkan string:
%s : menampilkan seluruh karakter pada string.
%Ns : menampilkan semua karakter rata kanan dengan lebar N posisi.
%-Ns : menampilkan semua karakter rata kiri dengan lebar N posisi.%N.Ms : menampilkan rata kanan hanya M karakter pertama saja dengan lebar
N posisi.
*untuk format pencetakan (%s, %d, %c, dan lainnya. ), perhatikan format yang
sudah ada pada input-scanf.
Escape
SequenceDescription Unicode
\t (Horizontal) Tab \u0009
\f Form Feed \u000c
\v Vertical Tab \u000B
\n New Line Feed (LF) \u000a
\r Carriage Return (CR) \u000d
\b Backspace \u0008
\' Single quote (grave accent) \u0027
\\ Back slash (solidus) \u005c
\0 null (C string terminator) \u0000
\a Alert (beep sound) or New line break for CSS2 content \u0007
\c continuation (UNIX) Tidak ada
\" Double quote \u0022
#include int main(){
int value=69;printf(I love C language.. =) \n);printf(Value = %d \n,value);getchar();return 0;
}
7/22/2019 Diktat Algorithm & Programming
11/89
6 | P a g e
b. putchar: menampilkan 1 karakter dan tidak mengandung escapesequence\n.
c. puts: menampilkan nilai string dengan disertai linefeed atau escapesequenceganti baris (\n).
Pahami definisi algoritma, jika perlu carilah sumber-sumber di internet untuk
mendukung pengetahuan Anda.
#include int main(){
puts(I love C language.. =));puts(Lets study C language );return 0;
}
#include int main(){
char a;
printf(a = );scanf(%c,&a);fflush(stdin);printf(Data you have inputed : );putchar(\n);putchar(a);return 0;
}
7/22/2019 Diktat Algorithm & Programming
12/89
7 | P a g e
1.6. Latihan
1.6.1 Latihan 1 Pengenalan IDE
IDE yang kita gunakan adalah Visual Studio 2008 C++ Express Edition yang dapat
diunduh gratis di situs Microsoft.
How to launchVisual Studio 2008 C++ Express?
Shortcut:
a) Tekan WIN + R.
b) Ketik VCExpress
7/22/2019 Diktat Algorithm & Programming
13/89
8 | P a g e
1.6.2.Latihan 2 Follow step by step
Perbaikilah listing program di bawah ini dengan benar sehingga jika dijalankan
listing program akan menghasilkan program dibawah ini!
Output:
Question :
#incude stdio.>//step 1 invalid preprocessor command 'incude change it to include//step 2 expected a filename, found 'identifier change it to
int main(){
char name[25]="Sky";printf(\t\t===========================\n");
//step 3 newline in constant add after printf(
printf("\t\t%%Welcome to Bina Nusantara%\n");//step 4 output shows that we need to add % behind to print % (%% = %)
printf("\t\t===========================\n");printf("\n\r======================================================");
printf("\nWish u have a cool\excellent programming skill, %s!!! \n",ame);//step 5 'ame' : undeclared identifier change it to name
pritf("======================================================\n");
//step 6 'pritf': identifier not found change it to printf
printf("\n\nPress ENTER to exit!! %c %c Algoritm !!!",1,3);
gethar();//step 7 gethar: identifier not found change it to getchar
return 0;}
7/22/2019 Diktat Algorithm & Programming
14/89
9 | P a g e
1.6.7.Latihan 3 Try Your Self Make it Zero Errors
Cobalah perbaiki code dibawah ini!
intmain(){
charname[100]printf("\tBina Nusantara Library System\t");printf("\t\tt\t*-*-*-*-*-*-*-*-*\n\n");printf("Please enter your name : ");scanf("[\n]",name);flush(stdin);printf("nnHi! %s, This is a quote for you.....\n\n",name);getchar();printf("%c "Trying to forget someone you love is like trying to
remember someone you never knew"\n\n",3);prinf("Press Enter to other quotes...\n\n");getchrr();printf("%c \\"Eventually, all the pieces will fall into place. Until
then.. laugh at the confusion, live forthe moment, and knowthat everything happens forthe reason\"\n\n",3);
printf("%c \If everything happened when and how we wanted it to,nothing would be worth waiting for..\"\n\",3);
getchar();printf("Welcome to C languange... Good Luck!!!!);getchar();return0
}
Answer:
#include
intmain(){
charname[25]="Sky";printf("\t\t===========================\n");printf("\t\t%%Welcome to Bina Nusantara%%\n");printf("\t\t===========================\n");
printf("\n\r======================================================" );printf("\nWish u have a cool\\excellent programming skill, %s!!!\n"
,name);
printf("======================================================\n");
printf("\n\nPress ENTER to exit!! %c %c Algorithm !!!",1,3);
getchar();return0;
}
7/22/2019 Diktat Algorithm & Programming
15/89
10 | P a g e
Chapter 02Operasi Aritmatika
7/22/2019 Diktat Algorithm & Programming
16/89
7/22/2019 Diktat Algorithm & Programming
17/89
12 | P a g e
Anda juga dapat melakukan penjumlahan dengan cara:
hasil -= a;
dimana setara dengan
hasil = hasil - a;
2.1.3. Perkalian
int hasil;
int a=6, b = 3;
hasil = a * b;
maka nilai hasil yang tercetak adalah 18.
Anda juga dapat melakukan penjumlahan dengan cara:
hasil *= a;
dimana setara dengan
hasil = hasil * a;
2.1.4. Pembagian
int hasil;
int a=6, b = 3;
hasil = a / b;
maka nilai hasil yang tercetak adalah 2.
Anda juga dapat melakukan penjumlahan dengan cara:
hasil /= a;
dimana setara dengan
hasil = hasil / a;
7/22/2019 Diktat Algorithm & Programming
18/89
13 | P a g e
2.1.5. Modulus/Modulo
Biasanya digunakan untuk menentukan menentukan nilai sisa dari suatu pembagian.
Umumnya modulus/modulo digunakan untuk menentukan suatu nilai merupakan
bilangan ganjil atau genap.
contoh:
angka % 2 == 0(bilangan genap)
jika
angka % 2 != 0(bilangan ganjil)
2.1.6. Increment
a. Preincrement (++)Preincrement berfungsi untuk menambahkan sebuah variabel sebanyak satu
point (variabel + 1) sebelum menjalankan suatu proses, seperti memasukkan isi
variabel tersebut ke dalam variabel lain atau proses pencetakan variabel ke dalam
konsol.
Contoh:
#include
int main(){
int number=3;int beforeIncrement;int afterIncrement;
printf("Initial number : %d\n\n",number);
//pada bagian ini, nilai number ditambah 1 terlebih dahulu//nilai disimpan ke dalam beforeIncrement
beforeIncrement = ++number;
//nilai number yang sudah ditambah disimpan ke //dalam afterIncrement
afterIncrement = number;
printf("Number before increment : %d\n",beforeIncrement);printf("Number after increment : %d",afterIncrement);
getchar();return 0;
}
7/22/2019 Diktat Algorithm & Programming
19/89
14 | P a g e
b. Postincrement (++)
Postincrement berfungsi untuk menambahkan sebuah variabel sebanyak satu
point (variabel + 1) setelah menjalankan suatu proses, seperti memasukkan isi
variabel tersebut ke dalam variabel lain atau proses pencetakan variabel ke dalam
konsol.
Contoh:
#include
int main(){
int number=3;int beforeIncrement;int afterIncrement;
printf("Initial number : %d\n\n",number);//pada bagian ini, nilai number disimpan ke dalam//beforeIncrement//lalu number ditambah 1;
beforeIncrement = number++;
//nilai number yang sudah ditambah disimpan ke dalam
//afterIncrementafterIncrement = number;
printf("Number before increment : %d\n",beforeIncrement);printf("Number after increment : %d",afterIncrement);
getchar();return 0;
}
7/22/2019 Diktat Algorithm & Programming
20/89
15 | P a g e
2.1.7. Decrement
a. Predecrement (--)
Predecrementberfungsi untuk mengurangi sebuah variabel sebanyak satu point
(variabel - 1) sebelum menjalankan suatu proses, seperti memasukkan isi variabel
tersebut ke dalam variabel lain atau proses pencetakan variabel ke dalam konsol.
Contoh:
#include
int main(){
int number=3;int beforedecrement;int afterdecrement;
printf("Initial number : %d\n\n",number);
//pada bagian ini, nilai number dikurang 1 terlebih//dahulu
//nilai disimpan ke dalam beforedecrement
beforedecrement = --number;
//nilai number yang sudah dikurang disimpan ke//dalam afterdecrement
afterdecrement = number;
printf("Number before decrement : %d\n",beforedecrement);printf("Number after decrement : %d",afterdecrement);
getchar();return 0;
}
7/22/2019 Diktat Algorithm & Programming
21/89
16 | P a g e
b. Postdecrement (--)
Postdecrementberfungsi untuk mengurangi sebuah variabel sebanyak satu point
(variabel - 1) setelah menjalankan suatu proses, seperti memasukkan isi variabel
tersebut ke dalam variabel lain atau proses pencetakan variabel ke dalam konsol.
Contoh:
#include
int main(){
int number=3;int beforeDecrement;int afterDecrement;
printf("Initial number : %d\n\n",number);//pada bagian ini, nilai number disimpan ke dalam//beforeDecrement//lalu number dikurang 1;
beforeDecrement = number--;
//nilai number yang sudah dikurang disimpan ke dalam//afterDecrement
afterDecrement = number;
printf("Number before Decrement : %d\n", beforeDecrement);printf("Number after Decrement : %d",afterDecrement);
getchar();return 0;
}
7/22/2019 Diktat Algorithm & Programming
22/89
7/22/2019 Diktat Algorithm & Programming
23/89
18 | P a g e
2.2.3.Latihan 3 Try it Yourself
Apakah code ini benar?
Berapakah nilai a, b, dan c?
Dan mengapa?
References:
http://www.cppreference.com/wiki/operator_precedence
int a = 6;
int b = 7;
int c = a +++ b;
http://www.cppreference.com/wiki/operator_precedencehttp://www.cppreference.com/wiki/operator_precedence7/22/2019 Diktat Algorithm & Programming
24/89
19 | P a g e
Chapter 03Struktur Kendali Pemilihan
7/22/2019 Diktat Algorithm & Programming
25/89
20 | P a g e
3.1. Struktur kendali pemilihan
Dalam bahasa C, terdapat beberapa macam struktur kendali pemilihan, diantaranya
adalah if, else, elseif, dan switchcase.
3.1.1 If
If digunakan untuk melakukan pengecekan atau menyeleksi apakah suatu kondisi
terpenuhi atau tidak.
Berikut ini cara penggunaan struktur kendali pemilihan if:
Jika digunakan dengan hanya 1 statement yang harus dijalankan ketika kondisibernilai benar.
Jika digunakan dengan lebih dari 1 statement yang harus dijalankan ketika kondisibernilai benar
3.1.2. Else dan else if
a. Else
Else digunakan untuk melakukan pengecekan terhadap suatu kondisi selain
kondisi yang telah dicek sebelumnya.
Jika digunakan dengan 1 statement yang harus dijalankanif (expression){
}else
if (expression){
}
if (expression)
7/22/2019 Diktat Algorithm & Programming
26/89
21 | P a g e
Jika digunakan dengan lebih dari 2 statement atau lebih yang harus dijalankan
b. Else if
Else if digunakan untuk melakukan pengecekan terhadap beberapa kondisi selain
dari kondisi yang telah dicek sebelumnya.
Jika digunakan dengan hanya 1 statement yang harus dijalankan
Jika digunakan dengan lebih dari 2 statement atau lebih yang harus dijalankan
Untuk memudahkan mengingat, dapat dikatakan else if adalah extensifikasi
dari else, karena pada else if dapat dilakukan pengecekan kondisi lain selain
dari kondisi yang telah dicek sebelumnya.
if (expression){
}else if(expression){
}
if (expression){
}else if(expression)
if (expression){
}
else{
}
7/22/2019 Diktat Algorithm & Programming
27/89
22 | P a g e
Perhatikan langkah-langkah berikut ini:
1. Ketika kita menemukan kondisi berupa booleanexpressionyang kita cekdengan menggunakan operator < (lebih kecil), > (lebih besar), = (lebih besar sama dengan), atau == (sama dengan).
Maka kita akan menghasilkan hasil berupa trueatau false (boolean).
Perhatikan code berikut:
Maka yang tercetak adalah: Yang diinput adalah angka sembilan.
2. Dengan menggunakan kode program di atas dan mengganti inputandengan menginput angka 6.
Maka yang tercetak adalah: Angka Lainnya.
3. Kita dapat saja mengubah sedikit kode program pada potongan program diatas, kita dapat saja membuat agar ketika kita menginput angka 6 dan
menampilkan pesan Hey, ini angka enam, dengan cara seperti berikut
ini:
scanf(%d, &x); //input 9
if( x == 9 )printf(Yang diinput adalah angka sembilan);
elseprintf(Angka Lainnya);
7/22/2019 Diktat Algorithm & Programming
28/89
23 | P a g e
Kemudian pada potongan program di atas, tambahan kode yang harus
ditambahkan adalah:
Jadi secara lengkap, format penulisan if secara lengkap adalah
if (expression){
}else if(expression){
}else{
}
scanf(%d, &x); //kita input 9
if( x == 9 )
printf(Its nine);
else //dapat ditempel menjadi else ifif( x == 6 )
printf(Hey, ini angka enam);
else
printf(Angka Lainnya);
scanf(%d, &x); //kita input 9
if( x == 9 )
printf(Yang diinput adalah angka sembilan);
else
//printf(Angka Lainnya);
7/22/2019 Diktat Algorithm & Programming
29/89
24 | P a g e
3.2. Pemilihan dengan menggunakan switch case
3.2.1 Switch Case tanpa Break
Switch Case digunakan untuk menyeleksi suatu kumpulan syarat (case) tertentu
terhadap suatu variabel/expression.
Format:
Dapat terlihat pada format di atas expression dimaksudkan adalah suatu variabel,
kondisi atau pernyataan logika yang ingin dicek kebenarannya.
Caseadalah syarat atau kondisi penyeleksian suatu expression, bila expression yang
dicek ternyata sesuai dengan suatu case, maka statement akan dijalankan.
Contoh:
Keterangan:
Type casting = proses untuk mengubah suatu variabel dengan tipe data tertentu
menjadi tipe data yang lain. Misalnya mengubah bilangan float
menjadi bilangan int, bilangan long menjadi double dan sebagainya.
Dalam potongan program di atas dapat dilihat salah satu contoh type casting yaitu:
(char) = type casting suatu variabel menjadi tipe data char
char character;
character = (char) getchar(character);
switch(character)
{
case a : case i' : case u : case e : case o :
printf(Vocal character);
default :
printf(Consonant character);
}
switch( expression ){
case constant-expression1 : statements1;[case constant-expression2 : statements2;][case constant-expression3 : statements3;][default : statements4;]
}
7/22/2019 Diktat Algorithm & Programming
30/89
25 | P a g e
3.2.2 Switch Case dengan Break
Penggunaan switch case pada pembahasan ini, sebenarnya sama saja dengan
pembahasan sebelumnya tetapi ditambahkan dengan keyword break.
Fungsi break dalam switch case dimaksudkan agar ketika pengecekan berhasil dan
proses masuk ke salah satu case, maka dengan keyword break, statement lain yang
dideklarasikan di bawah statement tersebut tidak lagi dijalankan (keluar dari
block statement switch).
Keyword breakini, tidak hanya dapat digunakan dalam swith case saja, tetapi dapat
digunakan dengan fungsi-fungsi lain atau proses lain.
Untuk melihat perbedaannya hilangkanlah sintax break(break pada case 1).
3.3. Ternary Operator ( ? : )
Ternary operator adalah suatu operator yang dapat digunakan untuk melakukan
pengecekan seperti halnya struktur kendali if, else dan switch case. Operator ini akan
mengecek apakah expression yang dideklarasikan di sebelah kiri operator ? bernilai
benar atau salah, jika benar/salah maka akan dijalankan statement yang sesuai.
Format:
Contoh :
scanf("%d",&x); //input 3(x == 3 ) ? printf("yes, its three!\n") : printf("hm,..its the
another\n");
? :
int number;
scanf(%d,&number);
switch(number){case 1 : printf(one!\n); break;
case 2 : printf(two!\n); break;
default : printf(Not one or two);
}
7/22/2019 Diktat Algorithm & Programming
31/89
26 | P a g e
3.4. Latihan
3.1.1.Latihan 1Pemahaman konsep.
1. Apakah perbedaan mendasar antara switch dan if?2. Apa saja syarat-syarat penggunaan if?3. Bolehkan default dihilangkan?
3.1.2.Latihan 2 Code it.
Winy, seorang mahasiswi jurusan Teknik Informatika, ditugaskan oleh dosen
Aljabar Linear untuk membuat sebuah program sederhana untuk menghitung
determinan matriks. Program tersebut dibuat dengan ketentuan sebagai berikut:
Awal program dijalankan, ditampilkan menu seperti berikut:1. Matriks 2x22. Matriks 3x3
Ketik "exit" untuk keluar
Minta useruntuk menginput pilihan. Validasikan pilihan yang dapat diinputberupa karakter 1,2, atau kataexit.
Jika usermemilih menu Matriks 2x2 (input 1) atau Matriks (input 2),Mintauser untuk menginput elemen matriks buah bilangan. Validasikan elemen
matriks yang diinput minimal 0 dan maksimal 9.
Setelah masing-masing elemen matriks diinput, tampilkan matriks tersebut.1. Contoh tampilan matriks 2x2:
2. Contoh tampilan matriks 3x3:
Kemudian, hitung dan tampilkan nilai determinanmatriks tersebut, denganrumus:
1. Untuk Matriks 2x2:determinan= (a*d) (b*c)
2. Untuk Matriks 3x3:determinan= (a*e*i + b*f*g + c*d*h) - (c*e*g + b*d*i + a*f*h)
Program akan berulang hingga usermemasukkan pilihanexit.
7/22/2019 Diktat Algorithm & Programming
32/89
27 | P a g e
Rancangan Layar Awal Program
Rancangan Layar Menu Matriks 2x2
Rancangan Layar UserMemilih Menu 2.
Note : untuk pertemuan selanjutnya salinlah (copy)codeAnda kevcexpress. Selain itu, biasakan juga untuk menulis code denganindentation (tab).
7/22/2019 Diktat Algorithm & Programming
33/89
28 | P a g e
Chapter 04Struktur Kendali Perulangan
7/22/2019 Diktat Algorithm & Programming
34/89
29 | P a g e
4.1. Struktur kendali perulangan
Dalam bahasa C, terdapat beberapa macam struktur kendali perulangan, diantaranya for,
dowhile, while.
4.1.1.For
For digunakan untuk mengulang suatu statement yang dideklarasikan berdasarkan
suatu kondisi atau syarat tertentu.
Format penggunaan For:
Jika hanya 1 statement yang dijalankan dalam perulangan
Jika terdiri lebih dari 1 statement yang dijalankan dalam perulangan
Contoh:
Pada potongan program di atas, kedua statement yang terdapat didalam for akan
dijalankan selama kondisi i < 5 terpenuhi.
Dalam hal ini, awalnya nilai i adalah 0 dan ketika proses dilakukan, nilai i akan
ditambahkan satu point (increment i++), dan proses dilakukan terus.
for ( int i = 0; i < 5; i++){
printf(Value of i is = %d , i);
printf(Loop number %d, (i+1));}
for (initialization; condition; increment/decrement){
}
for ([initialization] ; [condition] ; [increment/decrement])
7/22/2019 Diktat Algorithm & Programming
35/89
30 | P a g e
4.1.2.DoWhile
Do...Whiledigunakan untuk mengulan suatu statement yang dideklarasikan sesudah
keyword Do dan setelah menjalankan statement tersebut, dilakukan pengecekan
terhadap expression yang diberikan, apakah bernilai benar/salah.
Jika bernilai benar, maka statement tesebut akan diulang kembali.
Jika bernilai salah, maka statement tersebut hanya akan dijalankan satu kali tanpa
dilakukan pengulangan.
Contoh:
Pada potongan program di atas, program akan menjalankan terlebih dahulu kedua
statement di dalam do kemudian dilakukan pengecekan apakah nilai i < 5, jika benar,
maka program akan kembali mengulang kedua statement tersebut.
4.1.3.While
While digunakan untuk mengulang suatu statement selama expression yang diberikan
didalamnya bernilai benar, jika bernilai salah, maka statement yang dideklarasikan di
dalamnya tidak akan diulang.
Contoh:
int i = 0;while (i < 5){
printf(Value of i is %d, i);i++;
}
while (expression) {
}
int i = 0;
do{printf(Value of i is %d, i);i++;
}while (i < 5);
do{
}while (expression);
7/22/2019 Diktat Algorithm & Programming
36/89
31 | P a g e
Pada potongan program di atas, program akan melakukan pengecekan terlebih dahulu
apakah nilai i < 5, jika benar, maka program akan mengulang kedua statement yang
terdapat di dalam while.
4.2. Operator Logika
Jika operator hubungan membandingkan hubungan antara dua buah operand, maka
operator logika digunakan untuk membandingkan logika hasil dari operator-operator
hubungan.
Operator logika ada tiga macam, yaitu:
a) &&: Logika AND (dan)b) ||: Logika OR (atau)c) !: Logika NOT (ingkaran)
4.3. Latihan
4.3.1.Latihan 1 Pemahaman konsep.
1. Apakah perbedaan mendasar antara for dan dowhile?2. Kapan kita menggunakan while, dan kapan kita menggunakan do while?3. Bisakah kita memasukan break atau continue?
4.3.2.Latihan 2 Code it.
Pipi Shop adalah toko yang menjual alat-alat kosmetik seperti bedak, eye
shadow, lip gloss, mascara, dan eye liner. Anda diminta membuat program untuk
mendata data customerdan barang apa saja yang dibeli oleh customer.
Program tersebut memiliki ketentuan sebagai berikut:
Pada awal program dijalankan, program akan meminta inputan nama.Validasikan panjang nama minimal 1 karakter dan maksimal 20
karakter.
Program akan meminta inputan alamat. Validasikan panjang alamatminimal 1 karakter, maksimal 50 karakter dan harus mengandung
kata Jalan.
Kemudian program akan menampilkan daftar barang yang bisa dipesan olehcustomer.
7/22/2019 Diktat Algorithm & Programming
37/89
32 | P a g e
Program akan meminta usermenginput nama barang. Validasikan userhanyabisa menginput nama barang yang ada di daftar barang (tidak case
sensitive (huruf besar dan kecil disamakan)).
Program akan meminta usermenginput banyak pesanan. Validasikan banyakpesanan minimal 1 dan maksimal 100.
Program akan meminta user menginput nomor kartu kredit. Validasikannomor kartu kredit harus terdiri dari 14 digit.
Program akan menampilkan data data yang telah diinput oleh user. Program akan meminta user untuk melanjutkan program atau mengulang
program dengan ketentuan sebagai berikut:
o Validasikan inputan hanya bisa N atau Y(case sensitive).o Jika usermemilih N, maka program akan meminta ulang data customer.o Jika usermenekan Y, maka program selesai.
Rancangan Layar Awal Program
Rancangan Layar Program menampilkan data hasil inputan
Rancangan Layar Akhir Program
7/22/2019 Diktat Algorithm & Programming
38/89
33 | P a g e
Chapter 05Array
7/22/2019 Diktat Algorithm & Programming
39/89
34 | P a g e
5.1. Teori Dasar Array
Array adalah suatu tipe data terstruktur yang bertipe data sama dan berjumlah
tetap (berdasarkan apa yang ditentukan) dan diberi suatu nama tertentu (sesuai
variabel).
Elemen-elemen array tersusun secara berurutan. Susunan tersebut membuat
array memiliki alamat yang bersebelahan/berdampingan dalam memori sesuai
dengan besar pemakaian memori tipe data yang digunakan.
Namun, perlu diingat, walaupun elemen-elemennya tersusun secara berurutan, array
tetap dapat diakses secara acak di dalam memori.
Array juga dapat berupa array 1 dimensi, 2 dimensi, bahkann-dimensi.
Ilustrasi array 1 dimensi
5.2. Deklarasi Array
Contoh:
Contoh diatas berarti anda memesan tempat di memori komputer sebanyak 26
tempat dengan indeks yang dapat digunakan dari index 0 sampai index 25.
5.2.1 Inisialisasi Array 1D
Untuk memasukkan suatu nilai ke dalam sebuah array, dapat dilakukan dengan
beberapa cara, salah satu caranya adalah
Contoh di atas berarti program akan memasukkan angka 2, 1, 3, 7 dan 8 ke dalam
sebuah array dengan nama list.
int list[5] = {2,1,3,7,8};
char nama[26];
data_type array_name[size];
7/22/2019 Diktat Algorithm & Programming
40/89
35 | P a g e
5.2.2. Initializing Multidimensional Arrays
Untuk membuat array yang multidimensi (contohnya pada penggunaan array dalam
konsep matrix).
Dapat dilakukan inisialisasi dengan cara:
Dalam hal ini jumlah array yang dapat digunakan adalah mulai dari index [0][0]
sampai dengan index [x-1][y-1].Contoh:
Contoh di atas berarti program akan memasukkan kumpulan angka yang
berjumlah 9 tersebut ke dalam array matrix yang akan menghasilkan:
Matrix [0][0] = 11
Matrix [0][1] = 12
Matrix [0][2] = 13
Matrix [1][0] = 21
Matrix [2][0] = 32
Matrix [2][2] = 33
Dan seterusnya.
Matrix yang dapat digunakan adalah mulai dari index [0][0] sampai dengan[2][2] yang bila dihitung akan berjumlah 9 buah.
int matrix[3][3] ={
{11, 12, 13},{21, 22, 23},{32, 31, 33},
};
int variabel[x][y] ={
{1, 2, ..., n},{1, 2, ..., n},...dst
};
7/22/2019 Diktat Algorithm & Programming
41/89
7/22/2019 Diktat Algorithm & Programming
42/89
37 | P a g e
5.4. Latihan
5.3.1.Latihan 1 Pemahaman konsep.
1. Pada index ke berapa suatu array dimulai? Apakah 1 atau 0?2. Apakah ada array 3 dimensi? Jika ada, apa fungsinya?
5.3.2.Latihan 2 Code it.
Anda mempunyai teman yang merupakan seorang mahasiswa jurusan Teknik
Informatika. Anda diminta oleh teman anda untuk membantunya dalam
membuat sebuah aplikasi permainan bernama XO Table yang mempunyai
ketentuan sebagai berikut:
Tabel permainan memiliki ukuran 3x3 kotak dimana setiap kotak pada tabeldapat diisi dengan suatu simbol (X atau O).
Untuk menjalankan permainan ini diperlukan 2 orang pemain, dimana salahsatu dari pemain akan menggunakan symbol X dan pemain lainnya akan
menggunakan simbol O.
Pada permainan ini, setiap pemain akan menentukan suatu posisi dalam tabelyang masih kosong untuk diberi tanda sesuai dengan simbol pemain tersebut.
Pada program ini user akan diminta untuk memasukkan koordinat X dan Y
dari posisi simbol yang akan dimasukkan tersebut dengan ketentuan sebagai
berikut:
o Pertama kali program akan meminta user untuk memasukkan koordinatX. Validasikan koordinat X yang dimasukkan minimal 1 dan
maksimal 3.
o Kemudian program akan meminta useruntuk memasukkan koordinat Y.Validasikan koordinat Y yang dimasukkan minimal 1 dan maksimal
3.
o Validasikan jika user memasukkan simbol pada tabel permainan denganposisi koordinat X dan kordinat Y yang sudah diisi oleh simbol
(baik simbol X maupun simbol O), tampilkan pesan Posisi
telah diisi... Kedua pemain akan bergantian untuk giliran jalan, dan giliran untuk pertama
kali diberikan pada pemain X.
Untuk memenangkan permainan ini, salah satu pemain harus menyusunsimbol yang sama secara berurutan (sejumlah 3 buah) baik secara
vertikal, horizontal, maupun diagonal.
7/22/2019 Diktat Algorithm & Programming
43/89
38 | P a g e
Bila semua kotak yang tesedia dalam tabel telah diisi dan tidak adapemain yang berhasil membuat simbolnya berurutan, maka
permainan dinyatakan seimbang/seri.
Di akhir program, tampilkan hasil permainan. Jika salah satu pemain menang,maka tampilkan pesan Selamat, pemain menang!!. Jika
permainan berakhir dengan keadaan seri, tampilkan pesan Permainan
seri...
Jika permainan telah selesai maka program akan meminta konfirmasi untukmelanjutkan permainan atau tidak.
Rancangan Layar Awal
Rancangan Layar Dengan Giliran Pemain X
7/22/2019 Diktat Algorithm & Programming
44/89
39 | P a g e
Rancangan Layar Dengan Giliran Pemain O
Rancangan Layar Jika Posisi Telah Diisi
Rancangan Layar Jika Permainan Seri
7/22/2019 Diktat Algorithm & Programming
45/89
7/22/2019 Diktat Algorithm & Programming
46/89
41 | P a g e
Chapter 06
Function
7/22/2019 Diktat Algorithm & Programming
47/89
42 | P a g e
6.1. Deklarasi Variabel Lokal
Contoh:
Bila anda menggunakan bahasa C, maka setiap variabel HARUS diletakan dibawah tanda
kurung kurawal ({) (top of a block).
6.2. Ruang Lingkup Variabel Lokal
Variabel lokal hanya berfungsi di dalam blok saja. Jika kita perhatikan pada contoh di
atas, maka variabel tersebut hanya berlaku pada blok int main saja.
6.3. Deklarasi Variabel Global
Contoh:
#include
char name[25];int age;
int coba()
{age = age + 5;return age;
}
int main(){return 0;
}
#include
//
int main(){return 0;
}
int main(){
char nama[25];int usia;
int main(){
data_type variable_name;}
7/22/2019 Diktat Algorithm & Programming
48/89
43 | P a g e
6.4. Ruang Lingkup Variabel Global
Variabel global ini akan berlaku pada semua fungsi yang ada dalam contoh di atas,
variabel agedapat digunakan dalam fungsi coba dan fungsi utamanya yaitu main.
6.5. Inisialisasi Variabel Global
Data Type Initialiser
int 0
char '\0'
float 0
pointer NULL
6.6. Structure Fungsi
return type: tipe data yang dipakai ketika suatu fungsi mengembalikan nilai, dapat
berupa int, char, float, dan tipe data lain kecuali void karena voidmenyatakan bahwa fungsi tersebut tidak mengembalikan nilai.
argument/functionparamenter: suatu variabel yang digunakan untuk menerima suatu
nilai yang dikirimkan ke dalam suatu fungsi oleh
fungsi lain.
Contoh:
perlu diingat, untuk void, tidak perlu menggunakan keyword return.
int fungsiJumlah (int a,int b){
return a+b;}
FunctionName (Argument1, Argument2, Argument3){
Statement1;Statement2;Statement3;
}
7/22/2019 Diktat Algorithm & Programming
49/89
44 | P a g e
atau jika mau tetap dipaksakan tetapi sangat tidak disarankan.
6.7. Latihan
6.7.1.Latihan 1Pemahaman konsep.
1. Cobalah return pointer.2. Buatlah fungsi untuk menambahkan, mengurangkan.3. Dapatkah fungsi mereturn string (array of char)?
6.7.2.Latihan 2 Code it.
Fish a fish adalah sebuah game memancing ikan yang sedang terkenal
dikalangan temanteman Hadi. Pada saat kuliah, Hadi diberikan tugas membuat
sebuah game berbasiskan console oleh dosen Algorima dan Pemrogramannya.
Karena Hadi sangat menyukai gametersebut, maka dia membuat gameCoepoe
Fish a fish untuk memenuhi tugas tersebut.
Sebagai temannya yang baik, bantulah Hadi dalam pembuatan program tersebut
dengan ketentuan sebagai berikut:
Pertama kali program dijalankan, program akan meminta user untukmelakukan registrasi yang meliputi namasertajenis kelamin.
Validasikan:
o Namayang diinput minimal 2 karakterdan maksimal 25 karakter.o User hanya dapat memasukkan huruf L untuk memilih laki-laki atau
huruf P untuk memilih Perempuan untuk memilih jenis kelaminnya.
void menu (){
printf(Sky SkyDinning);printf(1. Fisherman Calmanary\n);printf(2. Chicken Snow with Almond\n);printf(3. Exit and choose other special menu\n);printf(select any [1..3] : );
return;}
void menu (){
printf(Sky SkyDinning);printf(1. Fisherman Calmanary\n);printf(2. Chicken Snow with Almond\n);printf(3. Exit and choose other special menu\n);
printf(select any [1..3] : );}
7/22/2019 Diktat Algorithm & Programming
50/89
45 | P a g e
Daftar dari Nama Ikan, Jenis Pemancingan dan Jenis Umpan yang ada dalamprogram adalah sebagai berikut:
o 10 nama ikan beserta masingmasing harga ikan dengan ketentuansebagai berikut:
o 5 jenis pancingan beserta masingmasing harga pancingan denganketentuan sebagai berikut:
Index Nama Pancingan Harga Pancingan
0 Fishing Pole $ 300
1 Advanced Fishing Rod $ 600
2 Advanced Fishing Pole $ 900
3 Ultimate Fishing Rod $ 1200
4 Ultimate Fishing Pole $ 1500
o Jenis umpanbeserta harga umpan, yaitu:Index Nama Umpan Harga Umpan
0 Green Big Worm $ 5
o Jenis pancingan awal yang dimiliki oleh pemain adalah Fishing Rod.o Levelpemain = 1o Uangpemain = 1000o Total umpan= 10
Index Nama Ikan Harga Ikan
0 Guppy Blue $30
1 Apple Snail $40
2 Guppy Yellow $50
3 Snake Snail $60
4 Flag Fish $70
5 Clown Fish $80
6 Tuna $90
7 Tiger Shark $100
8 White Shark $110
9 Whale $120
7/22/2019 Diktat Algorithm & Programming
51/89
46 | P a g e
Program mempunyai 5 menu utama:o 1. Lihat Profile Pemaino 2. Pancing Ikano 3. Jual Ikano 4. Belanja / Upgrade Perlengkapan Memancingo 5. Keluar
Jika user memilih menu Lihat Profile Pemain (tekan tombol 1), makaprogram akan menampilkan level, uang, nama, jenis kelamin, jenis
pancingan, serta total umpan yang dimiliki dan telah ditentukan oleh program
sebelumnya.
o Jika pada saat registrasi usermemasukkan L, maka tampilkan JenisKelamin adalah Laki-Laki.
o Jika pada saat regisrasi user memasukkan P, maka tampilkan JenisKelamin adalah Perempuan.
Jika usermemilih menu Pancing Ikan(tekan tombol 2), maka:o Program akan melakukan random angka dari 0 sampai 9. Hasil random
tersebut akan menentukan index ikan mana yang terpancing.
o Tampung dan hitung jumlah ikan yang tertangkap serta kurangitotal umpan pemain.
o Jika total umpan sama dengan 0, maka pemain tidak bisa memilihmenu Pancing Ikan sampai dengan total umpan terisi kembali.
Jika usermemilih menu Jual Ikan(tekan tombol 3), maka:o Program akan menampilkan jumlah ikan yang telah berhasil ditangkap
oleh pemain.
o Apabila user mengetikkan kata JUAL (tidak case sensitive), makaprogram akan menghitung total jual ikan dan menambahkannya dengan
uang pemain dengan ketentuan sebagai berikut:
Total jual ikan=jual ikan * harga ikan
o Apabila user memasukkan kata EXIT (tidak case sensitive), makaprogram akan kembali ke menu utama.
7/22/2019 Diktat Algorithm & Programming
52/89
47 | P a g e
Jika user memilih menu Belanja / Upgrade Perlengkapan Memancing(tekan tombol 4), maka program akan menampilkan 3 submenu antara lain:
o A. Upgrade Pancingano B. Beli Umpano C. Kembali Ke Menu Utamao Jika user memilih submenu Upgrade Pancingan (tekan tombol A),
maka:
Tampilkan 5 jenis pancingan beserta masing masing hargapancingan yang sudah ditentukan sebelumnya.
Minta user untuk memasukkan nomer pancingan yang diinginkan.Validasikan agar nomer pancingan yang bisa diinput minimal 1 dan
maksimal 5.
Validasikan juga pemain hanya bisa mengupgrade pancingannyaapabila uang pemain lebih besar daripada harga pancingan.
Jika kondisi tersebut telah terpenuhi, kurangi uang pemain sesuaidengan harga pancingan.
Kemudian ubah level pemain sesuai dengan nomer pancingan yangtelah dipilih. Berilah keterangan pada setiap perubahan level.
Ket : Sukses Meningkatkan Level., akan muncul jika nomerpancingan yang dibeli lebih besar dari level pemain.
Ket : Level Tidak Berubah., akan munculjika nomer pancinganyang dibeli sama dengan level pemain.
Ket : Level Menurun., akan muncul jika nomer pancinganyang dibeli lebih kecil dari level pemain.
o Jikausermemilih submenu Beli Umpan(tekan tombol B),maka: Tampilkan jenis umpan beserta harga umpan yang telah ditentukan
sebelumnya.
Kemudian minta user untuk memasukkan jumlah umpan yang ingindibeli. Validasikan inputan minimal 0 dan maksimal sama dengan
uang pemain / 5. Total umpan akan bertambah sesuai dengan banyaknya jumlah umpan
yang dibeli.
Uang pemain berkurang sebanyak:Uang Pemain = Uang Jumlah Umpan * Harga Umpan
7/22/2019 Diktat Algorithm & Programming
53/89
7/22/2019 Diktat Algorithm & Programming
54/89
49 | P a g e
Rancangan Layar Menu Pancing Ikan (Tekan Tombol 2)
Rancangan Layar Jika Total Umpan Sama Dengan 0
Rancangan Layar Menu Jual Ikan (Tekan Tombol 3)
7/22/2019 Diktat Algorithm & Programming
55/89
50 | P a g e
Rancangan Layar Jika UserMengetikkan Kata JUAL
Rancangan Layar Menu Belanja/Upgrade Perlengkapan Memancing
(Tekan Tombol 4)
Rancangan Layar Submenu Upgrade Pancingan (Tekan Tombol A)
7/22/2019 Diktat Algorithm & Programming
56/89
51 | P a g e
Rancangan Layar Submenu Upgrade Pancingan (Lanjutan)
Rancangan Layar Submenu Beli Umpan (Tekan Tombol B)
7/22/2019 Diktat Algorithm & Programming
57/89
52 | P a g e
Chapter 07Build-In Function
7/22/2019 Diktat Algorithm & Programming
58/89
53 | P a g e
7.1. Build-in Function Basic
C language memiliki banyak sekali build-in function. Tetapi, beberapa yang akan
dijelaskan di bawah ini adalah fungsi-fungsi yang wajib dimengerti. Terutama fungsi
yang di bold.
abort() clock() isalnum() log() sinh()abs() cosh() isalpha() memcmp() sqrt()
acos() ctime() isdigit() modf() srand()
asin() div() isgraph() pow() strcat()
atan() exit() ispunct() putchar() strcmp()
atexit() fabs() isspace() putenv() strerror()
atof() floor() isupper() puts() time()
atoi() fmod() kbhit() rand() tolower()
atol() getchar() log10() remove() toupper()
ceil() getenv() log2() rename()
atoi () : ascii to integer / mengubah ascii menjadi integer
isdigit() : mengecek apakah merupakan digit atau bukan. Jika iya return true.
tolower() : mengubah karakter case huruf menjadi kecil. Contoh A -> a.
toupper() : mengubah karakter case huruf menjadi besar. Contoh a -> A.
7.2. Build-in function Example
Untuk fungsi build-in random
//1: untuk membuat hasil random tidak berulang, jika srand(time(NULL))
dihilangkan, maka random akan menghasilkan angka berulang.
Cobalah anda hilangkan dan recompile.
Rumus random yang perlu diingat:
int angka = rand() % (max-min + 1) + min
Jika random 1-10 maka
#include #include #include
int main(){srand(time(NULL)); //1int number = rand()%10+1;
printf(Randomed Number : %d\n,number);return 0;
}
7/22/2019 Diktat Algorithm & Programming
59/89
54 | P a g e
int angka = rand()%(10-1 +1) + 1
jadi: angka = rand() % 10 + 1
7.3. Latihan
7.3.1.Latihan 1 Pemahaman konsep.
Pakailah fungsi toupper dan tolower untuk membuat program yang menghasilkan
output sebagai berikut:
Program meminta 3 kali inputan (gunakan looping)
input:
1. ABCDEFG //inputan ke-1.2. bCd // inputan ke-2.3. efgHIJ // inputan ke-3.
output:
1. AbCdEfG
2. BcD
3. EfGhIj
1. Apa fungsi dari build-in function (strcmp, strcpy) ?2. Sebutkan 10 fungsi build-in yang pernah kalian pakai?3. Apakah printf itu build-in function?4. Apa itu atoi dan apa itu itoa?
7.3.2.Latihan 2 Code it.
String Manipulator adalah sebuah program yang dapat memanipulasi string
sesuai dengan kemauan user. User dapat menggunakan program ini untuk
belajar mengenai fungsi dalam library String.h.
Berikut adalah deskripsi dari program tersebut:
Pada awal program, userakan diminta untuk menginput sebuah string.Validasikan panjang dari stringtersebut harus antara 5 dan 30 karakter.
Program terdiri dari 7 menu:1. Input new string2. Reverse the string3. Uppercase the string
7/22/2019 Diktat Algorithm & Programming
60/89
55 | P a g e
4. Check alphabet in the string5. Checking word in the string6. Split the string7. Exit
Jika usermemilih menu Input new string (menu 1), maka Minta useruntuk menginput string baru. Validasikan panjang daristring tersebut
antara 5 dan 30 karakter.
Jika user memilih menu Reverse the string (menu 2), maka tampilkanstring dengan urutan yang dibalik.
Jika usermemilih menu Uppercase the string(menu 3), maka tampilkanstring dengan huruf kapital
Jika usermemilih menu Check alphabet in the string (menu 4), makaprogram akan mencari huruf dalam string tersebut dan akan menampilkan
jumlah huruf yang terdapat dalam string tersebut.
Jika usermemilih menu Checking word in the string (menu 5), maka:o Minta useruntuk menginput kata yang mau dicari.o Jika kata yang dicari ditemukan, maka tampilkan pesan [word] is
found.
o Jika kata yang dicari tidak ditemukan, maka tampilkan pesan [word] isnot found.
Jika user memilih menu Split the string (menu 6), maka program akanmenampilkan kata yang ada dalam kalimat tersebut, dipisahkan dengan
spasi.
Jika usermemilih menu Exit (menu 7), maka program akan berakhir.
Rancangan Layar Awal Program
7/22/2019 Diktat Algorithm & Programming
61/89
56 | P a g e
Rancangan Layar Main Menu
Rancangan Layar menu Input new String (Menu 1)
Rancangan Layar memilih menu Input new String (Lanjutan)
Rancangan Layar menu Reverse the String (Menu 2)
7/22/2019 Diktat Algorithm & Programming
62/89
57 | P a g e
Rancangan Layar menu Uppercase the String (Menu 3)
Rancangan Layar menu Check alphabet in the string (Menu 4)
Rancangan Layar menu Checking word in the string (Menu 5)
Rancangan Layar menu Checking word in the string (Lanjutan)
Rancangan Layar menu Split the String (Menu 6)
7/22/2019 Diktat Algorithm & Programming
63/89
58 | P a g e
Chapter 08Rekursif
7/22/2019 Diktat Algorithm & Programming
64/89
59 | P a g e
8.1. Definisi Rekursif
Fungsi rekursif adalah sebuah fungsi yang memanggil dirinya sendiri, dalam hal ini
suatu fungsi memanggil dirinya sendiri dengan memanggil nama dari fungsi
tersebut. Rekursif akan berfungsi dengan sangat baik pada program yang bersifat
Devide and Conquer.
8.2. Contoh fungsi rekursif
Perlu diperhatikan!!!!
Fungsi rekursif harus memiliki setidaknya 1 kondisi yang digunakan untuk keluar dari
proses pengulangan pemanggilan fungsi tersebut (biasanya disebut dengan base-
case).Jika tidak fungsi ini akan memanggil dirinya sendiri sampai terjadi runtime stack
overflows.
Contoh di atas setara dengan code dibawah ini dengan iteration (perulangan biasa)
int factorial(unsigned int number){int f = 1;while(number < 0)f *= number--;return f;
}
# include
int factorial(unsigned int number){
if (number
7/22/2019 Diktat Algorithm & Programming
65/89
60 | P a g e
8.3. Latihan
8.3.1.Latihan 1Pemahaman konsep.
1. Apa arti devide and conquer, carilah definisinya!2. Fungsi rekursif biasanya dipakai untuk menambah readability dari
pemahaman program. Apa arti readability disini?
3. Carilah contoh kasus yang hanya bisa diselesaikan hanya dengan rekursif.
8.3.2.Latihan 2 Code it.
Pada mata kuliah Kalkulus I, William mempelajari tentang polinom (a+b)n.
Polinom (a+b)n adalah sebuah deret matematika. Contoh, (a+b)2 akan
menghasilkan (a2 + 2ab + b2). Untuk mempermudah pembelajaran tentang
polinom tersebut, ia membuat sebuah program rekursif. Program tersebut dibuat
dengan ketentuan sebagai berikut:
Pertama kali program dijalankan, minta user untuk menginput pangkatpolinom sebagai pangkat. Validasikan pangkat yang diinput minimal 1 dan
maksimal 9.
Kemudian, minta user untuk menginput bilangan a. Validasikan bilangan ayang diinput minimal 0 dan maksimal 9.
Setelah itu, minta useruntuk menginput bilangan b. Validasikan bilangan byang diinput minimal 0 dan maksimal 9.
Hitung dan tampilkan deret hasil perhitungan (a+b)nsesuai inputan dari user.Contoh:
(a+b)5= 1(a5*b0) + 5(a4*b1) + 10(a3*b2) + 10(a2*b3) + 5(a1*b4) + 1(a0*b5)
Konstanta didapatkan dari segitiga pascal.
Contoh:
1
1 1
1 2 1 -> (a+b)2 = a2+ 2ab + b2
1 3 3 1 -> (a+b)
3
= a
3
+ 3a
2
b + 3ab
2
+ b
3
1 4 6 4 1 -> (a+b)4 = a4+ 4a3b + 6a2b2+ 4ab3+ b4
Hitung dan tampilkan hasil perhitungan dari masing-masing sukubilangandalam deret tersebut.
7/22/2019 Diktat Algorithm & Programming
66/89
61 | P a g e
Hitung dan tampilkan hasil penjumlahan dari setiap hasil perhitungan sukubilangan.
Program akan menanyakan Ingin mengulang [y/t] ?, tekan Y atau yuntuk untuk mengulang program dari awal dan tekan T atau t untuk keluar
dari program.
Rancangan Layar Awal Program Meminta Inputan Dari User
Rancangan Layar Akhir Program
7/22/2019 Diktat Algorithm & Programming
67/89
62 | P a g e
Chapter 09Operasi File
7/22/2019 Diktat Algorithm & Programming
68/89
63 | P a g e
9.1. Teori dasar file.
Dengan menggunakan file operation, Anda dapat mengakses file. File yang diakses
adalah file berjenis flat file(berformat text).
Contoh:
memberlist.txt
9.2. Contoh deklarasi file.
9.3. Membuka file
9.4. Mode pada file operation
r - open for reading
w - open for writing (file need not exist)
a - open for appending (file need not exist)
r+ - open for reading and writing, start at beginning
w+ - open for reading and writing (overwrite file)
a+ - open for reading and writing (append if file exists)
Anda juga dapat membuka file secara binary, gunakan r+b atau rb+
#include
int main(){FILE *in;in = fopen(baca.txt, r); //r=baca, w=tulis, a=tambah
FILE *fopen(const char *filename, const char *mode);
#include
int main(){
FILE *in;}
7/22/2019 Diktat Algorithm & Programming
69/89
64 | P a g e
9.5. Menutup file
Isilah file baca.txt dengan:
Bina
Sky
Network
World
International
#include
int main(){
FILE *in, *out; //in untuk input, out untuk output
char temp[25];in = fopen(baca.txt, r); //r=baca, w=tulis, a=tambah
if(!in) //cek apakah open file berhasil
{
perror(File not found); //cetak error.
getchar();
return 1; //return error condition;
}
while(!feof(in)){ //cek apakah sudah mencapai akhir file
fscanf(in,%s,,temp);
printf(Hasil baca : %s\n,temp);
}
fclose(in);
out = fopen(coba.txt,w); //1
fprintf(out,Code selesai tercetak); //2
fclose(out); //3
}
#include
int main(){
FILE *in;in = fopen(baca.txt, r); //r=baca, w=tulis, a=tambahfclose(in);
}
int fclose(FILE *a_file);
7/22/2019 Diktat Algorithm & Programming
70/89
65 | P a g e
9.6. Latihan
9.6.1.Latihan 1 Pemahaman konsep.
1. Carilah kesimpulan dari code sebelumnya. (code pada contoh secarakeseluruhan).
2. Apa fungsi code //1?3. Apa fungsi code //2?4. Apa fungsi code //3?5. Apakah fungsi fclose boleh dihilangkan?
9.6.2.Latihan 2 Code it.
Anda sebagai seorang programmer dari suatu software house diminta oleh
seorang clientuntuk membuat sebuah program untuk mencatar list score rata-
rata dari sebuah game DotAdengan ketentuan seperti berikut:
Pertama kali program dijalankan, program akan membaca isi dari filesoal10.txt yang akan digunakan untuk mencatat nama pemain, skor rata-
rata, dan banyak bermain.
Program terdiri dari 5 menu yaitu:o Lihat recordo Tambah recordpemaino Tambah pemaino Hapus pemaino Simpan recorddan keluar
Jika user memilih menu Lihat record (tekan tombol 1), maka tampilkannama pemain, average score, dan banyak bermain yang didapat dari file
soal10.txt.
Jika usermemilih menu Tambah record Pemain(tekan tombol 2), maka:o Minta inputan nama pemain. Validasikan panjang karakter nama pemain
minimal 1 dan maksimal 10 karakter.
o Minta inputan nilai pemain. Validasikan nilai tersebut minimal 0 danmaksimal 100.
o Jika nama pemain tidak ada dalam list pemain, maka tampilkan pesanNama tidak ditemukan!
o Jika nama pemain ada dalam list pemain, maka average score daripemain tersebut akan berubah dengan rumus:
7/22/2019 Diktat Algorithm & Programming
71/89
66 | P a g e
Average scorebaru =
((average scorelama x banyak bermain) + nilai pemain) / (banyak bermain+1)
Jika usermemilih menu Tambah Pemain(tekan tombol 3), maka:o Minta inputan nama pemain yang mau ditambah. Validasikan panjang
karakter minimal 1 dan maksimal 10.
o Daftar nama pemain akan bertambah dengan nama pemain yang barudengan average scoredan banyak bermain 0. Kemudian tampilkan pesan
Berhasil memasukkan pemain baru..
Jika usermemilih menu Hapus pemain (tekan tombol 4), maka:o Minta inputan nama pemain yang ingin dihapus. Validasikan panjang
karakter nama tersebut minimal 1 dan maksimal 10.
o Jika nama pemain yang ingin dihapus tidak ada dalam daftar pemain,maka tampilkan pesan Nama tidak ditemukan!
o Jika nama pemain yang ingin dihapus ada dalam daftar pemain, makahapuslah nama pemain tersebut dari daftar pemain beserta data-datanya
dan tampilkan pesan Nama sudah dihapus..
Jika user memilih menu Simpan record dan keluar (tekan tombol 5),maka daftar nama pemain akan disimpan dalam filesoal10.txt dan program
selesai.
Rancangan Layar Menu Utama
7/22/2019 Diktat Algorithm & Programming
72/89
67 | P a g e
Rancangan Layar Menu Lihat Record
Rancangan Layar Menu Tambah Record Pemain
Rancangan Layar Menu Tambah Pemain
7/22/2019 Diktat Algorithm & Programming
73/89
68 | P a g e
Rancangan Layar Menu Hapus Pemain
7/22/2019 Diktat Algorithm & Programming
74/89
69 | P a g e
Chapter 10Sorting
7/22/2019 Diktat Algorithm & Programming
75/89
70 | P a g e
10.1. Teori dasar Bubble Sort
Bubble sort adalah salah satu teknik sorting yang sederhana dalam algoritma.
Sorting menggunakan bubblesortmenggunakan perbandingan di antara dua data.
Untuk lebih jelasnya perhatikan simulasi di bawah ini, simulasi sorting dilakukan
secara ascendingorder(mulai dari nilai terkecil ke nilai terbesar):
Siapkan variabel bernama
temp Dan kumpulan datayang ingin di sorting
dimasukkan ke dalam
sebuah variabel berarraysejumlah data yang tersedia
Bandingkan dua data yangterdapat dalam variabel
berarray tersebut di mulai
dari index array palingbelakang
Cek apakah index terakhirlebih besar atau lebih kecil
dari index kedua terakhir,
jika lebih besar maka tukarkedua data, jika tidakdiabaikan, dalam kasus
gambar di samping, dua nilai
diabaikan tidak ditukar
7/22/2019 Diktat Algorithm & Programming
76/89
71 | P a g e
Lanjutkan dengan
membandingkan dua nilaiselanjutnya.
Karena nilai dari index didepannya lebih besar, maka
kedua nilai ditukar
Nilai 10 dari index [2]disimpan terlebih dahulu ke
variabeltemp agar nilai
tidak hilang pada saatpenukaran nilai
Nilai 30 dipindahkan keindex [2].Sehingga variabel denganindex [2] bernilai 30sekarang.
7/22/2019 Diktat Algorithm & Programming
77/89
72 | P a g e
Nilai 10 yang sudahdisimpan di temp, kemudiandipindahkan dalam variabel
dengan index [1], dalam hal
ini penukaran nilai sudahselesai
Cek kembali urutan angka,
apakah sudah berurutansecara ascending, bilabelum, langkah kembalidiulangi dari index terakhir
Karena nilai index di depan
index [1] lebih besar, maka
kedua nilai ditukar denganlangkah yang sama sepertisebelumnya
Lanjutkan denganmembandingkan nilai 2
index selanjutnya
7/22/2019 Diktat Algorithm & Programming
78/89
73 | P a g e
10.2. Bubble sort Code
Swap code (fungsi tukar)
Fungsi inilah yang dipakai untuk pertukaran dua data.
Final Code:
#include #include const int MAX_ELEMENTS = 10;
void swap(int *x,int *y){int temp;temp = *x;*x = *y;*y = temp;
}void bublesort(int list[], int n){
int i,j;for(i=0;i
7/22/2019 Diktat Algorithm & Programming
79/89
74 | P a g e
10.3. Latihan
10.3.1. Latihan 1Pemahaman konsep.
1. Carilah contoh coding sorting yang lain, merge sort, quick sort, bubblesort with flag!
2. Mana yang lebih cepat merge sort, bubble sort, atau quick sort?3. Apa fungsi dari sorting?
10.3.2. Latihan 2 Code it.
XXII membuka sebuah cabamg baru bernama Layar Tancep suka-suka dan
anda ditunjuk sebagai kepala IT untuk usaha tersebut. Tugas pertama anda
sebagai kepala bidang IT adalah untuk membuat sebuah aplikasi
menggunakan bantuan filedengan ketentuan sebagai berikut:
Pertama kali program dijalankan, program akan membaca filesoal11.txt.Pada jadwal tersebut terdapat mengenai jadwal film yang akan diputar,
waktu pemutaran, dan jumlah kursi yang tersisa.
Program memiliki 6 pilihan, yaitu:o 1. Listfilmo 2. Sort ascendingberdasarkan jam tayango 3. Sort descendingberdasarkan nama filmo 4. Tambah daftar filmo 5. Pesan tiketo 6. Keluar
int main(){int list[MAX_ELEMENTS];int i = 0;// generate random numbers and fill them to the listfor(i = 0; i < MAX_ELEMENTS; i++ ){list[i] = rand();
}printf("The list before sorting is:\n");printlist(list,MAX_ELEMENTS);
// sort the listbublesort(list,MAX_ELEMENTS);
// print the resultprintf("The list after sorting using bubble sortingalgorithm:\n");printlist(list,MAX_ELEMENTS);return 0;
}
7/22/2019 Diktat Algorithm & Programming
80/89
75 | P a g e
Jika usermemilih menu List film(tekan tombol 1), maka program akanmenampilkan list layar tancep dengan format nomor, nama film, jam
tayang, dan jumlah kursi yang kosong yang masing-masing didapatkan
dari filesoal11.txt
Jika user memilih menu Sort ascending berdasarkan jam tayang(tekan tombol 2), maka list film akan disorting secara ascending
berdasarkan jam tayang. Kemudian tampilkan pesan Silahkan melihat
List Film di Menu 1
Jika user memilih menu Sort descending berdasarkan nama film(tekan tombol 3), maka list film akan disorting secara descending
berdasarkan nama film. Kemudian tampilkan pesan Silahkan melihat List
Film di Menu 1 .
Jika usermemilih menu Tambah daftar film (tekan tombol 4), maka:o Minta inputan nama film yang baru. Validasikan panjang karakter
nama film tersebut minimal 1 dan maksimal 10 karakter.
o Minta inputan jam tayang. Validasikan jam tersebut minimal 0 danmaksimal 23.
o Minta inputan menit tayang. Validasikan menit tersebut minimal 0dan maksimal 59.
o Kemudian tampilkan pesan Berhasilmenambah film baru^^ Jika usermemilih menu Pesan Tiket, maka:
o
Minta inputan nama film yang mau dipesan. Validasikan panjanginputan minimal 1 dan maksimal 10 karakter.
o Jika nama film yang mau dipesan tidak ada dalam list film, makatampilkan pesan Film tidak ditayangkan di Layar Tancep
o Jika nama film yang mau dipesan ada dalam list film, maka mintainputan jumlah tiket yang mau dipesan. Validasikan jumlah tiket
minimal 1 dan maksimal jumlah kursi kosong film tersebut .
o Kemudian tampilkan pesan Pemesanan berhasil^^ Jika usermemilih menu Keluar(tekan tombol 6), maka program selesai.
7/22/2019 Diktat Algorithm & Programming
81/89
7/22/2019 Diktat Algorithm & Programming
82/89
77 | P a g e
Rancangan Layar Menu Sort Descending Berdasarkan Nama Film
Rancangan Layar Jika UserMemilih Menu Tambah Daftar Film
Rancangan Layar Jika UserMemilih Menu Pesan Tiket
7/22/2019 Diktat Algorithm & Programming
83/89
78 | P a g e
Chapter 11
String
7/22/2019 Diktat Algorithm & Programming
84/89
79 | P a g e
11.1. Teori dasar string.h
Pada header string.h, terdapat banyak sekali fungsi-fungsi build-in yang berguna.
Berikut ini akan dibahas fungsi-fungsi header string.hyang dapat digunakan dan
akan sering Anda jumpai untuk menyelesaikan masalah-masalah ujian Anda nanti.
11.2. Penjelasan detail build-in function string.h
11.2.1.Fungsi strstr
Digunakan untuk mengambil bagian dari suatu String.
11.2.2.Fungsi strtok
Digunakan untuk memisahkan String berdasarkan karakter tertentu.
#include #include
int main(){
char input[16] = "abc,defghi";char *ptr;
ptr= strtok(input, ","); //indeks yang ke3
diganti NULL
if (ptr) // nilai selain 0 atau NULL adalah TRUEprintf("%s\n", ptr);
ptr = strtok(NULL, ",");if (ptr)printf("%s\n", ptr);getchar ();return 0;
}
#include #include
int main (){
char *str1 = Algorithm and Programming;
char *str2 = Algo,char *ptr;ptr = strstr (str1, str2);printf (Result = %s\n, ptr);getchar ();return 0;
7/22/2019 Diktat Algorithm & Programming
85/89
80 | P a g e
11.2.3.Fungsi strrev
Digunakan untuk membalikkan string.
Contoh:
11.2.4.Fungsi strcmp / strcmpi
Membandingkan 2 string:
strcmp: tanpa membedakan huruf besar kecil.
strcmpi: membedakan huruf besar huruf kecil.
Fungsi strcmpi (i = ignore case).
Contoh:
Nilai yang dikembalikan ada 3:
( < 0 ), nilai ascii string1 lebih kecil dari nilai ascii string2
( == 0 ), kedua string sama
( > 0 ), nilai ascii string1 lebih besar dari nilai ascii string2
11.2.5.Fungsi strlen
Menghitung panjang suatu string.
Contoh:
Nilai yang dikembalikan adalah jumlah karakter string tersebut.
strlen (string);
strcmp (string1, string2);
#include
#include
int main(){
char *word = "maya";printf("Before strrev(): %s\n", word);strrev(word);printf("After strrev() : %s\n", word);getchar ();return 0;
}
7/22/2019 Diktat Algorithm & Programming
86/89
81 | P a g e
11.2.6.Fungsi tolower
Digunakan untuk menjadikan huruf besar menjadi huruf kecil
tambahkaninclude
Contoh:
11.2.7.Fungsi toupper
Digunakan untuk mengubah huruf kecil menjadi huruf besar
Cara kerjanya sama dengan tolower.
11.2.8.Fungsi strcpy
Digunakan untuk mengcopy string ke dalam string lain.
Contoh:
Mengcopy string1 ke string2
strcpy (string2, string1);
#include #include #include
int main(){
int length, i;char *string = "ThIs IS A StRiNg";
length = strlen(string);for (i=0; i
7/22/2019 Diktat Algorithm & Programming
87/89
82 | P a g e
11.3. Latihan
11.3.1. Latihan 1 Pemahaman konsep.
1. Carilah dan pahamilah fungsi-fungsi lain di string.h2. Bagaimana cara memakai strlwr dan strupr?3. Apa fungsi dari strlwr, dan strupr?
11.3.2. Latihan 2 Code it.
Buatlah sebuah program yang digunakan untuk mengubah sebuah string
dengan menggunakan fungsi dalam library string.h. Berikut adalah deskripsi
dari program tersebut:
Pada awal program, program akan menampilkan string yang ada Program terdiri dari 6 menu:
o 1. Input the Stringo 2. Length of the Stringo 3. Reverse the Stringo 4. Uppercase the Stringo 5. Lowercase the Stringo 6. Exit
Jika usermemilih menu Input the String(menu 1), maka:o Minta user untuk menginput string baru. Validasikan panjang dari
stringtersebut adalah antara 5 dan 50 karakter.
Jika usermemilih menu Length of the String(menu 2), maka:o Validasikan apakah string sudah dimasukkan atau belum. Jika string
belum dimasukkan, maka tampilkan pesan String are not inputed
yet....
o Jika string sudah dimasukkan, maka tampilkan panjang dari stringtersebut.
Jika usermemilih menu Reverse the String (menu 3), then:o Validasikan apakah string sudah dimasukkan atau belum. Jika string
belum dimasukkan, maka tampilkan pesan String are not inputedyet....
o Jika stringsudah dimasukkan, maka balik urutan string tersebut dantampilkan ke layar.
Jika usermemilih menu Uppercase the String (menu 4), then:
7/22/2019 Diktat Algorithm & Programming
88/89
83 | P a g e
o Validasikan apakah string sudah dimasukkan atau belum. Jika stringbelum dimasukkan, maka tampilkan pesan String are not inputed
yet....
o Jika string sudah dimasukkan, maka ubah string tersebut menjadihuruf kapital dan tampilkan ke layar.
Jika usermemilih menu Lowercase the String (menu 5), then:o Validasikan apakah string sudah dimasukkan atau belum. Jika string
belum dimasukkan, maka tampilkan pesan String are not inputed
yet....
o Jika string sudah dimasukkan, maka ubah string tersebut menjadihuruf kecil dan tampilkan ke layar.
Jika usermemilih menu Exit (menu 6), then program will ends.
Rancangan Layar Main Menu
Rancangan Layar Jika UserMemilih Menu Input the String Menu
(Menu 1)
Rancangan Layar Jika UserMemilih Menu Length of the String (Menu 2)
7/22/2019 Diktat Algorithm & Programming
89/89
84 | P a g e
Rancangan Layar Jika UserMemilih Menu Reverse the String (Menu 3)
Rancangan Layar Jika UserMemilih Menu Uppercase the String
(Menu 4)
Rancangan Layar Jika UserMemilih Menu Lowercase the String
(Menu 5)
Recommended