28
I-1 MODUL I TIPE DATA, OPERATOR, KONDISI DAN PENGULANGAN 1.1 Tujuan Tujuan modul I ini, adalah: Praktikan bisa membuat program sederhana berdasarkan algoritma. Praktikan dapat membiasakan diri untuk membuat program secara terstruktur. Praktikan memahami penggunaan tipe data dan operator dalam algoritma dan bahasa C. Praktikan dapat memahami algoritma kondisi dan pengulangan serta mengimplementasikannya dalam bahasa pemrograman C. 1.2 Teori 1.2.1 Tipe Data Dalam bahasa C terdapat lima tipe data dasar, yaitu: char, int, float, double, dan void. Tabel 1.1 Tipe Data Dasar Berdasarkan bahasa C No Tipe Data Ukuran Range (Jangkauan) Format Keterangan 1. Char 1 byte - 128 s/d 127 %c Karakter/string 2. Int 2 byte - 32768 s/d 32767 %i %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.7+308 %lf Pecahan presisi ganda 5. Void 0 byte - - Tidak bertipe

29380764 Modul Algoritma Pemrograman Bahasa C Tipe Data Operator Kondisi Dan Perulangan

Embed Size (px)

Citation preview

Page 1: 29380764 Modul Algoritma Pemrograman Bahasa C Tipe Data Operator Kondisi Dan Perulangan

I-1

MODUL I

TIPE DATA, OPERATOR,

KONDISI DAN PENGULANGAN

1.1 Tujuan

Tujuan modul I ini, adalah:

• Praktikan bisa membuat program sederhana berdasarkan algoritma.

• Praktikan dapat membiasakan diri untuk membuat program secara terstruktur.

• Praktikan memahami penggunaan tipe data dan operator dalam algoritma dan

bahasa C.

• Praktikan dapat memahami algoritma kondisi dan pengulangan serta

mengimplementasikannya dalam bahasa pemrograman C.

1.2 Teori

1.2.1 Tipe Data

Dalam bahasa C terdapat lima tipe data dasar, yaitu: char, int, float,

double, dan void.

Tabel 1.1 Tipe Data Dasar Berdasarkan bahasa C

No Tipe

Data Ukuran

Range

(Jangkauan) Format Keterangan

1. Char 1 byte - 128 s/d 127 %c Karakter/string

2. Int 2 byte - 32768 s/d 32767

%i

%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.7+308

%lf Pecahan presisi ganda

5. Void 0 byte - - Tidak bertipe

Page 2: 29380764 Modul Algoritma Pemrograman Bahasa C Tipe Data Operator Kondisi Dan Perulangan

I-2

1) Tipe Bilangan Bulat

Tipe data ini digunakan untuk data-data angka yang tidak mengandung angka

di belakang koma (Int).

2) Tipe Bilangan Riil

Tipe ini adalah tipe yang merepresentasikan data-data bilangan yang

mengandung angka di belakang koma. Tipe data yang termasuk ke dalam

kategori ini adalah: float, double.

Contoh Algoritma 1:

Algoritma variable

{Program perbedaan output variable}

Deklarasi

A : integer

B : real

C : char

X : double

Deskripsi

A = 10 /* variabel A diisi dengan 10 */

B = 5.45 /* variabel B diisi dengan 5.45 */

C = 'C' /* variabel C diisi dengan karakter "C" */

X = 2.35E+10 /* variabel X diisi dengan 2.35E+20 */

Write("Nilai A adalah : ", A) /* Menampilkan isi variabel A */

Write("Nilai B adalah : ", B) /* Menampilkan isi variabel B */

Write("Nilai C adalah : ", C) /* Menampilkan isi variabel C */

Write("Nilai X adalah : ", X) /* Menampilkan isi variabel X */

Program Algoritma 1:

//Program perbedaan output variable

#include <stdio.h>

main()

{ int A;

float B;

char C;

double X;

A = 10; /* variabel A diisi dengan 10 */

B = 5.45; /* variabel B diisi dengan 5.45 */

Page 3: 29380764 Modul Algoritma Pemrograman Bahasa C Tipe Data Operator Kondisi Dan Perulangan

I-3

C = 'C'; /* variabel C diisi dengan karakter "C" */

X = 2.35E+10; /* variabel X diisi dengan 2.35E+20 */

printf("Nilai A adalah : %i\n", A); /* Menampilkan isi variabel A */

printf("Nilai B adalah : %f\n", B); /* Menampilkan isi variabel B */

printf("Nilai C adalah : %c\n", C); /* Menampilkan isi variabel C */

printf("Nilai X adalah : %lf\n", X); /* Menampilkan isi variabel X */

}

3) Tipe Logika

Tipe ini adalah tipe yang merepresentasikan data-data yang mengandung dua

buah nilai, yaitu nilai logika (boolean) – true dan false.

4) Tipe Karakter/String

Tipe character merupakan kumpulan bermacam-macam character (set of

character) yang terdiri dari alfabet.

• Alfabet bilangan desimal (decimal digits):0,1,2…9

• Alfabet huruf latin (Capital letter):A,B,…Z

• Alfabet huruf latin kecil (common letter)a..z

Tipe ini hanya terdiri dari 1 karakter. Dalam program konstanta bertipe char

ditulis diantara tanda petik misalnya ‘A’ ‘,’ ‘4’

1.2.2 Tipe Data Bentukan

Tipe data bentukan adalah tipe data yang dibuat sendiri sesuai kebutuhan

