I-1 I-1 1.1
1.1 TujuanTujuan
Tujuan modul I ini, adalah: Tujuan modul I ini, adalah: •
• Praktikan bisa membuat program sederhana berdasarkan algoritma.Praktikan bisa membuat program sederhana berdasarkan algoritma. •
• Praktikan dapat membiasakan diri untuk membuat Praktikan dapat membiasakan diri untuk membuat program secara terstruktur.program secara terstruktur. •
• Praktikan memahami penggunaan tipe data dan operator dalam algoritma danPraktikan memahami penggunaan tipe data dan operator dalam algoritma dan bahasa C.
bahasa C. •
• Praktikan dapat memahami algoritma kondisi dan pengulangan sertaPraktikan dapat memahami algoritma kondisi dan pengulangan serta mengimplementasikannya dalam bahasa pemrograman C.
mengimplementasikannya dalam bahasa pemrograman C.
1.2
1.2 TeoriTeori 1.2.1
1.2.1 Tipe DataTipe Data
Dalam bahasa C terdapat lima tipe data dasar, yaitu: char, int, float, Dalam bahasa C terdapat lima tipe data dasar, yaitu: char, int, float, double, dan void.
double, dan void.
Tabel 1.1 Tipe Data Dasar Berdasarkan bahasa C Tabel 1.1 Tipe Data Dasar Berdasarkan bahasa C
No
No TipeTipe Data
Data UkuranUkuran
Range Range (Jangkauan)
(Jangkauan) Format Format KeteranganKeterangan 1.
1. Char Char 1 1 byte byte - - 128 128 s/d s/d 127 127 %c %c Karakter/stringKarakter/string 2. Int
2. Int 2 2 byte byte - - 32768 32768 s/d s/d 3276732767 %i
%i
%d
%d Integer/bilangan Integer/bilangan bulatbulat 3.
3. Float Float 4 4 byte byte - - 3.4E-38 3.4E-38 s/ds/d 3.4E+38 3.4E+38
%f
%f Float/bilangan Float/bilangan pecahanpecahan 4. Double
4. Double 8 8 byte byte - - 1.7E-308 1.7E-308 s/ds/d 1.7+308 1.7+308
%lf
%lf Pecahan Pecahan presisi presisi gandaganda 5.
1)
1) Tipe Bilangan BulatTipe Bilangan Bulat
Tipe data ini digunakan untuk data-data angka yang tidak mengandung angka Tipe data ini digunakan untuk data-data angka yang tidak mengandung angka di belakang koma (Int).
di belakang koma (Int). 2)
2) Tipe Bilangan RiilTipe Bilangan Riil
Tipe ini adalah tipe yang merepresentasikan data-data bilangan yang Tipe ini adalah tipe yang merepresentasikan data-data bilangan yang mengandung angka di belakang koma. Tipe data yang termasuk ke dalam mengandung angka di belakang koma. Tipe data yang termasuk ke dalam kategori ini adalah: float,
kategori ini adalah: float, double.double. Contoh Algoritma 1:
Contoh Algoritma 1: Algoritma variable Algoritma variable {
{Program perbedaan output variableProgram perbedaan output variable}} Deklarasi Deklarasi A : integer A : integer B : real B : real C : char C : char X : double X : double Deskripsi Deskripsi A
A = = 10 10 /* /* variabel variabel A A diisi diisi dengan dengan 10 10 */ */ B
B = = 5.45 5.45 /* /* variabel variabel B B diisi diisi dengan dengan 5.45 5.45 */ */ C
C = = 'C' 'C' /* /* variabel variabel C C diisi diisi dengan dengan karakter karakter "C" "C" */ */ X
X = = 2.35E+10 2.35E+10 /* /* variabel variabel X X diisi diisi dengan dengan 2.35E+20 2.35E+20 */ */ Write("Nilai
Write("Nilai A A adalah adalah : : ", ", A) A) /* /* Menampilkan Menampilkan isi isi variabel variabel A A */ */ Write("Nilai
Write("Nilai B B adalah adalah : : ", ", B) B) /* /* Menampilkan Menampilkan isi isi variabel variabel B B */ */ Write("Nilai
Write("Nilai C C adalah adalah : : ", ", C) C) /* /* Menampilkan Menampilkan isi isi variabel variabel C C */ */ Write("Nilai
Write("Nilai X X adalah adalah : : ", ", X) X) /* /* Menampilkan Menampilkan isi isi variabel variabel X X */ */ Program Algoritma 1:
Program Algoritma 1:
//Program perbedaan output variable //Program perbedaan output variable
#include <stdio.h> #include <stdio.h> main() main() { int A; { int A; float B; float B; char C; char C; double X; double X; A
A = = 10; 10; /* /* variabel variabel A A diisi diisi dengan dengan 10 10 */ */ B
C
C = = 'C'; 'C'; /* /* variabel variabel C C diisi diisi dengan dengan karakter karakter "C" "C" */ */ X
X = = 2.35E+10; 2.35E+10; /* /* variabel variabel X X diisi diisi dengan dengan 2.35E+20 2.35E+20 */ */ printf("Nilai
printf("Nilai A A adalah adalah : : %i\n", %i\n", A); A); /* /* Menampilkan Menampilkan isi isi variabel variabel A A */ */ printf("Nilai
printf("Nilai B B adalah adalah : : %f\n", %f\n", B); B); /* /* Menampilkan Menampilkan isi isi variabel variabel B B */ */ printf("Nilai
printf("Nilai C C adalah adalah : : %c\n", %c\n", C); C); /* /* Menampilkan Menampilkan isi isi variabel variabel C C */ */ printf("Nilai
printf("Nilai X X adalah adalah : : %lf\n", %lf\n", X); X); /* /* Menampilkan Menampilkan isi isi variabel variabel X X */ */ }
} 3)
3) Tipe LogikaTipe Logika
Tipe ini adalah tipe yang merepresentasikan data-data yang mengandung dua Tipe ini adalah tipe yang merepresentasikan data-data yang mengandung dua buah nilai, yaitu nilai logika (boolean) – true dan false.
buah nilai, yaitu nilai logika (boolean) – true dan false. 4)
4) Tipe Karakter/StringTipe Karakter/String
Tipe character merupakan kumpulan bermacam-macam character (set of Tipe character merupakan kumpulan bermacam-macam character (set of character)
character) yang yang terdiri dterdiri dari alfabet.ari alfabet. •
• Alfabet bilangan desimal (decimal digits):0,1,2…9Alfabet bilangan desimal (decimal digits):0,1,2…9 •
• Alfabet huruf latin (Capital letter):A,B,…ZAlfabet huruf latin (Capital letter):A,B,…Z •
• Alfabet huruf latin kecil (common letter)a..zAlfabet huruf latin kecil (common letter)a..z
Tipe ini hanya terdiri dari 1 karakter. Dalam program konstanta bertipe char Tipe ini hanya terdiri dari 1 karakter. Dalam program konstanta bertipe char ditulis
ditulis diantara diantara tanda tanda petik petik misalnya misalnya ‘A’ ‘A’ ‘,’ ‘,’ ‘4’‘4’
1.2.2
1.2.2 Tipe Data BentukanTipe Data Bentukan
Tipe data bentukan adalah tipe data yang dibuat sendiri sesuai kebutuhan Tipe data bentukan adalah tipe data yang dibuat sendiri sesuai kebutuhan dalam program yang akan kita buat (disebut juga
dalam program yang akan kita buat (disebut juga user defined typesuser defined types). Adapun). Adapun yang termasuk ke dalam tipe
yang termasuk ke dalam tipe bentukan adalah:bentukan adalah: 1)
1) StrukturStruktur
Struktur adalah tipe data bentukan yang menyimpan lebih dari satu variabel Struktur adalah tipe data bentukan yang menyimpan lebih dari satu variabel bertipe sama maupun berbeda. Untuk mumbuat tipe data struktur dalam C, bertipe sama maupun berbeda. Untuk mumbuat tipe data struktur dalam C, menggunakan kata kunci
menggunakan kata kunci struct struct . Bentuk umum pendeklarasian tipe:. Bentuk umum pendeklarasian tipe: Struct nama struktur {
Struct nama struktur { Tipe_data variabel1; Tipe_data variabel1; Tipe_data variabel2; Tipe_data variabel2; ... ... } }
2)
2) EnumerasiEnumerasi
Tipe Enumerasi adalah tipe data yang nilainya terbatas pada nilao-nilai yang Tipe Enumerasi adalah tipe data yang nilainya terbatas pada nilao-nilai yang telah didefinisikan saja. Tipe ini digunakan untuk membentuk tipe data yang telah didefinisikan saja. Tipe ini digunakan untuk membentuk tipe data yang nilainya bersifat pasti. Misalnya nama hari,
nilainya bersifat pasti. Misalnya nama hari, jenis kelamin dan seterusnya.jenis kelamin dan seterusnya. Bentuk Umum :
Bentuk Umum : enum nama_tipe (nilai1, nilai2, nilai3, ...)enum nama_tipe (nilai1, nilai2, nilai3, ...) Contoh:
Contoh: enum enum jenis_kelami(pria, jenis_kelami(pria, wanita)wanita)
enum hari (minggu, senin, selasa, rabu, kamis, j
enum hari (minggu, senin, selasa, rabu, kamis, j umat, sabtu)umat, sabtu) //Membuat tipe enum dengan namahari
//Membuat tipe enum dengan namahari #include <stdio.h>
#include <stdio.h> main() {
main() {
enum Namahari{Minggu, Senin, Selasa, Rabu, Kamis, Jumat,Sabtu}; enum Namahari{Minggu, Senin, Selasa, Rabu, Kamis, Jumat,Sabtu}; printf("%d, ", Minggu); printf("%d, ", Minggu); printf("%d, ", Senin); printf("%d, ", Senin); printf("%d, ", Selasa); printf("%d, ", Selasa); printf("%d, ", Rabu); printf("%d, ", Rabu); printf("%d, ", Kamis); printf("%d, ", Kamis); printf("%d, ", Jumat); printf("%d, ", Jumat); printf("%d, ", Sabtu); printf("%d, ", Sabtu); } } Contoh Algoritma 2: Contoh Algoritma 2:
Algoritma Menampilkan nama siswa Algoritma Menampilkan nama siswa
{
{ Membuat tipe struktur dengan nama siswa Membuat tipe struktur dengan nama siswa}}
Deklarasi Deklarasi
Type Siswa <NIS[8], Nama[25], Alamat[20], Kota[15] : string> : Type Siswa <NIS[8], Nama[25], Alamat[20], Kota[15] : string> : A : Siswa A : Siswa Deskripsi Deskripsi Read(A.NIS) Read(A.NIS) Read(A.Nama) Read(A.Nama) Read(A.Alamat) Read(A.Alamat) Read(A.Kota) Read(A.Kota)
Write(A.NIS, ’ – ’, A.Nama, ’ –’, A.Alamat, ’ –
Program Algoritma 2: Program Algoritma 2:
//Membuat tipe struktur dengan nama //Membuat tipe struktur dengan nama siswasiswa
#include <stdio.h> #include <stdio.h> main() { main() { typedef struct { typedef struct { char NIS[8],Nama[25],Alamat[20],Kota[15];} char NIS[8],Nama[25],Alamat[20],Kota[15];} Siswa ; Siswa ; Siswa A; Siswa A; printf("NIS : ");scanf("%s",A.NIS); printf("NIS : ");scanf("%s",A.NIS); printf("Nama : ");scanf("%s",A.Nama); printf("Nama : ");scanf("%s",A.Nama); printf("Alamat : ");scanf("%s",A.Alamat); printf("Alamat : ");scanf("%s",A.Alamat); printf("Kota : "
printf("Kota : ");scanf("%s",A.Kota););scanf("%s",A.Kota); printf("%s - %s - %s -
printf("%s - %s - %s - %s",A.NIS,A.Nama,A.Alamat,A.Kota);%s",A.NIS,A.Nama,A.Alamat,A.Kota); }
}
1.2.3
1.2.3 OperatorOperator
Operator digunakan untuk menyatakan suatu perhitungan/operasi. Operator digunakan untuk menyatakan suatu perhitungan/operasi. Operator dapat terbagi atas: Operator penugasan, Operator aritmatika, Operator Operator dapat terbagi atas: Operator penugasan, Operator aritmatika, Operator hubungan (perbandingan), Operator logika, Operator bitwise dan operator unary. hubungan (perbandingan), Operator logika, Operator bitwise dan operator unary. •
• Operator PenugasanOperator Penugasan Operator Penugasan
Operator Penugasan (Assignment operato(Assignment operator) dalam bahasa C berupa tandar) dalam bahasa C berupa tanda sama dengan (“=”).
sama dengan (“=”). Contoh operator penugasan:Contoh operator penugasan: nilai = 50;nilai = 50; z = x * y;. Artinya:z = x * y;. Artinya: variabel “nilai” diisi oleh 50 dan variabel “z”
variabel “nilai” diisi oleh 50 dan variabel “z” diisi oleh hasil perkalian x dan ydiisi oleh hasil perkalian x dan y
•
• Operator AritmatikaOperator Aritmatika
Dalam bahasa C disediakan lima operator aritmatika, yaitu: Dalam bahasa C disediakan lima operator aritmatika, yaitu: •
• * * : : untuk untuk perkalianperkalian •
• / / : : untuk untuk pembagianpembagian •
• % % : un: untuk tuk sisa sisa pembagian pembagian (modulus)(modulus) •
• + + : : untuk untuk pertambahanpertambahan •
Catatan:
Catatan: operator % digunakan untuk mencari sisa pembagian antara duaoperator % digunakan untuk mencari sisa pembagian antara dua bilangan, misalnya : 9 % 2 = 1.
bilangan, misalnya : 9 % 2 = 1.
//program penggunaan operator aritmetika: //program penggunaan operator aritmetika:
#include "stdio.h" #include "stdio.h" #include "conio.h" #include "conio.h" main() main() { { printf("Nilai 9 + 4 = %i\n", 9 + 4); printf("Nilai 9 + 4 = %i\n", 9 + 4); printf("Nilai 9 - 4 = %i\n", 9 - 4); printf("Nilai 9 - 4 = %i\n", 9 - 4); printf("Nilai 9 * 4 = %i\n", 9 * 4); printf("Nilai 9 * 4 = %i\n", 9 * 4); printf("Nilai 9 / 4 = %i\n", 9 / 4); printf("Nilai 9 / 4 = %i\n", 9 / 4); printf("
printf("Nilai Nilai 9 9 % % 4 4 = = %i", %i", 9 9 % % 4); 4); /* /* mencetak mencetak hasil hasil 9 9 % % 4 4 */ */ }
}
•
• Operator Hubungan (Perbandingan)Operator Hubungan (Perbandingan)
Operator Hubungan digunakan untuk membandingkan hubungan antara dua Operator Hubungan digunakan untuk membandingkan hubungan antara dua buah operand (sebuah nilai atau variabel). Operator-operator hubungan buah operand (sebuah nilai atau variabel). Operator-operator hubungan dalam bahasa C adalah sebagai berikut:
dalam bahasa C adalah sebagai berikut:
Tabel 1.4 Operator-operator Perbandinngan Tabel 1.4 Operator-operator Perbandinngan
Operator
Operator Arti Arti ContohContoh <
< Kurang Kurang dari dari x x < < y y Apakah Apakah x x kurang kurang dari dari yy <=
<= Kurang Kurang dari dari samasama dengan
dengan
x
x <= <= y y Apakah Apakah x x kurang kurang dari dari samasama dengan y
dengan y >
> Lebih Lebih dari dari x x > > y y Apakah Apakah x x lebih lebih dari dari yy >=
>= Lebih Lebih dari dari samasama dengan
dengan
x
x >= >= y y Apakah Apakah x x lebih lebih dari dari sama sama dengandengan y
y =
= = = Sama dengan Sama dengan x x = = = = y y Apakah Apakah x x sama sama dengan dengan yy !=
!= Tidak Tidak sama sama dengan dengan x x != != y y Apakah Apakah x x tidak tidak sama sama dengan dengan yy
//program penggunaan operator hubungan (perbandingan): //program penggunaan operator hubungan (perbandingan):
#include “stdio.h” #include “stdio.h” #include “conio.h” #include “conio.h” void main() void main() {printf(“Nilai
{printf(“Nilai 10 10 + + 3 3 = = %i”, %i”, 10 10 + + 3); 3); /* /* mencetak mencetak hasil hasil 10 10 + + 3 3 */ */ printf(“Nilai
printf(“Nilai 10 10 - - 3 3 = = %i”, %i”, 10 10 - - 3); 3); /* /* mencetak mencetak hasil hasil 10 10 - - 3 3 */ */ printf(“Nilai
printf(“Nilai 10 10 * * 3 3 = = %i”, %i”, 10 10 * * 3); 3); /* /* mencetak mencetak hasil hasil 10 10 * * 3 3 */ */ printf(“Nilai
printf(“Nilai 10 10 / / 3 3 = = %i”, %i”, 10 10 / / 3); 3); /* /* mencetak mencetak hasil hasil 10 10 / / 3 3 */ */ printf(“Nilai
printf(“Nilai 10 10 % % 3 3 = = %i”, %i”, 10 10 % % 3); 3); /* /* mencetak mencetak hasil hasil 10 10 % % 3 3 */ */ }
•
• Operator LogikaOperator Logika
Jika operator hubungan membandingkan hubungan antara dua buah Jika operator hubungan membandingkan hubungan antara dua buah operand, maka operator logika digunakan untuk membandingkan logika operand, maka operator logika digunakan untuk membandingkan logika hasil dari operator-operator hubungan. Operator logika ada tiga macam, hasil dari operator-operator hubungan. Operator logika ada tiga macam, yaitu :
yaitu : a)
a) && : Logika AND (dan)&& : Logika AND (dan) b)
b) || || : : Logika Logika OR OR (atau)(atau) c)
c) ! ! : : Logika Logika NOT NOT (ingkaran)(ingkaran)
•
• Operator BitwiseOperator Bitwise
Operator bitwise digunakan untuk memanipulasi bit-bit dari nilai data yang Operator bitwise digunakan untuk memanipulasi bit-bit dari nilai data yang ada di memori.
ada di memori.
Operator bitwise dalam bahasa C : Operator bitwise dalam bahasa C :
<< << : : Pergeseran Pergeseran bit bit ke ke kirikiri
>> >> : : Pergeseran Pergeseran bit bit ke ke kanankanan
& & : : Bitwise Bitwise ANDAND
^ ^ : : Bitwise Bitwise XOR XOR (exclusive (exclusive OR)OR)
| | : : Bitwise Bitwise OROR
~ ~ : : Bitwise Bitwise NOTNOT
•
• Operator UnaryOperator Unary
Operator Unary merupakan operator yang hanya membutuhkan satu operand Operator Unary merupakan operator yang hanya membutuhkan satu operand saja. Dalam bahasa C terdapat beberapa operator unary yang sering saja. Dalam bahasa C terdapat beberapa operator unary yang sering digunakan, yaitu :
digunakan, yaitu :
Tabel 1.5 Beberapa Operator Unary Tabel 1.5 Beberapa Operator Unary
Operator
Operator Arti/Maksud Arti/Maksud Letak Letak Contoh Contoh EquivalenEquivalen -
- Unary Unary minus minus Sebelum Sebelum operator operator A+-B*C A+-B*C A A + + (-B)*C(-B)*C ++
++ Peningkatan Peningkatan dengandengan penambahan nilai 1 penambahan nilai 1 Sebelum dan Sebelum dan sesudah sesudah A++ A++ A A = = A A + + 11 --
-- Penurunan Penurunan dengandengan penguranga
pengurangan nilai n nilai 11
Sebelum dan Sebelum dan sesudah sesudah A-- A-- A A = = A A - - 11 Sizeof
Sizeof Ukuran Ukuran dari dari operandoperand dalam byte
dalam byte
Sebelum
--Pada operator peningkatan ‘++’ dan penurunan ‘--' jika diletakkan sebelum Pada operator peningkatan ‘++’ dan penurunan ‘--' jika diletakkan sebelum atau sesudah operand akan terdapat perbedaan. Perhatikan contoh berikut: atau sesudah operand akan terdapat perbedaan. Perhatikan contoh berikut:
/* Perbedaan operator peningkatan ++ yang diletakkan di depan dan
/* Perbedaan operator peningkatan ++ yang diletakkan di depan dan dibelakangdibelakang operand */ operand */ #include <stdio.h> #include <stdio.h> #include <conio.h> #include <conio.h> void main() void main() { int X, Nilai; { int X, Nilai; X = 5; Y = 10; X = 5; Y = 10; Nilai
Nilai = = ++X; ++X; /* /* berarti berarti X X = = X X + + 1; 1; Nilai Nilai = = X; X; */ */ printf("Nilai = %d, X = %d\n", Nilai, X);
printf("Nilai = %d, X = %d\n", Nilai, X); nilai
nilai = = x++; x++; /* /* berarti berarti Nilai Nilai = = X; X; Nilai Nilai = = X X + + 1; 1; */ */ printf("Nilai = %d, X = %d\n", Nilai, X);
printf("Nilai = %d, X = %d\n", Nilai, X); nilai
nilai = = --Y; --Y; /* /* berarti berarti Y Y = = Y Y - - 1; 1; Nilai Nilai = = Y; Y; */ */ printf("Nilai = %d, Y = %d\n", Nilai, Y);
printf("Nilai = %d, Y = %d\n", Nilai, Y); nilai
nilai = = Y--; Y--; /* /* berarti berarti Nilai Nilai = = Y; Y; Y Y = = Y Y - - 1; 1; */ */ printf("Nilai = %d, Y = %d\n", Nilai, Y);
printf("Nilai = %d, Y = %d\n", Nilai, Y); }
}
1.2.4
1.2.4 Input dan OutputInput dan Output a.
a. Memasukkan DataMemasukkan Data
Dalam bahasa C proses pemasukkan data bisa menggunakan beberapa Dalam bahasa C proses pemasukkan data bisa menggunakan beberapa fungsi yang sudah tersedia di dalam program bahasa C (fungsi pustaka). fungsi yang sudah tersedia di dalam program bahasa C (fungsi pustaka). Beberapa fungsi pustaka yang bisa digunakan adalah:
Beberapa fungsi pustaka yang bisa digunakan adalah: 1.
1. scanf()scanf()
Fungsi ini digunakan untuk menginput data berupa data numerik, Fungsi ini digunakan untuk menginput data berupa data numerik, karakter dan string secara terformat. Hal-hal yang perlu diperhatikan karakter dan string secara terformat. Hal-hal yang perlu diperhatikan dalam pemakaian fungsi scanf() :
dalam pemakaian fungsi scanf() : a.
a. Fungsi scanf() memakai penentu formatFungsi scanf() memakai penentu format b.
b. Fungsi scanf() memberi pergantian baris secara otomatisFungsi scanf() memberi pergantian baris secara otomatis c.
c. Fungsi scanf() tidak memerlukan penentu lebar fieldFungsi scanf() tidak memerlukan penentu lebar field d.
Kode penentu format : Kode penentu format :
%c : Membaca sebuah karakter %c : Membaca sebuah karakter %s : Membaca sebuah string %s : Membaca sebuah string %i, %d
%i, %d : Membaca : Membaca sebuahsebuah
bilangan bulat (integer) bilangan bulat (integer) %f, %
%f, %e e : Membaca : Membaca sebuahsebuah
bilangan pecahan (real) bilangan pecahan (real)
%o : membaca sebuah bilangan %o : membaca sebuah bilangan
octal octal
%x : Membaca sebuah bilangan %x : Membaca sebuah bilangan
heksadesimal heksadesimal %u
%u Membaca sMembaca sebuah ebuah bilanganbilangan tak bertanda
tak bertanda
2.
2. gets()gets()
Fungsi gets() digunakan untuk memasukkan data bertipe karakter dan Fungsi gets() digunakan untuk memasukkan data bertipe karakter dan tidak dapat digunakan untuk memasukkan data numerik.
tidak dapat digunakan untuk memasukkan data numerik. 3.
3. getchar()getchar()
Fungsi getchar() digunakan untuk membaca data yang bertipe
Fungsi getchar() digunakan untuk membaca data yang bertipe karakterkarakter 4.
4. getch() dan getche()getch() dan getche()
Fungsi getch() dan getche() digunakan untuk membaca data
Fungsi getch() dan getche() digunakan untuk membaca data karakter.karakter.
Contoh Program : Contoh Program : #include “stdio.h” #include “stdio.h” #include “conio.h” #include “conio.h” void main() void main() { char
{ char Huruf1, Huruf2;Huruf1, Huruf2; printf(“Masuk
printf(“Masukkan sebuah karakter : kan sebuah karakter : “);“); Huruf1
Huruf1 = = getche(); getche(); // // karakter karakter yang yang dimasukkan dimasukkan akan akan terlihat terlihat di di layarlayar printf(“\nKa
printf(“\nKarakter yang Anda rakter yang Anda masukkan adalah %c\n”, Huruf1);masukkan adalah %c\n”, Huruf1); printf(“\nMasuk
printf(“\nMasukkan sebuah karakter lagi : kan sebuah karakter lagi : “);“); Huruf2
Huruf2 = = getch(); getch(); // // karakter karakter yang yang dimasukkan dimasukkan tidak tidak terlihat terlihat di di layarlayar printf(“\nKa
printf(“\nKarakter yang Anda rakter yang Anda masukkan adalah : masukkan adalah : %c, Huruf2);%c, Huruf2); getch();
getch(); }
}
b.
b. Menampilkan DataMenampilkan Data •
• Menampilkan Data ke Layar MonitorMenampilkan Data ke Layar Monitor Menggunakan
Menggunakan fungsi printf()fungsi printf() digunakan untuk menampilkan semuadigunakan untuk menampilkan semua jenis data (numerik dan karakter).
jenis data (numerik dan karakter). Fungsi puts()Fungsi puts() digunakan untuk digunakan untuk menampilkan data string dan secara otomatis akan diakhiri dengan menampilkan data string dan secara otomatis akan diakhiri dengan perpindahan baris. Fungsi
perpindahan baris. Fungsi putchar()putchar() digunakan untuk menampilkandigunakan untuk menampilkan sebuah karakter.
Bentuk umum : printf(“%m.nf”, argument); Bentuk umum : printf(“%m.nf”, argument); Keterangan:
Keterangan: m
m : : menyatakan menyatakan panjang panjang rangerange n
n : : menyatakan menyatakan jumlah jumlah digit digit di di belakang belakang koma.koma. argument
argument : : nilai nilai atau atau variabel variabel yang yang akan akan ditampilkan.ditampilkan.
Contoh:
Contoh: printf(“%5.2f”, nilai); artinya variabelprintf(“%5.2f”, nilai); artinya variabel nilainilai akan ditampilkanakan ditampilkan sebanyak 5 digit dengan 2 digit
sebanyak 5 digit dengan 2 digit di belakang koma.di belakang koma. /* Program untuk menampilkan data
/* Program untuk menampilkan data berupa bilangan pecahan */ berupa bilangan pecahan */ #include “stdio.h” #include “stdio.h” #include “conio.h” #include “conio.h” void main() void main() { float Nilai1,Nilai2; { float Nilai1,Nilai2; clrscr(); clrscr();
puts(“Masukkan nilai pertama : ); scanf(“%f”, &Nilai1); puts(“Masukkan nilai pertama : ); scanf(“%f”, &Nilai1); puts(“Masukkan nilai kedua : ); scanf(“%f”, &Nilai2); puts(“Masukkan nilai kedua : ); scanf(“%f”, &Nilai2); printf(“Nilai pertama anda adalah %5.2f”, Nilai1); printf(“Nilai pertama anda adalah %5.2f”, Nilai1); printf(“Nilai kedua anda adalah %6.4f ?”,
printf(“Nilai kedua anda adalah %6.4f ?”, Nilai2);Nilai2); }
}
/* Program untuk menampilkan data bilangan integer
/* Program untuk menampilkan data bilangan integer dan string */ dan string */ #include “stdio.h” #include “stdio.h” #include “conio.h” #include “conio.h” void main() void main() { int Umur; { int Umur; char Nama[20]; char Nama[20]; clrscr(); clrscr();
puts(“Masukkan nama Anda : ); gets(Nama); puts(“Masukkan nama Anda : ); gets(Nama);
puts(“Masukkan umur Anda : “); scanf(“%d”, &Umur); puts(“Masukkan umur Anda : “); scanf(“%d”, &Umur); printf(“Nama
printf(“Nama Anda Anda : : %s %s \n”, \n”, Nama); Nama); //tipe //tipe data data stringstring printf(“Umur Anda : %d \n”, U
printf(“Umur Anda : %d \n”, Umur);mur); }
}
•
• Menampilkan data ke printerMenampilkan data ke printer
Untuk menampilkan data ke printer dapat menggunakan fungsi fprintf(), Untuk menampilkan data ke printer dapat menggunakan fungsi fprintf(), fputs() dan fputc().
fputs() dan fputc().
o
o Fungsi fprintf()Fungsi fprintf(): digunakan untuk mencetak semua jenis tipe data : digunakan untuk mencetak semua jenis tipe data keke
printer dan secara otomatis memberikan efek
o
o Fungsi fputs()Fungsi fputs(): digunakan untuk mencetak tipe data string ke printer: digunakan untuk mencetak tipe data string ke printer o
o Fungsi fputc()Fungsi fputc(): digunakan untuk mencetak tipe data karakter ke: digunakan untuk mencetak tipe data karakter ke
printer printer
1.2.5
1.2.5 KondisiKondisi a.
a. IF...THEN..., IF...THEN...ELSE... dan IF Bersarang (Nested IF)IF...THEN..., IF...THEN...ELSE... dan IF Bersarang (Nested IF)
Struktur IF, kita dapat membuat algoritma-algoritma yang melakukan perintah Struktur IF, kita dapat membuat algoritma-algoritma yang melakukan perintah berdasarkan kondisi tertentu. Perintah akan dilakukan jika hanya jika ekspresi berdasarkan kondisi tertentu. Perintah akan dilakukan jika hanya jika ekspresi boolean bernilai true (jika ekspresi boolean bernilai false maka perintah tidak boolean bernilai true (jika ekspresi boolean bernilai false maka perintah tidak akan dikerjakan). akan dikerjakan). IF...THEN.. IF...THEN.. .. IF...THEN...ELSE... IF...THEN...ELSE...
IF Bersarang (Nested IF) IF Bersarang (Nested IF)
IF <ekspresi boolean> then IF <ekspresi boolean> then
Perintah_1 Perintah_1 Else Else Perintah_2 Perintah_2 Endif Endif
IF <ekspresi boolean 1> then IF <ekspresi boolean 1> then
Perintah 1 Perintah 1
Else if <ekspresi boolean 2> then Else if <ekspresi boolean 2> then
Perintah 2 Perintah 2
Else if <ekspresi boolean n> then Else if <ekspresi boolean n> then
Perintah n Perintah n Else
Else Perintah Perintah n+1n+1 Endif
Endif
IF <ekspresi boolean> then IF <ekspresi boolean> then
Perintah Perintah Endif
Contoh Algoritma 3: Contoh Algoritma 3: Program Algoritma 3: Program Algoritma 3: //Algoritma Bilangan_Genap_Ganjil //Algoritma Bilangan_Genap_Ganjil #include <stdio.h> #include <stdio.h> main() { main() { int Bil; int Bil; printf("masukan bilangan : "
printf("masukan bilangan : ");scanf("%d",&Bil););scanf("%d",&Bil); if (Bil % 2 == 0)
if (Bil % 2 == 0) {
{ printf("bilangan printf("bilangan genap");}genap");} else
else {
{ printf("bilangan printf("bilangan ganjil");}ganjil");} } } Contoh Algoritma 4: Contoh Algoritma 4: Algoritma Maksimum Algoritma Maksimum {
{ Menentukan bilangan terbesar dari tiga buah bilangan bulat Menentukan bilangan terbesar dari tiga buah bilangan bulat }} Deklarasi Deklarasi A,B,C,Maks : integer A,B,C,Maks : integer Dekripsi Dekripsi Read(A, B, C) Read(A, B, C)
If (A>B) and (A>C) then If (A>B) and (A>C) then
Maks Maks←←AA
Else if (B>A) and (B>C) then Else if (B>A) and (B>C) then
Algoritma Bilangan_Genap_Ganjil Algoritma Bilangan_Genap_Ganjil {
{ Mencetak pesan ‘bilangan genap’ jika sebuah bilangan bulat yang dibaca Mencetak pesan ‘bilangan genap’ jika sebuah bilangan bulat yang dibaca dari piranti masukan merupakan bilangan genap dan sebaliknya
dari piranti masukan merupakan bilangan genap dan sebaliknya}} Deklarasi Deklarasi Bil : integer Bil : integer Deskripsi Deskripsi Read(Bil) Read(Bil)
If Bil mod 2 = 0 then If Bil mod 2 = 0 then
Write(‘bilangan genap’) Write(‘bilangan genap’) Else Else Write(‘bilangan ganjil’) Write(‘bilangan ganjil’) Endif Endif
Maks Maks←←BB Else Else Maks Maks←←CC Endif Endif
Write(’bilangan terbesar adalah, Maks) Write(’bilangan terbesar adalah, Maks) Program Algoritma 4: Program Algoritma 4: //Algoritma Maksimum //Algoritma Maksimum #include <stdio.h> #include <stdio.h> main() { main() { int A, B, C,Maks; int A, B, C,Maks; printf("A : ");scanf("%d",&A); printf("A : ");scanf("%d",&A); printf("B : "
printf("B : ");scanf("%d",&B););scanf("%d",&B); printf("C : "
printf("C : ");scanf("%d",&C););scanf("%d",&C); if ((A>B) && (A>C))
if ((A>B) && (A>C)) maks = A; maks = A;
else if ((B>A) && (B>C)) else if ((B>A) && (B>C))
maks = B; maks = B; else else maks = C; maks = C;
printf("bilangan terbesar adalah %d", Maks); printf("bilangan terbesar adalah %d", Maks); } } Contoh Algoritma 5: Contoh Algoritma 5: Algoritma Jumlah_Hari Algoritma Jumlah_Hari {
{ Menentukan jumlah hari dalam satu bulan Menentukan jumlah hari dalam satu bulan}} Deklarasi
Deklarasi AngkaBulan
AngkaBulan : : integer integer {1..12}{1..12} Tahun
Tahun : : integer integer {>0}{>0} JumlahHari : integer JumlahHari : integer Deskripsi Deskripsi Read(AngkaBulan,Tahun) Read(AngkaBulan,Tahun) Case (AngkaBulan) Case (AngkaBulan) AngkaBulan = [1,3,5,7,8,10,12] : JumlahHari AngkaBulan = [1,3,5,7,8,10,12] : JumlahHari ←←3131 AngkaBulan = [4,6,9,11] : JumlahHari AngkaBulan = [4,6,9,11] : JumlahHari ←←3030 AngkaBulan = 2: if Tahun mod 4 = 0 then AngkaBulan = 2: if Tahun mod 4 = 0 then
JumlahHari JumlahHari←←2929 Else Else JumlahHari JumlahHari←←2828
Endif Endif Endcase Endcase Write(JumlahHari) Write(JumlahHari) Program Algoritma 5: Program Algoritma 5: //Algoritma Jumlah_Hari //Algoritma Jumlah_Hari #include <stdio.h> #include <stdio.h> main() { main() {
int AngkaBulan,Tahun, JumlahHari; int AngkaBulan,Tahun, JumlahHari; printf("Angka Bulan : "
printf("Angka Bulan : " );scanf("%d",&AngkaBulan);scanf("%d",&AngkaBulan);); printf("Tahun : ");scanf("%d",&Tahun); printf("Tahun : ");scanf("%d",&Tahun); switch (AngkaBulan) { switch (AngkaBulan) { case 1: case 1: case 3: case 3: case 5: case 5: case 7: case 7: case 8: case 8: case 10: case 10:
case 12: JumlahHari = 31;break; case 12: JumlahHari = 31;break; case 4: case 4: case 6: case 6: case 9: case 9:
case 11 : JumlahHari = 30;break; case 11 : JumlahHari = 30;break;
case 2 : if (Tahun % 4 == 0) JumlahHari = 29; case 2 : if (Tahun % 4 == 0) JumlahHari = 29;
else JumlahHari = 28;break; else JumlahHari = 28;break; }
}
printf("Jumlah hari %d",JumlahHari); printf("Jumlah hari %d",JumlahHari); } } Contoh Algoritma 6: Contoh Algoritma 6: Algoritma Kalkulator Algoritma Kalkulator {
{ Mensimulasikan kalkulator sederhana. Menghitung hasil operasi aritmetika Mensimulasikan kalkulator sederhana. Menghitung hasil operasi aritmetika bila dibaca operand1, operator dan
bila dibaca operand1, operator dan operand2.operand2.}} Deklarasi
Deklarasi Op1,
Op1, Op2, Op2, Pilih Pilih : : integer integer {operand}{operand} Hasil
Hasil : : float float {hasil {hasil ’+’,’-’,’*’,’/’}’+’,’-’,’*’,’/’} Deskripsi Deskripsi Read(Op1,Op2, Pilih) Read(Op1,Op2, Pilih) Case (Pilih) Case (Pilih)
Pilih = 1 : Hasil
Pilih = 1 : Hasil ←←Op2 + Op2Op2 + Op2 Pilih = 2 : Hasil
Pilih = 2 : Hasil ←←Op2 - Op2Op2 - Op2 Pilih = 3 : Hasil
Pilih = 3 : Hasil ←←Op2 * Op2Op2 * Op2 Pilih = 4 : if
Pilih = 4 : if Op2Op2≠≠0 : hasil0 : hasil←←Op1/Op2Op1/Op2 else write(’error’) else write(’error’) Endcase Endcase Read(Hasil) Read(Hasil) Program Algoritma 6: Program Algoritma 6: //Algoritma Bilangan_Genap_Ganjil //Algoritma Bilangan_Genap_Ganjil #include <stdio.h> #include <stdio.h> main() { main() {
int Op1, Op2, Pilih; int Op1, Op2, Pilih; float Hasil; float Hasil; printf("Operand 1: ");scanf("%d",&Op1); printf("Operand 1: ");scanf("%d",&Op1); printf("Operand 2: ");scanf("%d",&Op2); printf("Operand 2: ");scanf("%d",&Op2); printf("1. Operator +\n"); printf("1. Operator +\n"); printf("2. Operator -\n"); printf("2. Operator -\n"); printf("3. Operator *\n"); printf("3. Operator *\n"); printf("4. Operator /\n"); printf("4. Operator /\n"); printf("Pilih Operator : "
printf("Pilih Operator : ");scanf("%d",&Pilih););scanf("%d",&Pilih); switch (Pilih) {
switch (Pilih) {
case 1 : {Hasil = Op1 + Op2; break;} case 1 : {Hasil = Op1 + Op2; break;} case 2 : {Hasil = Op1 - Op2; break;} case 2 : {Hasil = Op1 - Op2; break;} case 3 : {Hasil = Op1 * Op2; break;} case 3 : {Hasil = Op1 * Op2; break;} case 4 : {if
case 4 : {if (Op2 != 0) printf("%d",Op1/Op2);(Op2 != 0) printf("%d",Op1/Op2); else else printf("error");break;} printf("error");break;} } }
printf("Hasil dari perhitungan tersebut adalah %f",Hasil); printf("Hasil dari perhitungan tersebut adalah %f",Hasil); }
}
1.2.6
1.2.6 PengulanganPengulangan
Struktur pengulangan secara umum terdiri dari dua
Struktur pengulangan secara umum terdiri dari dua bagian:bagian: 1.
1. Kondisi pengulangan, yaitu ekspresi boolean yang harus dipenuhi untuk Kondisi pengulangan, yaitu ekspresi boolean yang harus dipenuhi untuk melaksanakan pengulangan.
melaksanakan pengulangan. 2.
a.
a. Struktur FORStruktur FOR
Struktur ini digunakan untuk menghasilkan pengulangan sejumlah kali yang Struktur ini digunakan untuk menghasilkan pengulangan sejumlah kali yang dispesifikasikan. Jumlah pengulangan diketahui atau dapat ditentukan sebelum dispesifikasikan. Jumlah pengulangan diketahui atau dapat ditentukan sebelum eksekusi.
eksekusi.
For
For Menaik Menaik For For MenurunMenurun For pencacah
For pencacah←←awal to akhir doawal to akhir do Aksi
Aksi Endfor Endfor
For pencacah
For pencacah←←akhir downto awal doakhir downto awal do Aksi Aksi endfor endfor Contoh Algoritma 7: Contoh Algoritma 7: Algoritma Penjumlahan_Deret Algoritma Penjumlahan_Deret {
{ Menjumlahan deret: 1+2+3+..+N dengan N adalah bilangan bulat Menjumlahan deret: 1+2+3+..+N dengan N adalah bilangan bulat positif positif yang dibaca dari piranti masukan jumlah deret
yang dibaca dari piranti masukan jumlah deret dicetak ke piranti keluarandicetak ke piranti keluaran}} Deklarasi
Deklarasi N
N : : integer integer {banyaknya {banyaknya suku suku deret}deret} K
K : : integer integer {suku {suku deret}deret} Jumlah
Jumlah : : integer integer {Jumlah {Jumlah deret}deret} Deskripsi
Deskripsi Read(N)
Read(N) {banyaknya {banyaknya suku suku deret}deret} Jumlah
Jumlah←←0 0 {Inisialisasi jumlah {Inisialisasi jumlah deret}deret} For k
For k ←←1 1 to to N N {ulangi {ulangi sebanyak sebanyak N N kali}kali} Jumlah
Jumlah←←Jumlah + k Jumlah + k Endfor Endfor Write(Jumlah) Write(Jumlah) Program Algoritma 7: Program Algoritma 7: //Algoritma Penjumlahan_Deret //Algoritma Penjumlahan_Deret #include <stdio.h> #include <stdio.h> main() { main() { int N, K, Jumlah; int N, K, Jumlah;
printf("banyaknya suku deret : "
printf("banyaknya suku deret : " );scanf("%d",&N););scanf("%d",&N); Jumlah = 0; Jumlah = 0; for (K=1; K<=N; K++) { for (K=1; K<=N; K++) { Jumlah = Jumlah + K; } Jumlah = Jumlah + K; } printf("%d",Jumlah); printf("%d",Jumlah); } }
Contoh Algoritma 8: Contoh Algoritma 8:
Algoritma Hitung_Mundur Algoritma Hitung_Mundur {
{hitung mundur peluncuran roket hitung mundur peluncuran roket }} Deklarasi Deklarasi K : integer K : integer Deskripsi Deskripsi For K
For K←←10 downto 0 do10 downto 0 do Write(K) Write(K) Endfor Endfor Write(’Go’) Write(’Go’) Program Algoritma 8: Program Algoritma 8: //Algoritma Hitung_Mundur //Algoritma Hitung_Mundur #include <stdio.h> #include <stdio.h> main() { main() { int K; int K; for (K=10;K>=0;K--) { for (K=10;K>=0;K--) { printf("%d ",K); } printf("%d ",K); } printf("Go"); printf("Go"); } } b.
b. Struktur WhileStruktur While Bentuk umum: Bentuk umum: While kondisi do While kondisi do Aksi Aksi Endwhile Endwhile
Aksi akan dilaksanakan berulangkali selama kondisi bernilai true. Jika kondisi Aksi akan dilaksanakan berulangkali selama kondisi bernilai true. Jika kondisi bernilai false badan pengulangan tidak akan dilaksanakan, yang berarti bernilai false badan pengulangan tidak akan dilaksanakan, yang berarti pengulangan selesai. Yang harus diperhatikan adalah pengulangan harus pengulangan selesai. Yang harus diperhatikan adalah pengulangan harus berhenti. Pengulangan yang tidak pernah berhenti menandakan bahwa logika berhenti. Pengulangan yang tidak pernah berhenti menandakan bahwa logika algoritma tersebut salah.
Contoh Algoritma 9: Contoh Algoritma 9:
Algoritma Menghitung_Rata_Rata Algoritma Menghitung_Rata_Rata {
{ Menghitung rata-rata N buah bilangan bulat yang dibaca dari piranti Menghitung rata-rata N buah bilangan bulat yang dibaca dari piranti masukan. N >0 masukan. N >0}} Deklarasi Deklarasi N ,X , K, Jumlah : integer N ,X , K, Jumlah : integer Rerata : real Rerata : real Deskripsi Deskripsi Read(N) Read(N) Jumlah Jumlah←←00 K K←←11 While K While K≤≤N doN do Read(X) Read(X) Jumlah
Jumlah←←Jumlah + XJumlah + X K K←←K+1K+1 Endwhile Endwhile {K>N} {K>N} Rerata
Rerata←←Jumlah/NJumlah/N write(Rerata) write(Rerata) Program Algoritma 9: Program Algoritma 9: //Algoritma Menghitung_Rata_Rata //Algoritma Menghitung_Rata_Rata #include <stdio.h> #include <stdio.h> main() { main() { int N , X, K, Jumlah; int N , X, K, Jumlah; float Rerata; float Rerata;
printf("Masukan banyaknya data :
printf("Masukan banyaknya data : ");scanf("%d",&N);");scanf("%d",&N); Jumlah = 0; Jumlah = 0; K =1; K =1; while (K <= N) { while (K <= N) {
printf("Data ke-%d : ",K);scanf("%d",&X); printf("Data ke-%d : ",K);scanf("%d",&X); Jumlah = Jumlah + X; Jumlah = Jumlah + X; K = K+1; K = K+1; } } Rerata = Jumlah/N; Rerata = Jumlah/N; printf("Rata-rata : %f",Rerata); printf("Rata-rata : %f",Rerata); } }
c.
c. Struktur do...whileStruktur do...while
Pada dasarnya struktur perulangan do....while sama saja dengan struktur Pada dasarnya struktur perulangan do....while sama saja dengan struktur while, hanya saja pada proses perulangan dengan while, seleksi berada di while, hanya saja pada proses perulangan dengan while, seleksi berada di while yang letaknya di atas kemudian proses baru akan dijalankan, sementara while yang letaknya di atas kemudian proses baru akan dijalankan, sementara pada perulangan do....while, proses akan dilakukan terlebih dahulu baru pada perulangan do....while, proses akan dilakukan terlebih dahulu baru kemudian, seleksi while dilakukan. Jadi dengan menggunakan struktur kemudian, seleksi while dilakukan. Jadi dengan menggunakan struktur do…while sekurang-kurangny
do…while sekurang-kurangnya akan terjadi a akan terjadi satu kali perulangan.satu kali perulangan. Bentuk Umum: Bentuk Umum: Do Do Aksi Aksi While While Contoh Algoritma 10: Contoh Algoritma 10: Algoritma Sandi_Lewat Algoritma Sandi_Lewat {
{ Memvalidasi sandi-lewat yang dimasukkan oleh pengguna. Sandi-lewat Memvalidasi sandi-lewat yang dimasukkan oleh pengguna. Sandi-lewat yang benar disimpan sebagai konstanta. Jika sandi-lewat yang dimasukkan yang benar disimpan sebagai konstanta. Jika sandi-lewat yang dimasukkan
benar, sistem boleh dimasuki, tetapi
benar, sistem boleh dimasuki, tetapi jika salah, ulangi lagijika salah, ulangi lagi}} Deklarasi
Deklarasi
Const Password = ’abc123’ Const Password = ’abc123’ Sandilewat : string Sandilewat : string Sah : boolean Sah : boolean Deskripsi Deskripsi Sah
Sah←←falsefalse do
do
Read(Sandilewat) Read(Sandilewat)
If Sandilewat = Password then If Sandilewat = Password then
Sah
Sah ←←truetrue Endif Endif while Sah=false while Sah=false Write(’OK’) Write(’OK’) Program Algoritma 10: Program Algoritma 10: //Algoritma Sandi_Lewat //Algoritma Sandi_Lewat #include <stdio.h> #include <stdio.h> main() { main() {
#define Password "abc123"; #define Password "abc123";
char Sandilewat; char Sandilewat; bool Sah; bool Sah; Sah = false; Sah = false; do do { {
printf("Masukan kata sandi : ");scanf("%c",Sandilewat); printf("Masukan kata sandi : ");scanf("%c",Sandilewat); If (Sandilewat = Password) If (Sandilewat = Password) Sah = true; Sah = true; } }
while (Sah == false); while (Sah == false); printf("OK"); printf("OK"); } } 1.3 1.3 KasusKasus 1.3.1 1.3.1 Kasus 1Kasus 1
Jika kita berbelanja di pasar swalayan/supemarket, nilai total belanja kita Jika kita berbelanja di pasar swalayan/supemarket, nilai total belanja kita seringkali bukan kelipatan pecahan rupiah yang berlaku. Misalnya nilai total seringkali bukan kelipatan pecahan rupiah yang berlaku. Misalnya nilai total belanja sebesar Rp. 19.212. andaikan saat ini pecahan rupiah yang berlaku paling belanja sebesar Rp. 19.212. andaikan saat ini pecahan rupiah yang berlaku paling kecil Rp. 25. selain i
kecil Rp. 25. selain i
tu, juga ada pecahan Rp. 50 dan Rp. 100. umumnya kasir pasar swalayan tu, juga ada pecahan Rp. 50 dan Rp. 100. umumnya kasir pasar swalayan membulatkan nilai belanja ke pecahan yan g terbesar jadi Rp. 19.212 dibulatkan membulatkan nilai belanja ke pecahan yan g terbesar jadi Rp. 19.212 dibulatkan menjadi Rp. 19.225. hal ini jels merugikan konsumen. Misalkan anda memiliki menjadi Rp. 19.225. hal ini jels merugikan konsumen. Misalkan anda memiliki pasar swalayan yang jujur dan tidak merugikan pembeli, sehingga jika ada nilai pasar swalayan yang jujur dan tidak merugikan pembeli, sehingga jika ada nilai belanja yang bukan kelipatan pecahan yang ada, maka nilai belanja itu dibulatkan belanja yang bukan kelipatan pecahan yang ada, maka nilai belanja itu dibulatkan ke pecahan terendah. Jadi Rp. 19.212 dibulatkan menjadi Rp. 19.200. tuliskan ke pecahan terendah. Jadi Rp. 19.212 dibulatkan menjadi Rp. 19.200. tuliskan algoritma dan program serta cantumkan output/hasilnya yang membaca nilai algoritma dan program serta cantumkan output/hasilnya yang membaca nilai belanja (integer) lalu membulatkannya ke nilai
belanja (integer) lalu membulatkannya ke nilai uang dengan pecahan terendah.uang dengan pecahan terendah.
1.3.2
1.3.2 Kasus 2Kasus 2
Seseorang mempunyai tabungan di sebuah bank. Ia dapat menyetor dan Seseorang mempunyai tabungan di sebuah bank. Ia dapat menyetor dan mengambil uangnya sendiri di bank tersebut, namun jumlah saldo minimum yang mengambil uangnya sendiri di bank tersebut, namun jumlah saldo minimum yang harus disisakan di dalam adalah Rp. 10.000. ini artinya, jika saldonya Rp. 10.000, harus disisakan di dalam adalah Rp. 10.000. ini artinya, jika saldonya Rp. 10.000, ia tidak dapat mengambil uang lagi. Kode transaksi untuk menyetor adalah 0 dan ia tidak dapat mengambil uang lagi. Kode transaksi untuk menyetor adalah 0 dan
kode transaksi untuk mengambil adalah 1. Buatlah algoritma yang kode transaksi untuk mengambil adalah 1. Buatlah algoritma yang mensimulasikan transaksi yang dilakukan orang tersebut. Algoritma menerima mensimulasikan transaksi yang dilakukan orang tersebut. Algoritma menerima masukan berupa kode transaksi dan jumlah uang yang disetor/diambil. masukan berupa kode transaksi dan jumlah uang yang disetor/diambil. Rancanglah algoritma tersebut sehingga memungkinkan penabung dapat Rancanglah algoritma tersebut sehingga memungkinkan penabung dapat melakukan transaksi berulangkali sampai saldo yang tersisa Rp. 10,000 atau melakukan transaksi berulangkali sampai saldo yang tersisa Rp. 10,000 atau jumlah uang yang diambil lebih besar dari saldonya. Catatan nilai uang yang jumlah uang yang diambil lebih besar dari saldonya. Catatan nilai uang yang diambil selalu merupakan kelipatan 20.000. Dari algoritma tersebut, buatlah diambil selalu merupakan kelipatan 20.000. Dari algoritma tersebut, buatlah program dan cantumkan output/hasilnya.
program dan cantumkan output/hasilnya.
1.4
1.4 Tugas – tugas PendahuluanTugas – tugas Pendahuluan
Tugas pendahuluan akan dikerjakan selama 30 menit di awal jam Tugas pendahuluan akan dikerjakan selama 30 menit di awal jam praktikum dengan menggunakan software Self
praktikum dengan menggunakan software Self AssessmentAssessment
1.5
1.5 Latihan Praktikum I dan IILatihan Praktikum I dan II 1.5.1
1.5.1 Latihan Praktikum I (Pertemuan Pertama)Latihan Praktikum I (Pertemuan Pertama)
Buatlah program berdasarkan algoritma-algoritma di bawah ini: Buatlah program berdasarkan algoritma-algoritma di bawah ini: Algoritma 1:
Algoritma 1:
Algoritma Hitung_Biaya_Percakapan Algoritma Hitung_Biaya_Percakapan {
{ Menghitung biaya percakapan telpon dengan menghitung berapa detik seseorang Menghitung biaya percakapan telpon dengan menghitung berapa detik seseorang bicara kemudian menghitung biayanya dengan mengkalikan jumlah detik dengan bicara kemudian menghitung biayanya dengan mengkalikan jumlah detik dengan biaya percakapan perdetiknya. Waktu percakapan harus dikonversi ke
biaya percakapan perdetiknya. Waktu percakapan harus dikonversi ke detik.detik.}} Deklarasi
Deklarasi
Const Biaya_perdetik : 100 Const Biaya_perdetik : 100
Type Waktu <Jam, Menit, Detik :
Type Waktu <Jam, Menit, Detik : integer>integer> Var Awal, Akhir : Waktu
Var Awal, Akhir : Waktu
Detik_awal, Detik_akhir, Lama_bicara, Tdetik1, Tdetik2 : integer Detik_awal, Detik_akhir, Lama_bicara, Tdetik1, Tdetik2 : integer Biaya : real
Biaya : real Deskripsi
Deskripsi
Read(Awal.Jam, Awal.Menit, Awal.Detik) Read(Awal.Jam, Awal.Menit, Awal.Detik) Read(Akhir.Jam, Akhir.Menit,
Read(Akhir.Jam, Akhir.Menit, Akhir.Detik)Akhir.Detik) Tdetik1
Tdetik1←←Akhir.Jam * 3600 + Akhir.Menit * 60 Akhir.Jam * 3600 + Akhir.Menit * 60 + Akhir.Detik + Akhir.Detik Tdetik2
Tdetik2←←Awal.Jam * 3600 + Awal.Menit * 60 + Awal.Jam * 3600 + Awal.Menit * 60 + Awal.Detik Awal.Detik Lama_bicara
Lama_bicara←← Tdetik2 – Tdetik1Tdetik2 – Tdetik1 If Lama_bicara > = 0 then
If Lama_bicara > = 0 then Biaya
Write(’Biaya yang harus dibayar’, Biaya,
Write(’Biaya yang harus dibayar’, Biaya, ’rupiah’)’rupiah’) Endif Endif Algoritma 2: Algoritma 2: Algoritma Pecahan_Uang Algoritma Pecahan_Uang {
{ Membaca nilai uang (rupiah) dalam kelipatan 25-an, lalu menentukan berapa Membaca nilai uang (rupiah) dalam kelipatan 25-an, lalu menentukan berapa nilai tukar pecahan. Pecahan yang tersedia adalah Rp. 1000, Rp. 500, Rp. 100, nilai tukar pecahan. Pecahan yang tersedia adalah Rp. 1000, Rp. 500, Rp. 100, dan Rp. 50. Jika terakhir masih ada sisa, beri saja Permen (Plus Senyum dan Rp. 50. Jika terakhir masih ada sisa, beri saja Permen (Plus Senyum manis) manis)}} Deklarasi Deklarasi Uang : integer Uang : integer
Satuan, Puluhan, Ratusan, Limaratusan, Ribuan, Sisa :
Satuan, Puluhan, Ratusan, Limaratusan, Ribuan, Sisa : integerinteger Deskripsi
Deskripsi Read(Uang) Read(Uang) Ribuan
Ribuan ←←Uang div 1000Uang div 1000 Sisa
Sisa←←Ribuan mod 1000Ribuan mod 1000 If Sisa <> 0 then
If Sisa <> 0 then Limaratusan
Limaratusan←←Sisa div 500Sisa div 500 Sisa
Sisa←←Limaratusan mod 500Limaratusan mod 500 Endif
Endif
If Sisa <> 0 then If Sisa <> 0 then Ratusan
Ratusan←←Sisa div 100Sisa div 100 Sisa
Sisa←←Ratusan mod 100Ratusan mod 100 Endif
Endif
If Sisa <> 0 then If Sisa <> 0 then Puluhan
Puluhan←←Sisa div 50Sisa div 50 Sisa
Sisa←←Puluhan mod 50Puluhan mod 50 Endif
Endif
If Sisa <> 0 then If Sisa <> 0 then Satuan
Satuan←←’beri permen plus ’beri permen plus senyum’senyum’ Endif
Endif
Write(Ribuan, ’buah ribuan ’, Limaratusan, ’ buah lima ratusan ’, Ratusan, ’ buah Write(Ribuan, ’buah ribuan ’, Limaratusan, ’ buah lima ratusan ’, Ratusan, ’ buah seratusan ’, Puluhan, ’ buah puluhan ’, Sisa , Satuan)
seratusan ’, Puluhan, ’ buah puluhan ’, Sisa , Satuan)
Algoritma 3: Algoritma 3:
Algoritma Angka_mutu_mahasiswa Algoritma Angka_mutu_mahasiswa {
{ Nilai_akhir ditentukan dari nilai_tugas, UTS dan UAS dengan formula Nilai_akhir ditentukan dari nilai_tugas, UTS dan UAS dengan formula nilai_akhir
nilai_akhir ←←20% Nilai_Tugas + 30%20% Nilai_Tugas + 30% UTS + 50% UAS. Angka mutu (A, B, C,UTS + 50% UAS. Angka mutu (A, B, C, D, E) ditentukan oleh nilai_akhir mahasiswa. Setelah itu menentukan angka D, E) ditentukan oleh nilai_akhir mahasiswa. Setelah itu menentukan angka
mutu dengan formula: nilai_akhir >= 80
mutu dengan formula: nilai_akhir >= 80 →→’A’, 60 <= nilai_akhir < 80’A’, 60 <= nilai_akhir < 80 →→’B’,’B’, 40 <= nilai_akhir < 60
40 <= nilai_akhir < 60 →→ ’C’, 20 <= nilai_akhir < 40’C’, 20 <= nilai_akhir < 40→→’D’, nilai_akhir < 20’D’, nilai_akhir < 20
→ →’E ’E ’’}}
Deklarasi Deklarasi Nama : string Nama : string
Nilai_tugas, UTS, UAS : integer Nilai_tugas, UTS, UAS : integer Nilai_akhir : real Nilai_akhir : real Angka_mutu : char Angka_mutu : char Deskripsi Deskripsi
Read(Nama, Nilai_tugas, UTS, UAS) Read(Nama, Nilai_tugas, UTS, UAS) Nilai_akhir
Nilai_akhir←←0.2 * Nilai_tugas + 0.3 * UTS 0.2 * Nilai_tugas + 0.3 * UTS + 0.5 * UAS+ 0.5 * UAS If Nilai_akhir >= 80 then
If Nilai_akhir >= 80 then Angka_mutu
Angka_mutu ←←’A’’A’ Else if
Else if Nilai_akhir >= 60 thenNilai_akhir >= 60 then
Angka_mutu
Angka_mutu →→’B’’B’
Else if
Else if Nilai_akhir >= 40 thenNilai_akhir >= 40 then
Angka_mutu
Angka_mutu →→’C’’C’
Else if
Else if Nilai_akhir >= 20 thenNilai_akhir >= 20 then
Angka_mutu
Angka_mutu →→’D’’D’ Else
Else
Angka_mutu
Angka_mutu →→’E’’E’ Endif
Endif
Write(Nama, ’nilai akhir: ’, Nilai_akhir, ’ angka mutu: ’, Angka_mutu) Write(Nama, ’nilai akhir: ’, Nilai_akhir, ’ angka mutu: ’, Angka_mutu) Algoritma 4
Algoritma 4::
Algoritma Empat_Persegi_Panjang Algoritma Empat_Persegi_Panjang {
{ Algoritma untuk menampilkan menu perhitungan empat persegi panjang, Algoritma untuk menampilkan menu perhitungan empat persegi panjang, memilih menu dan melakukan
memilih menu dan melakukan proses perhitunganproses perhitungan}} Deklarasi
Deklarasi
NoMenu : integer NoMenu : integer Panjang, Lebar : real Panjang, Lebar : real
Luas, Keliling, Diagonal : real Luas, Keliling, Diagonal : real Deskripsi
Deskripsi {cetak menu} {cetak menu} write(’
write(’ Menu Menu Empat Empat Persegi Persegi Panjang Panjang ’)’) write(’
write(’ 1. 1. Hitung Hitung Luas Luas ’)’) write(’
write(’ 2. 2. Hitung Hitung Keliling Keliling ’)’) write(’
write(’ 3. 3. Hitung Hitung Panjang Panjang Diagonal Diagonal ’)’) write(’
write(’ 4. 4. Keluar Keluar Program Program ’)’) write(’
write(’ Masukan Masukan pilihan pilihan anda(1/2/3/4)? anda(1/2/3/4)? ’)’) read(NoMenu)
read(NoMenu) case (NoMenu) case (NoMenu)
NoMenu = 1 : read(Panjang, Lebar) NoMenu = 1 : read(Panjang, Lebar)
Luas
Luas←←Panjang * LebarPanjang * Lebar Write(Luas)
NoMenu = 2 : read(Panjang, Lebar) NoMenu = 2 : read(Panjang, Lebar)
Keliling
Keliling ←←(Panjang + Lebar) * 2(Panjang + Lebar) * 2 Write(Keliling)
Write(Keliling) NoMenu = 3 : read(Panjang, Lebar) NoMenu = 3 : read(Panjang, Lebar)
Diagonal
Diagonal ←←(Panjang * (Panjang * Panjang + Panjang + Lebar * LLebar * Lebar)ebar) Write(Diagonal)
Write(Diagonal) NoMenu = 4 :
NoMenu = 4 : write(’Keluar program...sampai jumpa’)write(’Keluar program...sampai jumpa’) Endcase Endcase Algoritma 5: Algoritma 5: Algoritma Upah_Karyawan Algoritma Upah_Karyawan {
{ Menghitung upah mingguan karyawan. Masukan yang dibaca dari piranti Menghitung upah mingguan karyawan. Masukan yang dibaca dari piranti masukan adalah nama karyawan, golongan dan jumlah jam kerja. Nama masukan adalah nama karyawan, golongan dan jumlah jam kerja. Nama karyawan dan upahnya dicetak ke piranti keluaran
karyawan dan upahnya dicetak ke piranti keluaran}} Deklarasi
Deklarasi Const
Const JamNormal JamNormal = = 48 48 {jumlah {jumlah jam jam kerja kerja normal normal per per minggu}minggu} Const
Const UpahLembur UpahLembur = 30= 3000 00 {upah {upah per per jam lembur jam lembur Rp. 30Rp. 3000}00} Nama
Nama : : stringstring Gol
Gol : : char char {’A’,’B’,’C’,’D’}{’A’,’B’,’C’,’D’} JJK
JJK : : integer integer {jumlah {jumlah jam jam kerja}kerja} JamLembur
JamLembur : : integerinteger UpahPerJam
UpahPerJam : : real real {upah {upah per per jam}jam} UpahTotal
UpahTotal : : realreal Deskripsi Deskripsi Read(Nama, Gol, JJK) Read(Nama, Gol, JJK) Case (Gol) Case (Gol)
Gol = ’A’ : UpahPerJam
Gol = ’A’ : UpahPerJam←←4000.04000.0 Gol = ’B’ : UpahPerJam Gol = ’B’ : UpahPerJam←←5000.05000.0 Gol = ’C’ : UpahPerJam Gol = ’C’ : UpahPerJam←←6000.06000.0 Gol = ’D’ : UpahPerJam Gol = ’D’ : UpahPerJam←←7000.07000.0 Endcase Endcase If JJK
If JJK ≤≤ JamNormal thenJamNormal then UpahTotal
UpahTotal←←JJK * UpahPerJamJJK * UpahPerJam Else
Else
JamLembur
JamLembur←←JJK – JamNormalJJK – JamNormal UpahTotal
UpahTotal←←JamNormal * UpahPerJam + JamLembur * UpahLemburJamNormal * UpahPerJam + JamLembur * UpahLembur Endif
Endif
Write(Nama,UpahTotal) Write(Nama,UpahTotal)
1.5.2
1.5.2 Latihan Praktikum II (Pertemuan Kedua)Latihan Praktikum II (Pertemuan Kedua)
Buatlah program berdasarkan algoritma di bawah ini Buatlah program berdasarkan algoritma di bawah ini Algoritma 1:
Algoritma 1:
Algoritma Perpangkatan Algoritma Perpangkatan
{Menghitung perpangkatan an dengan n bilangan bulat
{Menghitung perpangkatan an dengan n bilangan bulat sembarang > 0. nilai asembarang > 0. nilai a dan n dibaca dari piranti masukan. Nilai perpangkatan dicetak ke piranti dan n dibaca dari piranti masukan. Nilai perpangkatan dicetak ke piranti keluaran}
keluaran} Deklarasi Deklarasi A
A : : real real {bilangan {bilangan yang yang dipangkatkan}dipangkatkan} N, M : integer {pemangkat}
N, M : integer {pemangkat} Hasil
Hasil : : real real {hasil {hasil perpangkatan}perpangkatan} K
K : : integer integer {pencatatan {pencatatan pengulangan}pengulangan} Deskripsi Deskripsi Read(A, N) Read(A, N) If N<0 then If N<0 then M
M←←-N {positifkan pangkatnya}-N {positifkan pangkatnya} else {N else {N ≥≥0}0} M M←←NN endif endif {hitung perpangkatan} {hitung perpangkatan} Hasil Hasil ←←11 for K for K←←1 to M do1 to M do Hasil
Hasil←←Hasil * AHasil * A endfor
endfor
{tuliskan hasil perpangkatan, bergantung pada n} {tuliskan hasil perpangkatan, bergantung pada n} if N < 0 then if N < 0 then write(1/Hasil) write(1/Hasil) else else write(Hasil) write(Hasil) endif endif Algoritma 2: Algoritma 2: Algoritma Konversi_Desimal_Ke_Biner Algoritma Konversi_Desimal_Ke_Biner {
{ Mengkonversi bilangan bulat tidak negatif dalam sistem desimal menjadi Mengkonversi bilangan bulat tidak negatif dalam sistem desimal menjadi bilangan dalam sistem biner
bilangan dalam sistem biner }} Deklarasi
Deklarasi
X, Biner : integer X, Biner : integer
Deskripsi Deskripsi Read(X) Read(X) Biner Biner ←←’’’’ do do Sisa
Sisa←←X mod 2X mod 2 X
X←←X div 2X div 2 Case (Sisa) Case (Sisa) 0 : Biner
0 : Biner ←←’0’ + Biner’0’ + Biner 1 : Biner
1 : Biner ←←’1’ + Biner’1’ + Biner endcase endcase while X while X ≠≠00 write(Biner) write(Biner) Algoritma 3: Algoritma 3: Algoritma Hitung_Rata_Rata Algoritma Hitung_Rata_Rata {
{ Menghitung nilai rata-rata data integer ( Menghitung nilai rata-rata data integer (≠≠9999). Data dibaca dari piranti9999). Data dibaca dari piranti masukan. Pembacaan data diakhiri dengan 999. nilai rata-rata dicetak ke masukan. Pembacaan data diakhiri dengan 999. nilai rata-rata dicetak ke piranti masukan
piranti masukan}} Deklarasi
Deklarasi Ndata
Ndata : : integer integer {pencatat {pencatat jumlah jumlah pembacaan pembacaan data}data} X
X : : integer integer {data {data yang yang dibaca}dibaca} Jumlah
Jumlah : : real real {jumlah {jumlah nilai nilai data data yang yang dibaca}dibaca} U
U : : real real {rata-rata {rata-rata data data integer}integer} Deskripsi
Deskripsi Jumlah Jumlah ←←00 Ndata
Ndata ←←0 0 {inisialisasi {inisialisasi pencatat pencatat pembacaan}pembacaan} Read(X)
Read(X) While X
While X ≠≠9999 do9999 do Ndata
Ndata←←Ndata Ndata +1 +1 {naikan {naikan pencatat pencatat jumlah jumlah pembacaan pembacaan data}data} Jumlah
Jumlah←←Jumlah + XJumlah + X Read(X)
Read(X) {baca {baca data data integer integer selanjutnya}selanjutnya} Endwhile {X = 9999}
Endwhile {X = 9999} If Ndata
If Ndata ≠≠0 then0 then U
U←←Jumlah/Ndata Jumlah/Ndata {rata-rata {rata-rata data data bilangan bilangan bulat}bulat} Else
Else
Write(’data tidak ada’) Write(’data tidak ada’) Endif
Algoritma 4: Algoritma 4:
Algoritma Data_Minimum Algoritma Data_Minimum {
{ Menentukan bilangan terkecil dari N data integer yang dibaca dari piranti Menentukan bilangan terkecil dari N data integer yang dibaca dari piranti masukan. Nilai N ditentukan terlebih dahulu (N>0)
masukan. Nilai N ditentukan terlebih dahulu (N>0)}} Deklarasi
Deklarasi N
N : : integer integer {banyaknya {banyaknya data data masukan, masukan, > > 0}0} X
X : : integer integer {data {data yang yang dibaca}dibaca} Min : integer {data terkecil/minimum} Min : integer {data terkecil/minimum} K
K : : integer integer {pencacah {pencacah pengulangan}pengulangan} Deskripsi
Deskripsi Read(N) Read(N) Read(X)
Read(X) {baca {baca data data pertama}pertama} Min
Min ←←X X {asumsikan {asumsikan min min adalah adalah data data pertama}pertama} For k For k ←←2 to N do2 to N do Read(X) Read(X) If X < Min then If X < Min then Min Min←←XX Endif Endif Endfor Endfor Write(Min) Write(Min) Algoritma 5: Algoritma 5: Algoritma Upah_Karyawan Algoritma Upah_Karyawan {
{ Menentukan upah mingguang sejumlah karyawan. Data yang diperlukan Menentukan upah mingguang sejumlah karyawan. Data yang diperlukan adalah nama karyawan dan jumlah jam kerja. Perhitungan upah karyawan adalah nama karyawan dan jumlah jam kerja. Perhitungan upah karyawan diulangi untuk karyawan lain sampai tidak ada lagi karyawan yang dihitung diulangi untuk karyawan lain sampai tidak ada lagi karyawan yang dihitung upahnya upahnya}} Deklarasi Deklarasi Const JamKerjaNormal = 48 Const JamKerjaNormal = 48 Const UpahPerJam = 2000 Const UpahPerJam = 2000 Const UpahLembur = 3000 Const UpahLembur = 3000 Namakar : string Namakar : string JumlahJamKerja : integer JumlahJamKerja : integer JumlahJamLembur : integer JumlahJamLembur : integer UpahTotal : real UpahTotal : real Jawab : char Jawab : char Stop : boolean Stop : boolean Deskripsi Deskripsi
Stop
Stop ←←falsefalse While not Stop do While not Stop do
Read(Namakar, JumlahJamKerja) Read(Namakar, JumlahJamKerja) If JumlahJamKerja
If JumlahJamKerja ≤≤JamKerjaNormal thenJamKerjaNormal then Upah
Upah←←JumlahJamKerja * UpahPerjamJumlahJamKerja * UpahPerjam Else
Else {jumlah jam {jumlah jam kerja kerja > > 48}48} JumlahJamLembur
JumlahJamLembur←←JumlahJamKerja – 48JumlahJamKerja – 48 Upahtotal
Upahtotal←←JamKerjaNormal * 2000 + JumlahJamLembur * 3000JamKerjaNormal * 2000 + JumlahJamLembur * 3000 Endif
Endif
Write(UpahTotal) Write(UpahTotal)
Write(’ulangi untuk karyawan lainnya ? (y/t) : ’) Write(’ulangi untuk karyawan lainnya ? (y/t) : ’) Read(Jawab)
Read(Jawab)
If Jawab=’t’ or Jawab=’T’ then If Jawab=’t’ or Jawab=’T’ then
Stop
Stop←←truetrue Endif Endif Endwhile Endwhile {Jawab = ’t’ or T} {Jawab = ’t’ or T}