dalam program yang akan kita buat (disebut juga user defined types). Adapun

yang termasuk ke dalam tipe bentukan adalah:

1) Struktur

Struktur adalah tipe data bentukan yang menyimpan lebih dari satu variabel

bertipe sama maupun berbeda. Untuk mumbuat tipe data struktur dalam C,

menggunakan kata kunci struct. Bentuk umum pendeklarasian tipe:

Struct nama struktur {

Tipe_data variabel1;

Tipe_data variabel2;

...

}

Page 4: 29380764 Modul Algoritma Pemrograman Bahasa C Tipe Data Operator Kondisi Dan Perulangan

I-4

2) Enumerasi

Tipe Enumerasi adalah tipe data yang nilainya terbatas pada nilao-nilai yang

telah didefinisikan saja. Tipe ini digunakan untuk membentuk tipe data yang

nilainya bersifat pasti. Misalnya nama hari, jenis kelamin dan seterusnya.

Bentuk Umum : enum nama_tipe (nilai1, nilai2, nilai3, ...)

Contoh: enum jenis_kelami(pria, wanita)

enum hari (minggu, senin, selasa, rabu, kamis, jumat, sabtu)

//Membuat tipe enum dengan namahari

#include <stdio.h>

main() {

enum Namahari{Minggu, Senin, Selasa, Rabu, Kamis, Jumat,Sabtu};

printf("%d, ", Minggu);

printf("%d, ", Senin);

printf("%d, ", Selasa);

printf("%d, ", Rabu);

printf("%d, ", Kamis);

printf("%d, ", Jumat);

printf("%d, ", Sabtu);

}

Contoh Algoritma 2:

Algoritma Menampilkan nama siswa

{Membuat tipe struktur dengan nama siswa}

Deklarasi

Type Siswa <NIS[8], Nama[25], Alamat[20], Kota[15] : string> : A : Siswa

Deskripsi

Read(A.NIS)

Read(A.Nama)

Read(A.Alamat)

Read(A.Kota)

Write(A.NIS, ’ – ’, A.Nama, ’ –’, A.Alamat, ’ –’,A.Kota)

Page 5: 29380764 Modul Algoritma Pemrograman Bahasa C Tipe Data Operator Kondisi Dan Perulangan

I-5

Program Algoritma 2:

//Membuat tipe struktur dengan nama siswa

#include <stdio.h>

main() {

typedef struct {

char NIS[8],Nama[25],Alamat[20],Kota[15];}

Siswa ;

Siswa A;

printf("NIS : ");scanf("%s",A.NIS);

printf("Nama : ");scanf("%s",A.Nama);

printf("Alamat : ");scanf("%s",A.Alamat);

printf("Kota : ");scanf("%s",A.Kota);

printf("%s - %s - %s - %s",A.NIS,A.Nama,A.Alamat,A.Kota);

}

1.2.3 Operator

Operator digunakan untuk menyatakan suatu perhitungan/operasi.

Operator dapat terbagi atas: Operator penugasan, Operator aritmatika, Operator

hubungan (perbandingan), Operator logika, Operator bitwise dan operator unary.

• Operator Penugasan

Operator Penugasan (Assignment operator) dalam bahasa C berupa tanda

sama dengan (“=”). Contoh operator penugasan: nilai = 50; z = x * y;. Artinya:

variabel “nilai” diisi oleh 50 dan variabel “z” diisi oleh hasil perkalian x dan y

• Operator Aritmatika

Dalam bahasa C disediakan lima operator aritmatika, yaitu:

• * : untuk perkalian

• / : untuk pembagian

• % : untuk sisa pembagian (modulus)

• + : untuk pertambahan

• - : untuk pengurangan

Page 6: 29380764 Modul Algoritma Pemrograman Bahasa C Tipe Data Operator Kondisi Dan Perulangan

I-6

Catatan: operator % digunakan untuk mencari sisa pembagian antara dua

bilangan, misalnya : 9 % 2 = 1.

//program penggunaan operator aritmetika:

#include "stdio.h"

#include "conio.h"

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", 9 % 4); /* mencetak hasil 9 % 4 */

}

• Operator Hubungan (Perbandingan)

Operator Hubungan digunakan untuk membandingkan hubungan antara dua

buah operand (sebuah nilai atau variabel). Operator-operator hubungan

dalam bahasa C adalah sebagai berikut:

Tabel 1.4 Operator-operator Perbandinngan

Operator Arti Contoh

< Kurang dari x < y Apakah x kurang dari y

<= Kurang dari sama

dengan

x <= y Apakah x kurang dari sama

dengan y

> Lebih dari x > y Apakah x lebih dari y

>= Lebih dari sama

dengan

x >= y Apakah x lebih dari sama dengan

y

= = Sama dengan x = = y Apakah x sama dengan y

!= Tidak sama dengan x != y Apakah x tidak sama dengan y

//program penggunaan operator hubungan (perbandingan):

#include “stdio.h”

#include “conio.h”

void main()

{printf(“Nilai 10 + 3 = %i”, 10 + 3); /* mencetak hasil 10 + 3 */

printf(“Nilai 10 - 3 = %i”, 10 - 3); /* mencetak hasil 10 - 3 */

printf(“Nilai 10 * 3 = %i”, 10 * 3); /* mencetak hasil 10 * 3 */

printf(“Nilai 10 / 3 = %i”, 10 / 3); /* mencetak hasil 10 / 3 */

printf(“Nilai 10 % 3 = %i”, 10 % 3); /* mencetak hasil 10 % 3 */

}

Page 7: 29380764 Modul Algoritma Pemrograman Bahasa C Tipe Data Operator Kondisi Dan Perulangan

I-7

• 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)

• Operator Bitwise

Operator bitwise digunakan untuk memanipulasi bit-bit dari nilai data yang

ada di memori.

Operator bitwise dalam bahasa C :

� << : Pergeseran bit ke kiri

� >> : Pergeseran bit ke kanan

� & : Bitwise AND

� ^ : Bitwise XOR (exclusive OR)

� | : Bitwise OR

� ~ : Bitwise NOT

• Operator Unary

Operator Unary merupakan operator yang hanya membutuhkan satu operand

saja. Dalam bahasa C terdapat beberapa operator unary yang sering

digunakan, yaitu :

Tabel 1.5 Beberapa Operator Unary

Operator Arti/Maksud Letak Contoh Equivalen

- Unary minus Sebelum operator A+-B*C A + (-B)*C

++ Peningkatan dengan

penambahan nilai 1

Sebelum dan

sesudah

A++ A = A + 1

-- Penurunan dengan

pengurangan nilai 1

Sebelum dan

sesudah

A-- A = A - 1

Sizeof Ukuran dari operand

dalam byte

Sebelum Sizeof(l) -

Page 8: 29380764 Modul Algoritma Pemrograman Bahasa C Tipe Data Operator Kondisi Dan Perulangan

I-8

Pada operator peningkatan ‘++’ dan penurunan ‘--' jika diletakkan sebelum

atau sesudah operand akan terdapat perbedaan. Perhatikan contoh berikut:

/* Perbedaan operator peningkatan ++ yang diletakkan di depan dan dibelakang

operand */ #include <stdio.h>

#include <conio.h>

void main()

{ int X, Nilai;

X = 5; Y = 10;

Nilai = ++X; /* berarti X = X + 1; Nilai = X; */

printf("Nilai = %d, X = %d\n", Nilai, X);

nilai = x++; /* berarti Nilai = X; Nilai = X + 1; */

printf("Nilai = %d, X = %d\n", Nilai, X);

nilai = --Y; /* berarti Y = Y - 1; Nilai = Y; */

printf("Nilai = %d, Y = %d\n", Nilai, Y);

nilai = Y--; /* berarti Nilai = Y; Y = Y - 1; */

printf("Nilai = %d, Y = %d\n", Nilai, Y);

}

1.2.4 Input dan Output

a. Memasukkan Data

Dalam bahasa C proses pemasukkan data bisa menggunakan beberapa

fungsi yang sudah tersedia di dalam program bahasa C (fungsi pustaka).

Beberapa fungsi pustaka yang bisa digunakan adalah:

1. scanf()

Fungsi ini digunakan untuk menginput data berupa data numerik,

karakter dan string secara terformat. Hal-hal yang perlu diperhatikan

dalam pemakaian fungsi scanf() :

a. Fungsi scanf() memakai penentu format

b. Fungsi scanf() memberi pergantian baris secara otomatis

c. Fungsi scanf() tidak memerlukan penentu lebar field

d. Variabelnya harus menggunakan operator alamat &

Page 9: 29380764 Modul Algoritma Pemrograman Bahasa C Tipe Data Operator Kondisi Dan Perulangan

I-9

Kode penentu format :

%c : Membaca sebuah karakter

%s : Membaca sebuah string

%i, %d : Membaca sebuah

bilangan bulat (integer)

%f, %e : Membaca sebuah

bilangan pecahan (real)

%o : membaca sebuah bilangan

octal

%x : Membaca sebuah bilangan

heksadesimal

%u Membaca sebuah bilangan

tak bertanda

2. gets()

Fungsi gets() digunakan untuk memasukkan data bertipe karakter dan

tidak dapat digunakan untuk memasukkan data numerik.

3. getchar()

Fungsi getchar() digunakan untuk membaca data yang bertipe karakter

4. getch() dan getche()

Fungsi getch() dan getche() digunakan untuk membaca data karakter.

Contoh Program : #include “stdio.h”

#include “conio.h” void main()

{ char Huruf1, Huruf2;

printf(“Masukkan sebuah karakter : “);

Huruf1 = getche(); // karakter yang dimasukkan akan terlihat di layar

printf(“\nKarakter yang Anda masukkan adalah %c\n”, Huruf1);

printf(“\nMasukkan sebuah karakter lagi : “);

Huruf2 = getch(); // karakter yang dimasukkan tidak terlihat di layar printf(“\nKarakter yang Anda masukkan adalah : %c, Huruf2);

getch();

}

b. Menampilkan Data

• Menampilkan Data ke Layar Monitor

Menggunakan fungsi printf() digunakan untuk menampilkan semua

jenis data (numerik dan karakter). Fungsi puts() digunakan untuk

menampilkan data string dan secara otomatis akan diakhiri dengan

perpindahan baris. Fungsi putchar() digunakan untuk menampilkan

sebuah karakter. Mengatur tampilan bilangan pecahan (float).

Page 10: 29380764 Modul Algoritma Pemrograman Bahasa C Tipe Data Operator Kondisi Dan Perulangan

I-10

Bentuk umum : printf(“%m.nf”, argument);

Keterangan:

m : menyatakan panjang range

n : menyatakan jumlah digit di belakang koma.

argument : nilai atau variabel yang akan ditampilkan.

Contoh: printf(“%5.2f”, nilai); artinya variabel nilai akan ditampilkan

sebanyak 5 digit dengan 2 digit di belakang koma.

/* Program untuk menampilkan data berupa bilangan pecahan */

#include “stdio.h”

#include “conio.h”

void main()

{ float Nilai1,Nilai2;

clrscr();

puts(“Masukkan nilai pertama : ); scanf(“%f”, &Nilai1);

puts(“Masukkan nilai kedua : ); scanf(“%f”, &Nilai2);

printf(“Nilai pertama anda adalah %5.2f”, Nilai1);

printf(“Nilai kedua anda adalah %6.4f ?”, Nilai2);

}

/* Program untuk menampilkan data bilangan integer dan string */

#include “stdio.h”

#include “conio.h”

void main()

{ int Umur;

char Nama[20];

clrscr();

puts(“Masukkan nama Anda : ); gets(Nama);

puts(“Masukkan umur Anda : “); scanf(“%d”, &Umur);

printf(“Nama Anda : %s \n”, Nama); //tipe data string

printf(“Umur Anda : %d \n”, Umur);

}

• Menampilkan data ke printer

Untuk menampilkan data ke printer dapat menggunakan fungsi fprintf(),

fputs() dan fputc().

o Fungsi fprintf(): digunakan untuk mencetak semua jenis tipe data ke

printer dan secara otomatis memberikan efek perpindahan baris.

Page 11: 29380764 Modul Algoritma Pemrograman Bahasa C Tipe Data Operator Kondisi Dan Perulangan

I-11

o Fungsi fputs(): digunakan untuk mencetak tipe data string ke printer

o Fungsi fputc(): digunakan untuk mencetak tipe data karakter ke

printer

1.2.5 Kondisi

a. IF...THEN..., IF...THEN...ELSE... dan IF Bersarang (Nested IF)

Struktur IF, kita dapat membuat algoritma-algoritma yang melakukan perintah

berdasarkan kondisi tertentu. Perintah akan dilakukan jika hanya jika ekspresi

boolean bernilai true (jika ekspresi boolean bernilai false maka perintah tidak

akan dikerjakan).

IF...THEN..

.

IF...THEN...ELSE...

IF Bersarang (Nested IF)

IF <ekspresi boolean> then

Perintah_1

Else

Perintah_2

Endif

IF <ekspresi boolean 1> then

Perintah 1

Else if <ekspresi boolean 2> then

Perintah 2

Else if <ekspresi boolean n> then

Perintah n

Else Perintah n+1

Endif

IF <ekspresi boolean> then

Perintah

Endif

Page 12: 29380764 Modul Algoritma Pemrograman Bahasa C Tipe Data Operator Kondisi Dan Perulangan

I-12

Contoh Algoritma 3:

Program Algoritma 3:

//Algoritma Bilangan_Genap_Ganjil

#include <stdio.h>

main() {

int Bil;

printf("masukan bilangan : ");scanf("%d",&Bil);

if (Bil % 2 == 0)

{ printf("bilangan genap");}

else

{ printf("bilangan ganjil");}

}

Contoh Algoritma 4:

Algoritma Maksimum

{Menentukan bilangan terbesar dari tiga buah bilangan bulat}

Deklarasi

A,B,C,Maks : integer

Dekripsi

Read(A, B, C)

If (A>B) and (A>C) then

Maks ← A

Else if (B>A) and (B>C) then

Algoritma Bilangan_Genap_Ganjil

{Mencetak pesan ‘bilangan genap’ jika sebuah bilangan bulat yang dibaca

dari piranti masukan merupakan bilangan genap dan sebaliknya}

Deklarasi

Bil : integer

Deskripsi

Read(Bil)

If Bil mod 2 = 0 then

Write(‘bilangan genap’)

Else

Write(‘bilangan ganjil’)

Endif

Page 13: 29380764 Modul Algoritma Pemrograman Bahasa C Tipe Data Operator Kondisi Dan Perulangan

I-13

Maks ← B

Else

Maks ← C

Endif

Write(’bilangan terbesar adalah, Maks)

Program Algoritma 4:

//Algoritma Maksimum

#include <stdio.h>

main() {

int A, B, C,Maks;

printf("A : ");scanf("%d",&A);

printf("B : ");scanf("%d",&B);

printf("C : ");scanf("%d",&C);

if ((A>B) && (A>C))

maks = A;

else if ((B>A) && (B>C))

maks = B;

else

maks = C;

printf("bilangan terbesar adalah %d", Maks);

}

Contoh Algoritma 5:

Algoritma Jumlah_Hari

{Menentukan jumlah hari dalam satu bulan}

Deklarasi

AngkaBulan : integer {1..12}

Tahun : integer {>0}

JumlahHari : integer

Deskripsi

Read(AngkaBulan,Tahun)

Case (AngkaBulan)

AngkaBulan = [1,3,5,7,8,10,12] : JumlahHari ← 31

AngkaBulan = [4,6,9,11] : JumlahHari ← 30

AngkaBulan = 2: if Tahun mod 4 = 0 then

JumlahHari ← 29

Else

JumlahHari ← 28

Page 14: 29380764 Modul Algoritma Pemrograman Bahasa C Tipe Data Operator Kondisi Dan Perulangan

I-14

Endif

Endcase

Write(JumlahHari)

Program Algoritma 5:

//Algoritma Jumlah_Hari

#include <stdio.h>

main() {

int AngkaBulan,Tahun, JumlahHari;

printf("Angka Bulan : ");scanf("%d",&AngkaBulan);

printf("Tahun : ");scanf("%d",&Tahun);

switch (AngkaBulan) {

case 1:

case 3:

case 5:

case 7:

case 8:

case 10:

case 12: JumlahHari = 31;break;

case 4:

case 6:

case 9:

case 11 : JumlahHari = 30;break;

case 2 : if (Tahun % 4 == 0) JumlahHari = 29;

else JumlahHari = 28;break;

}

printf("Jumlah hari %d",JumlahHari);

}

Contoh Algoritma 6:

Algoritma Kalkulator {Mensimulasikan kalkulator sederhana. Menghitung hasil operasi aritmetika

bila dibaca operand1, operator dan operand2.}

Deklarasi

Op1, Op2, Pilih : integer {operand}

Hasil : float {hasil ’+’,’-’,’*’,’/’}

Deskripsi

Read(Op1,Op2, Pilih)

Case (Pilih)

Page 15: 29380764 Modul Algoritma Pemrograman Bahasa C Tipe Data Operator Kondisi Dan Perulangan

I-15

Pilih = 1 : Hasil ← Op2 + Op2

Pilih = 2 : Hasil ← Op2 - Op2

Pilih = 3 : Hasil ← Op2 * Op2

Pilih = 4 : if Op2 ≠ 0 : hasil ← Op1/Op2

else write(’error’)

Endcase

Read(Hasil)

Program Algoritma 6:

//Algoritma Bilangan_Genap_Ganjil

#include <stdio.h>

main() {

int Op1, Op2, Pilih;

float Hasil;

printf("Operand 1: ");scanf("%d",&Op1);

printf("Operand 2: ");scanf("%d",&Op2);

printf("1. Operator +\n");

printf("2. Operator -\n");

printf("3. Operator *\n");

printf("4. Operator /\n");

printf("Pilih Operator : ");scanf("%d",&Pilih);

switch (Pilih) {

case 1 : {Hasil = Op1 + Op2; break;}

case 2 : {Hasil = Op1 - Op2; break;}

case 3 : {Hasil = Op1 * Op2; break;}

case 4 : {if (Op2 != 0) printf("%d",Op1/Op2);

else

printf("error");break;}

}

printf("Hasil dari perhitungan tersebut adalah %f",Hasil);

}

1.2.6 Pengulangan

Struktur pengulangan secara umum terdiri dari dua bagian:

1. Kondisi pengulangan, yaitu ekspresi boolean yang harus dipenuhi untuk

melaksanakan pengulangan.

2. badan (body) pengulangan, yaitu bagian algoritma yang diulang.

Page 16: 29380764 Modul Algoritma Pemrograman Bahasa C Tipe Data Operator Kondisi Dan Perulangan

I-16

a. Struktur FOR

Struktur ini digunakan untuk menghasilkan pengulangan sejumlah kali yang

dispesifikasikan. Jumlah pengulangan diketahui atau dapat ditentukan sebelum

eksekusi.

For Menaik For Menurun

For pencacah ← awal to akhir do

Aksi

Endfor

For pencacah←akhir downto awal do

Aksi

endfor

Contoh Algoritma 7:

Algoritma Penjumlahan_Deret

{Menjumlahan deret: 1+2+3+..+N dengan N adalah bilangan bulat positif

yang dibaca dari piranti masukan jumlah deret dicetak ke piranti keluaran}

Deklarasi

N : integer {banyaknya suku deret}

K : integer {suku deret}

Jumlah : integer {Jumlah deret}

Deskripsi

Read(N) {banyaknya suku deret}

Jumlah ← 0 {Inisialisasi jumlah deret}

For k ← 1 to N {ulangi sebanyak N kali}

Jumlah ← Jumlah + k

Endfor

Write(Jumlah)

Program Algoritma 7:

//Algoritma Penjumlahan_Deret

#include <stdio.h>

main() {

int N, K, Jumlah;

printf("banyaknya suku deret : ");scanf("%d",&N);

Jumlah = 0;

for (K=1; K<=N; K++) {

Jumlah = Jumlah + K; }

printf("%d",Jumlah);

}

Page 17: 29380764 Modul Algoritma Pemrograman Bahasa C Tipe Data Operator Kondisi Dan Perulangan

I-17

Contoh Algoritma 8:

Algoritma Hitung_Mundur

{hitung mundur peluncuran roket}

Deklarasi

K : integer

Deskripsi

For K ← 10 downto 0 do

Write(K)

Endfor

Write(’Go’)

Program Algoritma 8:

//Algoritma Hitung_Mundur

#include <stdio.h>

main() {

int K;

for (K=10;K>=0;K--) {

printf("%d ",K); }

printf("Go");

}

b. Struktur While

Bentuk umum:

While kondisi do

Aksi

Endwhile

Aksi akan dilaksanakan berulangkali selama kondisi bernilai true. Jika kondisi

bernilai false badan pengulangan tidak akan dilaksanakan, yang berarti

pengulangan selesai. Yang harus diperhatikan adalah pengulangan harus

berhenti. Pengulangan yang tidak pernah berhenti menandakan bahwa logika

algoritma tersebut salah.

Page 18: 29380764 Modul Algoritma Pemrograman Bahasa C Tipe Data Operator Kondisi Dan Perulangan

I-18

Contoh Algoritma 9:

Algoritma Menghitung_Rata_Rata

{Menghitung rata-rata N buah bilangan bulat yang dibaca dari piranti

masukan. N >0}

Deklarasi

N ,X , K, Jumlah : integer

Rerata : real

Deskripsi

Read(N)

Jumlah ← 0

K ←1

While K ≤ N do

Read(X)

Jumlah ← Jumlah + X

K ← K+1

Endwhile

{K>N}

Rerata ← Jumlah/N

write(Rerata)

Program Algoritma 9:

//Algoritma Menghitung_Rata_Rata

#include <stdio.h>

main() {

int N , X, K, Jumlah;

float Rerata;

printf("Masukan banyaknya data : ");scanf("%d",&N);

Jumlah = 0;

K =1;

while (K <= N) {

printf("Data ke-%d : ",K);scanf("%d",&X);

Jumlah = Jumlah + X;

K = K+1;

}

Rerata = Jumlah/N;

printf("Rata-rata : %f",Rerata);

}

Page 19: 29380764 Modul Algoritma Pemrograman Bahasa C Tipe Data Operator Kondisi Dan Perulangan

I-19

c. Struktur do.....while

Pada dasarnya struktur perulangan do....while sama saja dengan struktur

while, hanya saja pada proses perulangan dengan while, seleksi berada di

while yang letaknya di atas kemudian proses baru akan dijalankan, sementara

pada perulangan do....while, proses akan dilakukan terlebih dahulu baru

kemudian, seleksi while dilakukan. Jadi dengan menggunakan struktur

do…while sekurang-kurangnya akan terjadi satu kali perulangan.

Bentuk Umum:

Do

Aksi

While

Contoh Algoritma 10:

Algoritma Sandi_Lewat

{Memvalidasi sandi-lewat yang dimasukkan oleh pengguna. Sandi-lewat

yang benar disimpan sebagai konstanta. Jika sandi-lewat yang dimasukkan

benar, sistem boleh dimasuki, tetapi jika salah, ulangi lagi}

Deklarasi

Const Password = ’abc123’

Sandilewat : string

Sah : boolean

Deskripsi

Sah ← false

do

Read(Sandilewat)

If Sandilewat = Password then

Sah ← true

Endif

while Sah=false

Write(’OK’)

Program Algoritma 10:

//Algoritma Sandi_Lewat

#include <stdio.h>

main() {

#define Password "abc123";

Page 20: 29380764 Modul Algoritma Pemrograman Bahasa C Tipe Data Operator Kondisi Dan Perulangan

I-20

char Sandilewat;

bool Sah;

Sah = false;

do

{

printf("Masukan kata sandi : ");scanf("%c",Sandilewat);

If (Sandilewat = Password)

Sah = true;

}

while (Sah == false);

printf("OK");

}

1.3 Kasus

1.3.1 Kasus 1

Jika kita berbelanja di pasar swalayan/supemarket, nilai total belanja kita

seringkali bukan kelipatan pecahan rupiah yang berlaku. Misalnya nilai total

belanja sebesar Rp. 19.212. andaikan saat ini pecahan rupiah yang berlaku paling

kecil Rp. 25. selain i

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

menjadi Rp. 19.225. hal ini jels merugikan konsumen. Misalkan anda memiliki

pasar swalayan yang jujur dan tidak merugikan pembeli, sehingga jika ada nilai

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

algoritma dan program serta cantumkan output/hasilnya yang membaca nilai

belanja (integer) lalu membulatkannya ke nilai uang dengan pecahan terendah.

1.3.2 Kasus 2

Seseorang mempunyai tabungan di sebuah bank. Ia dapat menyetor dan

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,

ia tidak dapat mengambil uang lagi. Kode transaksi untuk menyetor adalah 0 dan

Page 21: 29380764 Modul Algoritma Pemrograman Bahasa C Tipe Data Operator Kondisi Dan Perulangan

I-21

kode transaksi untuk mengambil adalah 1. Buatlah algoritma yang

mensimulasikan transaksi yang dilakukan orang tersebut. Algoritma menerima

masukan berupa kode transaksi dan jumlah uang yang disetor/diambil.

Rancanglah algoritma tersebut sehingga memungkinkan penabung dapat

melakukan transaksi berulangkali sampai saldo yang tersisa Rp. 10,000 atau

jumlah uang yang diambil lebih besar dari saldonya. Catatan nilai uang yang

diambil selalu merupakan kelipatan 20.000. Dari algoritma tersebut, buatlah

program dan cantumkan output/hasilnya.

1.4 Tugas – tugas Pendahuluan

Tugas pendahuluan akan dikerjakan selama 30 menit di awal jam

praktikum dengan menggunakan software Self Assessment

1.5 Latihan Praktikum I dan II

1.5.1 Latihan Praktikum I (Pertemuan Pertama)

Buatlah program berdasarkan algoritma-algoritma di bawah ini:

Algoritma 1:

Algoritma Hitung_Biaya_Percakapan {Menghitung biaya percakapan telpon dengan menghitung berapa detik seseorang

bicara kemudian menghitung biayanya dengan mengkalikan jumlah detik dengan

biaya percakapan perdetiknya. Waktu percakapan harus dikonversi ke detik.}

Deklarasi

Const Biaya_perdetik : 100

Type Waktu <Jam, Menit, Detik : integer> Var Awal, Akhir : Waktu

Detik_awal, Detik_akhir, Lama_bicara, Tdetik1, Tdetik2 : integer

Biaya : real

Deskripsi

Read(Awal.Jam, Awal.Menit, Awal.Detik)

Read(Akhir.Jam, Akhir.Menit, Akhir.Detik) Tdetik1 ← Akhir.Jam * 3600 + Akhir.Menit * 60 + Akhir.Detik

Tdetik2 ← Awal.Jam * 3600 + Awal.Menit * 60 + Awal.Detik

Lama_bicara ← Tdetik2 – Tdetik1

If Lama_bicara > = 0 then

Biaya ← Lama_bicara * Biaya_perdetik

Page 22: 29380764 Modul Algoritma Pemrograman Bahasa C Tipe Data Operator Kondisi Dan Perulangan

I-22

Write(’Biaya yang harus dibayar’, Biaya, ’rupiah’)

Endif

Algoritma 2:

Algoritma Pecahan_Uang {Membaca nilai uang (rupiah) dalam kelipatan 25-an, lalu menentukan berapa

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

manis)}

Deklarasi

Uang : integer

Satuan, Puluhan, Ratusan, Limaratusan, Ribuan, Sisa : integer

Deskripsi

Read(Uang)

Ribuan ← Uang div 1000

Sisa ← Ribuan mod 1000

If Sisa <> 0 then

Limaratusan ← Sisa div 500

Sisa ← Limaratusan mod 500

Endif

If Sisa <> 0 then

Ratusan ← Sisa div 100

Sisa ← Ratusan mod 100

Endif

If Sisa <> 0 then Puluhan ← Sisa div 50

Sisa ← Puluhan mod 50

Endif

If Sisa <> 0 then

Satuan ← ’beri permen plus senyum’

Endif

Write(Ribuan, ’buah ribuan ’, Limaratusan, ’ buah lima ratusan ’, Ratusan, ’ buah seratusan ’, Puluhan, ’ buah puluhan ’, Sisa , Satuan)

Algoritma 3:

Algoritma Angka_mutu_mahasiswa

{Nilai_akhir ditentukan dari nilai_tugas, UTS dan UAS dengan formula

nilai_akhir ← 20% Nilai_Tugas + 30% UTS + 50% UAS. Angka mutu (A, B, C,

D, E) ditentukan oleh nilai_akhir mahasiswa. Setelah itu menentukan angka

mutu dengan formula: nilai_akhir >= 80 → ’A’, 60 <= nilai_akhir < 80 → ’B’,

40 <= nilai_akhir < 60 → ’C’, 20 <= nilai_akhir < 40 → ’D’, nilai_akhir < 20

→ ’E’}

Page 23: 29380764 Modul Algoritma Pemrograman Bahasa C Tipe Data Operator Kondisi Dan Perulangan

I-23

Deklarasi

Nama : string

Nilai_tugas, UTS, UAS : integer

Nilai_akhir : real

Angka_mutu : char

Deskripsi

Read(Nama, Nilai_tugas, UTS, UAS)

Nilai_akhir ← 0.2 * Nilai_tugas + 0.3 * UTS + 0.5 * UAS

If Nilai_akhir >= 80 then

Angka_mutu ← ’A’

Else if Nilai_akhir >= 60 then

Angka_mutu → ’B’

Else if Nilai_akhir >= 40 then

Angka_mutu → ’C’

Else if Nilai_akhir >= 20 then

Angka_mutu → ’D’

Else

Angka_mutu → ’E’

Endif

Write(Nama, ’nilai akhir: ’, Nilai_akhir, ’ angka mutu: ’, Angka_mutu)

Algoritma 4:

Algoritma Empat_Persegi_Panjang

{Algoritma untuk menampilkan menu perhitungan empat persegi panjang,

memilih menu dan melakukan proses perhitungan}

Deklarasi

NoMenu : integer

Panjang, Lebar : real

Luas, Keliling, Diagonal : real

Deskripsi

{cetak menu}

write(’ Menu Empat Persegi Panjang ’)

write(’ 1. Hitung Luas ’)

write(’ 2. Hitung Keliling ’)

write(’ 3. Hitung Panjang Diagonal ’)

write(’ 4. Keluar Program ’)

write(’ Masukan pilihan anda(1/2/3/4)? ’)

read(NoMenu)

case (NoMenu)

NoMenu = 1 : read(Panjang, Lebar)

Luas ← Panjang * Lebar

Write(Luas)

Page 24: 29380764 Modul Algoritma Pemrograman Bahasa C Tipe Data Operator Kondisi Dan Perulangan

I-24

NoMenu = 2 : read(Panjang, Lebar)

Keliling ← (Panjang + Lebar) * 2

Write(Keliling)

NoMenu = 3 : read(Panjang, Lebar)

Diagonal ← (Panjang * Panjang + Lebar * Lebar)

Write(Diagonal)

NoMenu = 4 : write(’Keluar program...sampai jumpa’)

Endcase

Algoritma 5:

Algoritma Upah_Karyawan

{Menghitung upah mingguan karyawan. Masukan yang dibaca dari piranti

masukan adalah nama karyawan, golongan dan jumlah jam kerja. Nama

karyawan dan upahnya dicetak ke piranti keluaran}

Deklarasi

Const JamNormal = 48 {jumlah jam kerja normal per minggu}

Const UpahLembur = 3000 {upah per jam lembur Rp. 3000}

Nama : string

Gol : char {’A’,’B’,’C’,’D’}

JJK : integer {jumlah jam kerja}

JamLembur : integer

UpahPerJam : real {upah per jam}

UpahTotal : real

Deskripsi

Read(Nama, Gol, JJK)

Case (Gol)

Gol = ’A’ : UpahPerJam ← 4000.0

Gol = ’B’ : UpahPerJam ← 5000.0

Gol = ’C’ : UpahPerJam ← 6000.0

Gol = ’D’ : UpahPerJam ← 7000.0

Endcase

If JJK ≤ JamNormal then

UpahTotal ← JJK * UpahPerJam

Else

JamLembur ← JJK – JamNormal

UpahTotal ← JamNormal * UpahPerJam + JamLembur * UpahLembur

Endif

Write(Nama,UpahTotal)

Page 25: 29380764 Modul Algoritma Pemrograman Bahasa C Tipe Data Operator Kondisi Dan Perulangan

I-25

1.5.2 Latihan Praktikum II (Pertemuan Kedua)

Buatlah program berdasarkan algoritma di bawah ini

Algoritma 1:

Algoritma Perpangkatan

{Menghitung perpangkatan an dengan n bilangan bulat sembarang > 0. nilai a

dan n dibaca dari piranti masukan. Nilai perpangkatan dicetak ke piranti

keluaran}

Deklarasi

A : real {bilangan yang dipangkatkan}

N, M : integer {pemangkat}

Hasil : real {hasil perpangkatan}

K : integer {pencatatan pengulangan}

Deskripsi

Read(A, N)

If N<0 then

M ← -N {positifkan pangkatnya}

else {N ≥ 0}

M ← N

endif

{hitung perpangkatan}

Hasil ← 1

for K ← 1 to M do

Hasil ← Hasil * A

endfor

{tuliskan hasil perpangkatan, bergantung pada n}

if N < 0 then

write(1/Hasil)

else

write(Hasil)

endif

Algoritma 2:

Algoritma Konversi_Desimal_Ke_Biner

{Mengkonversi bilangan bulat tidak negatif dalam sistem desimal menjadi

bilangan dalam sistem biner}

Deklarasi

X, Biner : integer

Page 26: 29380764 Modul Algoritma Pemrograman Bahasa C Tipe Data Operator Kondisi Dan Perulangan

I-26

Deskripsi

Read(X)

Biner ←’’

do

Sisa ← X mod 2

X ← X div 2

Case (Sisa)

0 : Biner ← ’0’ + Biner

1 : Biner ← ’1’ + Biner

endcase

while X ≠ 0

write(Biner)

Algoritma 3:

Algoritma Hitung_Rata_Rata

{Menghitung nilai rata-rata data integer (≠9999). Data dibaca dari piranti

masukan. Pembacaan data diakhiri dengan 999. nilai rata-rata dicetak ke

piranti masukan}

Deklarasi

Ndata : integer {pencatat jumlah pembacaan data}

X : integer {data yang dibaca}

Jumlah : real {jumlah nilai data yang dibaca}

U : real {rata-rata data integer}

Deskripsi

Jumlah ← 0

Ndata ← 0 {inisialisasi pencatat pembacaan}

Read(X)

While X ≠ 9999 do

Ndata ← Ndata +1 {naikan pencatat jumlah pembacaan data}

Jumlah ← Jumlah + X

Read(X) {baca data integer selanjutnya}

Endwhile {X = 9999}

If Ndata ≠ 0 then

U ←Jumlah/Ndata {rata-rata data bilangan bulat}

Else

Write(’data tidak ada’)

Endif

Page 27: 29380764 Modul Algoritma Pemrograman Bahasa C Tipe Data Operator Kondisi Dan Perulangan

I-27

Algoritma 4:

Algoritma Data_Minimum

{Menentukan bilangan terkecil dari N data integer yang dibaca dari piranti

masukan. Nilai N ditentukan terlebih dahulu (N>0)}

Deklarasi

N : integer {banyaknya data masukan, > 0}

X : integer {data yang dibaca}

Min : integer {data terkecil/minimum}

K : integer {pencacah pengulangan}

Deskripsi

Read(N)

Read(X) {baca data pertama}

Min ← X {asumsikan min adalah data pertama}

For k ← 2 to N do

Read(X)

If X < Min then

Min ← X

Endif

Endfor

Write(Min)

Algoritma 5:

Algoritma Upah_Karyawan

{Menentukan upah mingguang sejumlah karyawan. Data yang diperlukan

adalah nama karyawan dan jumlah jam kerja. Perhitungan upah karyawan

diulangi untuk karyawan lain sampai tidak ada lagi karyawan yang dihitung

upahnya}

Deklarasi

Const JamKerjaNormal = 48

Const UpahPerJam = 2000

Const UpahLembur = 3000

Namakar : string

JumlahJamKerja : integer

JumlahJamLembur : integer

UpahTotal : real

Jawab : char

Stop : boolean

Deskripsi

Page 28: 29380764 Modul Algoritma Pemrograman Bahasa C Tipe Data Operator Kondisi Dan Perulangan

I-28

Stop ← false

While not Stop do

Read(Namakar, JumlahJamKerja)

If JumlahJamKerja ≤ JamKerjaNormal then

Upah ← JumlahJamKerja * UpahPerjam

Else {jumlah jam kerja > 48}

JumlahJamLembur ← JumlahJamKerja – 48

Upahtotal ← JamKerjaNormal * 2000 + JumlahJamLembur * 3000

Endif

Write(UpahTotal)

Write(’ulangi untuk karyawan lainnya ? (y/t) : ’)

Read(Jawab)

If Jawab=’t’ or Jawab=’T’ then

Stop ← true

Endif

Endwhile

{Jawab = ’t’ or T}