Buku tutorial pemprograman c

130

Transcript of Buku tutorial pemprograman c

Page 1: Buku tutorial pemprograman c
Page 2: Buku tutorial pemprograman c

/* Buku Kumpulan Soal-Soal Pemorgaman C */ printf(“ Page i “)

Kata Pengantar

Puji syukur kami panjatkan kepada Allah SWT yang mana dengan rahmat dan

hidayahnya kami dapat menyelesaikan buku yang berjudul “Tutorial Pemrogaman C”. Buku ini

kami buat dalam rangka menyelesaikan tugas akhir praktikum konsep pemrogaman di semester

satu prodi diploma 3 teknik informatika Politeknik Elektronika Negeri Surabaya. Buku ini

merupakan dokumentasi dari praktikum konsep pemrgaman yang telah kami ikuti selama satu

semester.

Tujuan lain dibuatnya buku ini adalah agar dapat digunakan sebagai acuan praktikum

konsep pemrogaman di tahun ajaran berikutnya. Di dalam buku ini tersusun materi pemrogaman

dasar C secara terurut mulai dari pengenalan hingga materi yang cukup rumit. Didalamnya juga

terangkum teori singkat, contoh-contoh kasus, code pengerjaan atau penyelesaian kasus dan juga

tampilan dari hasil keluarannya.

Kami harapkan dengan adanya buku ini dapat membantu mahasiswa selanjutnya dalam

menghadapai perkuliahan praktikum konsep permogaran. Kami yakin dalam penyusunan buku

ini masih banyak kekurangan dan kesalahan untuk itu kritik dan saran yang membangun kami

harapkan untuk penyempurnaan buku ini.

Surabaya, 20 Januari 2013

ttd

Tim Penyusun

Page 3: Buku tutorial pemprograman c

/* Buku Kumpulan Soal-Soal Pemorgaman C */ printf(“ Page ii “)

Tim Penyusun

Tim Utama

Riza Budi Prasetya (7412030002)

Fajar Teguh Kurniawan (7412030006)

Abdurachman Rizal Bachmid (7412030007)

Zulfan Fathoni (7412030026)

Dwi Puteri Hidta Yunia (7412030028)

Desain Cover

Vizzca Indra Pratama

Editing

Riza Budi Prasetya (7412030002)

Terima Kasih Kepada

Jauari Akhmad

(Dosen Pengampu Praktikum Konsep Pemorgaman)

Page 4: Buku tutorial pemprograman c

/* Buku Kumpulan Soal-Soal Pemorgaman C */ printf(“ Page iii “)

Daftar Isi

Kata Pengantar ................................................................................................................................. i

Tim Penyusun ................................................................................................................................. ii

Daftar Isi ........................................................................................................................................ iii

Bab 1 PENGANTAR KONSEP PEMROGRAMAN ..................................................................... 1

A. TUJUAN .......................................................................................................................... 1

B. DASAR TEORI ............................................................................................................... 1

C. PERCOBAAN ................................................................................................................. 4

Bab 2 PENGENALAN BAHASA C ............................................................................................ 10

A. TUJUAN ........................................................................................................................ 10

B. DASAR TEORI ............................................................................................................. 10

C. PERCOBAAN ............................................................................................................... 11

Bab 3 TIPE DATA DAN OPERASI I/O ....................................................................................... 18

A. TUJUAN ........................................................................................................................ 18

B. DASAR TEORI ............................................................................................................. 18

C. PERCOBAAN ............................................................................................................... 19

Bab 4 PENGAMBILAN KEPUTUSAN ...................................................................................... 25

A. TUJUAN ........................................................................................................................ 25

B. DASAR TEORI ............................................................................................................. 25

C. PERCOBAAN ............................................................................................................... 27

Bab 5 PERULANGAN ................................................................................................................. 43

A. TUJUAN ........................................................................................................................ 43

B. DASAR TEORI ............................................................................................................. 43

C. PERCOBAAN ............................................................................................................... 44

Bab 6 FUNGSI.............................................................................................................................. 64

A. TUJUAN ........................................................................................................................ 64

B. DASAR TEORI ............................................................................................................. 64

C. PERCOBAAN ............................................................................................................... 64

Page 5: Buku tutorial pemprograman c

/* Buku Kumpulan Soal-Soal Pemorgaman C */ printf(“ Page iv “)

Bab 7 ARRAY ............................................................................................................................... 82

A. TUJUAN ........................................................................................................................ 82

B. DASAR TEORI ............................................................................................................. 82

C. PERCOBAAN ............................................................................................................... 83

Bab 8 STRING.............................................................................................................................. 95

A. TUJUAN ........................................................................................................................ 95

B. DASAR TEORI ............................................................................................................. 95

C. PERCOBAAN ............................................................................................................... 96

Bab 9 POINTER ......................................................................................................................... 106

A. TUJUAN ...................................................................................................................... 106

B. DASAR TEORI ........................................................................................................... 106

C. PERCOBAAN ............................................................................................................. 108

Bab 10 STRUCT ......................................................................................................................... 118

A. TUJUAN ...................................................................................................................... 118

B. DASAR TEORI ........................................................................................................... 118

C. PERCOBAAN ............................................................................................................. 119

Page 6: Buku tutorial pemprograman c

/* Buku Kumpulan Soal-Soal Pemorgaman C */ printf(“ Page 1 “)

Bab 1 PENGANTAR KONSEP

PEMROGRAMAN

A. TUJUAN

B. DASAR TEORI

Beberapa langkah dalam proses pembuatan suatu program atau software :

1. Mendefinisikan masalah dan menganalisanya

Langkah awal yang harus dilakukan adalah

mengidentifikasikan masalah antara lain tujuan

dari pembuatan program, parameter-parameter

yang digunakan, fasilitas apa saja yang akan

disediakan oleh program. Kemudian

menentukan metode atau algoritma apa yang

akan diterapkan untuk menyelesaikan

masalah tersebut dan terakhir menentukan

bahasa program yang digunakan untuk

pembuatan program.

2. Merealisasikan dengan langkah-langkah berikut :

1. Mampu memahami

2. Mendesain penyelesaian persoalan ke dalam

3. Menotasikan algoritma yang sudah dibuat menggunakan notasi

Page 7: Buku tutorial pemprograman c

/* Buku Kumpulan Soal-Soal Pemorgaman C */ printf(“ Page 2 “)

Algoritma

Algoritma adalah urutan langkah-langkah logika yang menyatakan suatu tugas

dalam menyelesaikan suatu masalah atau problem.

Contoh : Buat algoritma untuk menentukan apakah suatu bilangan merupakan

bilangan ganjil atau bilangan genap.

Algoritmanya :

1. Masukkan sebuah bilangan sembarang

2. Bagi bilangan tersebut dengan bilangan 2

3. Hitung sisa hasil bagi pada langkah 2.

4. Bila sisa hasil bagi sama dengan 0 maka bilangan itu adalah bilangan genap

tetapi bila sisa hasil bagi sama dengan 1 maka bilangan itu adalah bilangan

ganjil.

Page 8: Buku tutorial pemprograman c

/* Buku Kumpulan Soal-Soal Pemorgaman C */ printf(“ Page 3 “)

Dari contoh algoritma di atas tentang menentukan apakah suatu bilangan adalah

bilangan ganjil atau bilangan genap, flowchart dari program adalah sebagai

berikut :

Page 9: Buku tutorial pemprograman c

/* Buku Kumpulan Soal-Soal Pemorgaman C */ printf(“ Page 4 “)

C. PERCOBAAN

1. Menjumlahkan 2 buah bilangan dan mencetak hasilnya.

Algoritma:

FlowChart:

a. Start

b. Masukkan 2 bilangan

c. Hitung hasil penjumlahan 2 bilangan tersebut

d. Cetak hasil dari proses c

e. end

Page 10: Buku tutorial pemprograman c

/* Buku Kumpulan Soal-Soal Pemorgaman C */ printf(“ Page 5 “)

2. Mengalikan 2 buah bilangan dan mencetak hasilnya

Algoritma:

FlowChart:

3. Memberikan opsi menjumlahkan dan mengalikan 2 buah bilangan dan menampilkan

hasilnya

a. Start

b. Masukkan 2 bilangan

c. Hitung hasil perkalian 2 bilangan tersebut

d. Cetak hasil dari proses c

e. end

Page 11: Buku tutorial pemprograman c

/* Buku Kumpulan Soal-Soal Pemorgaman C */ printf(“ Page 6 “)

Algoritma:

FlowChart:

4. Menghitung Luas Lingkaran dan menampilkan hasilnya

Algoritma:

FlowChart:

a. Start

b. Masukkan 2 bilangan

c. Tentukan operasi (penjumlahan / perkalian)

d. Jika operasi penjumlahan hitung hasil penjumlahan 2 bilangan jika tidak hitung

hasil perkalian 2 bilangan.

e. Cetak hasil dari proses d

f. end

a. Start

b. Masukkan jari-jari lingkaran

c. Luas = 3.14 * jari-jari * jari-jari

d. Cetak Luas dari proses c

e. end

Page 12: Buku tutorial pemprograman c

/* Buku Kumpulan Soal-Soal Pemorgaman C */ printf(“ Page 7 “)

5. Mengecek bilangan di antara 2 bilangan masukan, apakah sama ataukah lebih besar

salah satunya, dan tampilkan hasilnya

Algoritma:

FlowChart:

a. Start

b. Masukkan 2 bilangan

c. Jika bilangan 1 sama dengan bilangan 2 maka cetak “2 Bilangan sama” jika

billangan 1 lebih besar dari bilangan 2 maka cetak “Bilangan 1 lebih besar dari

bilangan 2” jika tidak maka cetak “Bilangan 2 lebih besar dari bilangan 1”

d. end

Page 13: Buku tutorial pemprograman c

/* Buku Kumpulan Soal-Soal Pemorgaman C */ printf(“ Page 8 “)

6. Menghitung sigma (akumulasi) dari bilangan 1 sampai dengan n, dan menampilkan

hasilnya

Algoritma:

FlowChart:

a. Start

b. Deklarasikan n, i, hasil = 0

c. Masukkan n

d. Loop i dari 1 sampai n

Hasil = hasil + i

e. Cetal hasil

f. end

Page 14: Buku tutorial pemprograman c

/* Buku Kumpulan Soal-Soal Pemorgaman C */ printf(“ Page 9 “)

Kesimpulan :

Page 15: Buku tutorial pemprograman c

/* Buku Kumpulan Soal-Soal Pemorgaman C */ printf(“ Page 10 “)

Bab 2 PENGENALAN BAHASA C

A. TUJUAN

B. DASAR TEORI

Akar dari bahasa C adalah bahasa BCPL yang dikembangkan oleh Martin

Richards pada tahun 1967. Bahasa ini memberikan ide kepada Ken Thompson yang

kemudian mengembangkan bahasa yang disebut dengan B pada tahun 1970.

Perkembangan selanjutnya dari bahasa B adalah bahasa C oleh Dennis Ritchie sekitar

tahun 1970-an di Bell Telephone Laboratories Inc. (sekarang adalah AT&T Bell

Laboratories). Bahasa C pertama kali digunakan pada komputer Digital Equipment

Corporation PDP-11 yang menggunakan sistem operasi UNIX.

Standar bahasa C yang asli adalah standar dari UNIX. Sistem operasi, kompiler C

dan seluruh program aplikasi UNIX yang esensial ditulis dalam bahasa C. Kepopuleran

bahasa C membuat versi-versi dari bahasa ini banyak dibuat untuk komputer mikro.

Untuk membuat versi-versi tersebut menjadi standar, ANSI (American National

Standards Institute) membentuk suatu komite (ANSI committee X3J11) pada tahun 1983 yang

kemudian menetapkan standar ANSI untuk bahasa C. Standar ANSI ini didasarkan kepada

standar UNIX yang diperluas.

Pengenalan Fungsi-Fungsi Dasar

a. Fungsi main()

Fungsi main() harus ada pada program, sebab fungsi inilah yang menjadi titik awal dan

titik akhir eksekusi program.

b. Fungsi printf().

Fungsi printf() merupakan fungsi yang umum dipakai untuk menampilkan suatu

keluaran pada layar peraga. Untuk menampilkan tulisan

Selamat belajar bahasa C

1. Mengenal sintaks dan fungsi-fungsi dasar dalam

bahasa

2. Mampu membuat flowchart untuk algoritma untuk

memecahkan suatu selanjutnya

mengimplementasikannya dalam bahasa

Page 16: Buku tutorial pemprograman c

/* Buku Kumpulan Soal-Soal Pemorgaman C */ printf(“ Page 11 “)

misalnya, pernyataan yang diperlukan berupa:

printf(“Selamat belajar bahasa C”);

Dalam bentuk yang lebih umum, format printf()

printf(“string kontrol”, daftar argumen);

C. PERCOBAAN

1. Mencetak kalimat “Hello World!” dalam satu baris.

Listing Program :

1

2

3

4

5

6

7

8

#include <stdio.h>

int main()

{

printf("Project Title : Tugas Pendahuluan Bab 02 no 01\n");

//Jawaban

printf("Hello World!\n");

return 0;

}

Output Program :

Analisa :

Progam diatas hanya menerapkan system dasar output yaitu printf()

2. Mencetak kalimat dalam beberapa baris, dengan tampilan sebagai berikut :

Hello...

..oh my

...when do i stop?

1

..2

...3

Page 17: Buku tutorial pemprograman c

/* Buku Kumpulan Soal-Soal Pemorgaman C */ printf(“ Page 12 “)

Listing Program :

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

#include <stdio.h>

int main()

{

printf("Project Title : Tugas Pendahuluan Bab 02 no 02\n");

//Jawaban

printf("Hello...\n");

printf("..oh my\n");

printf("...when do i stop?\n\n");

printf("1\n");

printf("..2\n");

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

return 0;

}

Output Program :

Analisa :

Progam diatas hanya menerapkan system dasar output yaitu printf() dan juga syntax new

line “\n” untuk ganti baris baru.

3. Menghitung penjumlahan 1024 + 4096 dan mencetak hasilnya.

Listing Program :

1

2

3

4

5

6

7

8

#include <stdio.h>

int main()

{

printf("Project Title : Tugas Pendahuluan Bab 02 no 03\n");

//Jawaban

printf("1024 + 4096 = %d\n", 1024 + 4096);

Page 18: Buku tutorial pemprograman c

/* Buku Kumpulan Soal-Soal Pemorgaman C */ printf(“ Page 13 “)

9

10

return 0;

}

Output Program :

Analisa :

Program diatas menggunakan syntax printf dalam format umum yaitu

printf(“string control”, daftar argument) dengan string control berupa %d yang artinya

data yang ditampilkan berupa bilangan bulat atau integer, dan daftar argument berupa

penjumlahan 2 bilangan.

4. Mengisi nilai 2 variable int, menjumlahkan kedua isi variable tersebut dan mencetak

hasilnya.

Listing Program :

1

2

3

4

5

6

7

8

9

10

11

12

13

#include <stdio.h>

int main()

{

printf("Project Title : Tugas Pendahuluan Bab 02 no 04\n");

//Jawaban

int bil1, bil2;

printf("Masukkan bilangan 1 : "); scanf("%d",&bil1);

printf("Masukkan bilangan 2 : "); scanf("%d",&bil2);

printf("bilangan1 + bilangan2 = %d\n", bil1 + bil2);

return 0;

}

Output Program :

Page 19: Buku tutorial pemprograman c

/* Buku Kumpulan Soal-Soal Pemorgaman C */ printf(“ Page 14 “)

Analisa :

Program diatas menggunakan system I/O dalam C yaitu printf() dan scanf(), dengan

daftar argumen berupa variable yang telah dideklarasikan terlebih dahulu dengan format :

Type_data nama_variable; lalu variable tersebut diinisialisasi menggunakan fungsi

scanf() dengan format : scanf(“string control”, daftar argument). String control coding

diatas menggunakan %d yang artinya bahwa tipe data yang diinputkan berupa bilangan

integer, dan daftar argumentnya menggunakan penjumlahan 2 variable yang telah

dideklarasikan tadi.

5. Mengisi nilai sebuah variable float, mengalikan isi variable dengan 50 dan mencetak

hasilnya.

Listing Program :

1

2

3

4

5

6

7

8

9

10

11

12

13

#include <stdio.h>

int main()

{

printf ("Project Title : Tugas Pendahuluan Bab 02 no 05\n");

//Jawaban

float bil;

printf("Masukkan bilangan : "); scanf("%f",&bil);

printf("Hasil penghitungan bilangan = %f\n", bil * 50);

return 0;

}

Output Program :

Analisa :

Sama dengan project no 4, perbedaannya adalah disini tipe datanya adalah float yang

artinya string control dalam fungsi printf() dan juga scanf() harus menggunakan %f.

Perbedaan lainya adalah pada argument controlnya yang menggunakan operasi perkalian.

Page 20: Buku tutorial pemprograman c

/* Buku Kumpulan Soal-Soal Pemorgaman C */ printf(“ Page 15 “)

6. Menampilkan nilai sebuah bilangan float dengan tanpa menentukan format tampilannya

(default).

Listing Program :

1

2

3

4

5

6

7

8

9

10

11

12

#include <stdio.h>

int main()

{

printf("Project Title : Tugas Pendahuluan Bab 02 no 06\n");

//Jawaban

float bil;

printf("Masukkan bilangan : "); scanf("%f",&bil);

printf("Hasil penghitungan bilangan = %f\n", bil);

return 0;

}

Output Program :

Analisa :

Tipe data float memiliki medan dan digit angka di belakang koma yang cukup lebar

secara default. Hasilnya bisa terlihat di Output yang menampilkan angka 2.500000

padahal angka aslinya 2.5

7. Menampilkan nilai sebuah bilangan float dengan format lebar medan 10 digit dan juga 2

digit di belakang koma.

Listing program :

1

2

3

4

5

6

7

#include <stdio.h>

int main()

{

printf("Project Title : Tugas Pendahuluan Bab 02 no 07\n");

//Jawaban

float bil;

Page 21: Buku tutorial pemprograman c

/* Buku Kumpulan Soal-Soal Pemorgaman C */ printf(“ Page 16 “)

8

9

10

11

12

printf("Masukkan bilangan : "); scanf("%f",&bil);

printf("Hasil penghitungan bilangan = %10.2f\n", bil);

return 0;

}

Output Prorgam :

Analisa :

Program hampir sama dengan project 6. Yang membedakan di sini adalah bahwa tipe

data float dalam string control dapat diatur lebar medan dan jumlah digit angkanya di

belakang koma. Contoh %10.2f artinya bahwa variable dalam argument control bernilai

float dan memiliki panjang medan sebesar 10 digit dan 2 digit angka di belakang koma.

8. Menerima masukkan dengan format int dan car kemudian menampilkannya kembali

dengan format yang sesuai.

Listing Program :

1

2

3

4

5

6

7

8

9

10

11

12

13

14

#include <stdio.h>

int main()

{

printf("Project Title : Tugas Pendahuluan Bab 02 no 08\n");

//Jawaban

int bil;char kar;

printf("Masukkan karakter : "); scanf("%c",&kar);

printf("Masukkan bilangan : "); scanf("%d",&bil);

printf("Hasil Input bilangan = %d\n", bil);

printf("Hasil Input karakter = %c\n", kar);

return 0;

}

Output Prorgam :

Page 22: Buku tutorial pemprograman c

/* Buku Kumpulan Soal-Soal Pemorgaman C */ printf(“ Page 17 “)

Analisa :

Project di atas menggunakan system I/O dengan syntax printf() dan juga scanf(). Dengan

tahap awal yaitu pendeklarasian variable integer dan character, lalu kedua variable

tersebut diinisialisasi menggunakan fungsi scanf(), dan nilai dari variable tersebut dicetak

ke layar dengan fungsi printf(). String control yang digunakan untuk kedua fungsi

tersebut antara lain %d untuk bilangan integer dan %c untuk variable character.

Page 23: Buku tutorial pemprograman c

/* Buku Kumpulan Soal-Soal Pemorgaman C */ printf(“ Page 18 “)

Bab 3 TIPE DATA DAN OPERASI I/O

A. TUJUAN

B. DASAR TEORI

Data berdasarkan jenisnya dapat dibagi menjadi lima kelompok, yang dinamakan sebagai

tipe data dasar. Kelima tipe data dasar adalah:

Bilangan bulat (integer)

Bilangan real presisi-tunggal

Bilangan real presisi-ganda

Karakter

Tak-bertipe (void)

Kata-kunci yang berkaitan dengan tipe data dasar secara berurutan di antaranya

adalah int (short int, long int, signed int dan unsigned int), float, double, dan char.

Variabel

Aturan penulisan pengenal untuk sebuah variabel, konstanta atau fungsi yang

didefinisikan oleh pemrogram adalah sebagai berikut :

Pengenal harus diawali dengan huruf (A..Z, a..z) atau karakter garis bawah ( _ ).

Selanjutnya dapat berupa huruf, digit (0..9) atau karakter garis bawah atau

tanda dollar ($).

Panjang pengenal boleh lebih dari 31 karakter, tetapi hanya 31 karakter pertama

yang

akan dianggap berarti.

Pengenal tidak boleh menggunakan nama yang tergolong sebagai kata-kata

1. Menjelaskan tentang beberapa tipe data dasar (jenis dan

2. Menjelaskan tentang

3. Menjelaskan tentang

4. Menjelaskan tentang berbagai jenis operator dan

5. Menjelaskan tentang instruksi

Page 24: Buku tutorial pemprograman c

/* Buku Kumpulan Soal-Soal Pemorgaman C */ printf(“ Page 19 “)

cadangan

(reserved words) seperti int, if, while dan sebagainya.

Konstanta

Konstanta menyatakan nilai yang tetap. Penulisan konstanta mempunyai aturan

tersendiri, sesuai dengan tipe masing-masing.

Konstanta karakter misalnya ditulis dengan diawali dan diakhiri dengan tanda petik

tunggal, contohnya : „A‟ dan „@‟.

Konstanta integer ditulis dengan tanda mengandung pemisah ribuan dan tak

mengandung bagian pecahan, contohnya : –1 dan 32767.

Konstanta real (float dan double) bisa mengandung pecahan (dengan tanda berupa

titik) dan nilainya bisa ditulis dalam bentuk eksponensial (menggunakan tanda e),

contohnya : 27.5f (untuk tipe float) atau 27.5 (untuk tipe double) dan 2.1e+5

(maksudnya 2,1 x 105 ).

Konstanta string merupakan deretan karakter yang diawali dan diakhiri dengan tanda

petik-ganda (“), contohnya :“Pemrograman Dasar C”.

Operator Aritmatika

Operator untuk operasi aritmatika yang tergolong sebagai operator binary adalah :

* perkalian

/ pembagian

% sisa pembagian

+ penjumlahan

- pengurangan

C. PERCOBAAN

1. Diketahui variable – variable sebagai berikut :

var_bulat = 32767

var_pecahan1 = 339.2345678f

var_pecahan2 = 3.4567e+40

var_karakter = „S‟;

buat program untuk menampilkan semua variable diatas.

Listing Program :

1

2

3

4

#include <stdio.h>

int main()

{

printf("Project Title : Tugas Pendahuluan Bab 04A no 01”);

Page 25: Buku tutorial pemprograman c

/* Buku Kumpulan Soal-Soal Pemorgaman C */ printf(“ Page 20 “)

5

6

7

8

9

10

11

12

13

14

15

16

17

18

//Jawaban

int var_bulat = 32767;

float var_pecahan1 = 339.2345678f;

double var_pecahan2 = 3.4567e+40;

char var_karakter = 'S';

printf("var_bulat = %d\n", var_bulat);

printf("var_pecahan1 = %f\n", var_pecahan1);

printf("var_pecahan2 = %g\n", var_pecahan2);

printf("var_karakter = %c\n", var_karakter);

return 0;

}

Output Prorgam :

Analisa :

Soal nomor 1 merupakan penerapan dari syntax printf(“string control”, daftar argument)

dengan menngunakan beberapa variable dengan tipe data berbeda. String control yang

digunakan juga harus sesuai dengan tipe data variable yang akan kita gunakan. Contoh

utnuk variable dengan tipe data Integer kita menggunakan %d, tipe data float %f, tipe

data double %g (range lebih luas dari pada float) dan untuk karakter %c.

2. Diketahui variable-variable sebagai berikut : int a = 12, b = 2, c = 3, d = 4

buat program untuk mencetak hasil :

a % b

a – c

a + b

a / d

a / d * d + a % d

a % d / d * a – c

Listing Program :

Page 26: Buku tutorial pemprograman c

/* Buku Kumpulan Soal-Soal Pemorgaman C */ printf(“ Page 21 “)

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

#include <stdio.h>

int main()

{

printf("Project Title : Tugas Pendahuluan Bab 04A no 02”);

//Jawaban

int a = 12, b = 2, c = 3, d = 4;

printf("a = %d, b = %d, c = %d, dan d = %d\n", a, b, c, d);

printf("a %% b = %d\n", a % b);

printf("a - b = %d\n", a - b);

printf("a + b = %d\n", a + b);

printf("a / d = %d\n", a / d);

printf("a / d * d + a %% d = %d\n", a / d * d + a % d);

printf("a %% d / d * a - c = %d\n", a % d / d * a - c);

return 0;

}

Output Prorgam :

Analisa :

Soal nomor 2 lebih ditekankan kepada operasi yang dilakukan dalam bagian daftar

argument syntax printf(). Dengan melakukan perhitungan langsung seperti Listing coding

diatas, penulisan code akan lebih sederhana daripada menampungnya di variable lain dan

juga memori yang terpakai tidak terlalu banyak.

3. Buatlah program menghitung diskriminan dari sebuah persamaan kuadrat dengan nilai a,

b, c diinputkan.

Listing Program :

1

2

#include <stdio.h>

int main()

Page 27: Buku tutorial pemprograman c

/* Buku Kumpulan Soal-Soal Pemorgaman C */ printf(“ Page 22 “)

3

4

5

6

7

8

9

10

11

12

13

14

15

16

{

printf("Project Title : Tugas Pendahuluan Bab 04A no 03”);

//Jawaban

int a, b, c; float D;

printf("Menghitung Diskriminan dari Pers. Kuadrat aX^2 + bX + c\n");

printf("Masukkan a : "); scanf("%d", &a);

printf("Masukkan b : "); scanf("%d", &b);

printf("Masukkan c : "); scanf("%d", &c);

D = b*b - 4*a*c;

printf("Nilai Diskriminan dari Pers. Kuadrat %dX^2 + %dX + %d adalah

%.0f\n", a, b, c, D);

return 0;

}

Output Program :

Analisa :

Soal diatas menekankan pada perhitungan matematika dengan menghitung nilai

Diskriminan dari suatu persamaan kuadrat. Ada 3 variable Integer yaitu a, b dan c dan

juga 1 variable float yaitu D. Variable a, b, dan c menggunakan fungsi input scanf() lalu

dihitung dengan rumus :

D = b x b – 4 * a * c Sesuai konsep hirerarki operator, penghitungan dimulai dengan

mengalikan b dengan b lalu dikurangi hasil dari perkalian 4 dengan a dan juga dengan c.

4. Buatlah program untuk mengkonversi suhu dari Celcius ke Fahrenheit dengan rumus :

F = C * 1.8 + 32

Listing Program :

1

2

3

4

#include <stdio.h>

int main()

{

printf("Project Title : Tugas Percobaan Bab 04B no 1\n");

Page 28: Buku tutorial pemprograman c

/* Buku Kumpulan Soal-Soal Pemorgaman C */ printf(“ Page 23 “)

5

6

7

8

9

10

11

float cel, fah;

printf("Masukkan suhu dalam derajat Celcius : ");

scanf("%f",&cel);

fah = 1.8 * cel + 32;

printf("Hasil konversi dari %.2f Celcius adalah %.2f Fahrenheit\n", cel,

fah);

return 0;

}

Output Program :

Analisa :

Langkah pertama deklarasi 2 variable bertipe float yaitu cel dan fah. Cel diberikan nilai

dengan menggunakan fungsi scanf() lalu dimasukkan ke dalam rumus untuk menentukan

fah yaitu fah = 1.8 * cel + 32 hasil dari perhitungan tersebut kemudian di tampilkan ke

layar dengan fungsi printf().

5. Buat program untuk menginputkan satu karakter dari keyboard dan kemudian cetak

karakter tersebut ke layar.

Listing Program :

1

2

3

4

5

6

7

8

9

10

#include <stdio.h>

int main()

{

printf("Project Title : Tugas Percobaan Bab 04B no 2\n");

char kar;

printf("Masukkan 1 karakter lalu press enter : ");

kar = getchar();

printf("Hasil dari Input Keyboard adalah : %c\n", kar);

return 0;

}

Output Program :

Page 29: Buku tutorial pemprograman c

/* Buku Kumpulan Soal-Soal Pemorgaman C */ printf(“ Page 24 “)

Analisa :

Pertama adalah deklarasi variable bertipe char, lalu diberikan nilai dengan menggunakn

fungsi getchar(). Fungsi getchar() sendiri memang khusus digunakan untuk menerima

masukkan berupa sebuah karakter dari keyboard. Setelah variable kar meiliki nilai maka

langkah selanjutnya di cetak di layar menggunakan fungsi printf().

Page 30: Buku tutorial pemprograman c

/* Buku Kumpulan Soal-Soal Pemorgaman C */ printf(“ Page 25 “)

Bab 4 PENGAMBILAN KEPUTUSAN

A. TUJUAN

B. DASAR TEORI

Untuk keperluan pengambilan keputusan, C menyediakan beberapa jenis

pernyataan, berupa

Pernyataan if

Pernyataan if-else, dan

Pernyataan switch

Pernyataan-pernyataan tersebut memerlukan suatu kondisi, sebagai basis dalam

pengambilan keputusan. Kondisi umum yang dipakai berupa keadaan benar dan salah.

Operator Relasi

Operator relasi biasa dipakai untuk membandingkan dua buah nilai. Hasil

pembandingan berupa keadaan benar atau salah. Keseluruhan operator relasi pada

C

ditunjukkan pada Tabel 3-1

Tabel 3-1. Operasi relasi

Operator Makna >

>=

<

<=

==

!=

Lebih dari

Lebih dari atau sama dengan

Kurang dari

Kurang dari atau sama dengan

Sama dengan

Tidak sama dengan

1. Menjelaskan tentang operator kondisi (operator relasi dan

logika)

2. Menjelaskan penggunaan pernyataan if

3. Menjelaskan penggunaan pernyataan if-else

Page 31: Buku tutorial pemprograman c

/* Buku Kumpulan Soal-Soal Pemorgaman C */ printf(“ Page 26 “)

Operator Logika.

Operator logika biasa dipakai untuk menghubungkan ekspresi relasi. Keseluruhan

operator logika ditunjukkan pada tabel 3-2.

Tabel 3-2. Operator logika

Operator Makna

&&

||

!

dan (AND)

atau (OR)

tidak (NOT)

Bentuk pemakaian operator && dan || adalah

operand1 operator operand2

Pernyataan if

Pernyataan if mempunyai bentuk umum :

if (kondisi )

pernyataan;

Pernyataan if-else

Pernyataan if-else memiliki bentuk :

if (kondisi)

pernyataan-1;

else

pernyataan-2;

Pernyataan if di dalam if

Di dalam suatu pernyataan if (atau if-else) bisa saja terdapat pernyataan if (atau if-

else) yang lain. Bentuk seperti ini dinamakan sebagai nested if. Secara umum, bentuk

dari pernyataan ini adalah sebagai berikut :

if (kondisi-1)

if (kondisi-n)

.

.

else

Page 32: Buku tutorial pemprograman c

/* Buku Kumpulan Soal-Soal Pemorgaman C */ printf(“ Page 27 “)

else

Pernyataan else-if

Else if juga merupakan nested if ( if di dalam if )

if (kondisi-1)

.

.

else if (kondisi-n)

.

.

else

Pernyataan switch

Pernyataan switch merupakan pernyataan yang dirancang khusus untuk

menangani pengambilan keputusan yang melibatkan sejumlah alternatif, misalnya untuk

menggantikan pernyataan if bertingkat.

Bentuk umum pernyataan switch adalah :

switch (ekspresi)

{

case konstanta-1:

pernyataan-1;

......

break;

case konstanta-2:

.

.

.

case konstanta-n:

pernyataan-n;

.......

break;

default:

.......

.......

break;

}

C. PERCOBAAN

1. Buat program untuk menginputkan sebuah bilangan, kemudian cetak ke layar bilangan

Page 33: Buku tutorial pemprograman c

/* Buku Kumpulan Soal-Soal Pemorgaman C */ printf(“ Page 28 “)

tersebut dan beri komentar apakah bilangan tersebut ganjil atau genap.

Contoh input = 15

Output = Bilangan yang diinputkan adalah 15. Bilangan tersebut adalah

bilangan ganjil.

Listing Program :

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

#include "stdafx.h"

#include <stdio.h>

int main()

{

int Bil, b;

printf("MENENTUKAN BILANGAN GANJIL ATAU GENAP\n\n");

printf("Masukan bilangan = ");

scanf("%d", &Bil);

b = Bil % 2;

if(b == 0)

printf("Bilangan GENAP\n");

else

printf("Bilangan GANJIL\n");

}

Output Prorgam :

Analisa :

Program diatas menentukan bilangan ganjil/genap dengan menggunakan logika modulus

2. Dimana jika hasil modulus suatus bilangan dengan 2 maka akan dicetak “Bilangan

GENAP”, sebaliknya jika hasil modulusnya bukan 0 maka akan dicetak “Bilangan

GANJIL” (lihat Output).

2. Buat program menggunaan pernyataan if adalah untuk menentukan besarnya

potongan harga yang diterima oleh seorang pembeli, berdasarkan kriteria :

tidak ada potongan harga jika total pembelian kurang dari Rp. 100.000 (dalam

Page 34: Buku tutorial pemprograman c

/* Buku Kumpulan Soal-Soal Pemorgaman C */ printf(“ Page 29 “)

hal ini potongan harga diinisialisasi dengan nol).

bila total pembelian lebih dari atau sama dengan Rp. 100.000, potongan harga

yang diterima dirubah menjadi sebesar 5% dari total pembelian.

Contoh input = 50.000

Output = Total pembelian adalah Rp. 50.000

Listing Program :

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

#include "stdafx.h"

#include <stdio.h>

int main()

{

float harga, discount;

printf("Masukan Total Pembelian = Rp.");

scanf("%f",&harga);

discount = harga * 0.05f;

if(harga>=100000)

{

printf("Discount = %.0f\n", discount);

printf("Total Pembelian = %.0f\n", harga - discount);

}

else{

printf("Total Pembelian = %.0f\n", harga);

printf("Tidak ada discount");

}

}

Output Prorgam :

Analisa :

Program diatas adalah langkah utama dalam menentukan apakah harga yang diinputkan

mendapatkan diskon atau tidak untuk mengerjakan program kasir, yang lebih kompleks.

Page 35: Buku tutorial pemprograman c

/* Buku Kumpulan Soal-Soal Pemorgaman C */ printf(“ Page 30 “)

Menggunakan decision, dengan sebelumnya mendeklarasikan discount = harga *

0.05f , maka akan mendapatkan hasil jika harga pembelian melebihi 100.000 sebanyak

5%. Selain itu total pembelian akan tetap

3. Gunakan pernyataan if…else untuk membuat program yang menerima 2 buah

bilangan bulat masukan. Tampilkan hasil dari pembagian bilangan pertama dengan

bilangan kedua, dengan ketelitian 3 desimal.

Input : bil1 dan bil2

Output : hasil bagi bil1 dengan bil2

Listing Program :

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

#include <stdio.h>

int main()

{

float Bil1, Bil2;

printf("OPERASI PEMBAGIAN\n\n");

printf("Masukan bilangan = ");

scanf("%f", &Bil1);

printf("Masukan bilangan = ");

scanf("%f", &Bil2);

if(Bil2 > 0)

printf("Hasil = %.3f\n", Bil1/Bil2);

else

printf("Division by zero\n");

}

Output Prorgam :

Analisa :

Page 36: Buku tutorial pemprograman c

/* Buku Kumpulan Soal-Soal Pemorgaman C */ printf(“ Page 31 “)

Program pembagian ini hanya bias dibagi bilangan apapun kecuali 0, sebab dalam

perintah decision-nya jika, bilangan pembaginya 0, otomatis hasilnya yang dicetak adalh

“Division by zero”, selain itu tetap bias dibagi dengan disimpan pada variabel Hasil

dengan tipe data float.

4. Buatlah program untuk menghitung diskriminan dan mencari akar-akar dari

persamaan kuadrat :

ax2 + bx + c = 0 , dengan ketentuan sbb :

D = b2 - 4ac

- Jika D = 0 , maka terdapat 2 akar real yang kembar, yaitu : x1 = x2 = -b / 2a

- Jika D > 0 , maka terdapat 2 akar real yang berlainan, yaitu :

o x1 = (-b + sqrt(D)) / 2a x2 = (-b - sqrt(D)) / 2a

- Jika D < 0 , maka terdapat 2 akar imaginair yang berlainan, yaitu :

o x1 = -b / 2a + (sqrt(-D)/2a) i

o x2 = -b / 2a - (sqrt(-D) / 2a) i

- Input : a, b, c (float)

- Output : Nilai Diskriminan serta nilai akar-akar persamaan tsb (x1& x2).

- Petunjuk :

o untuk mencari akar dari x, gunakan : sqrt(x) yang didefinisikan pada

<math.h>.

o gunakan else if

Listing Program :

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

#include "stdafx.h"

#include <stdio.h>

#include <math.h>

int main()

{

float a, b, c, D;

printf("Diskriminan dan akar akar dari persamaan kuadrat\n\n");

printf("Masukkan a = ");

scanf("%f",&a);

printf("Masukkan b = ");

scanf("%f",&b);

printf("Masukkan c = ");

scanf("%f",&c);

D = (b * b) - (4 * a * c);

if(D!=0)

{

if(D > 0)

{

Page 37: Buku tutorial pemprograman c

/* Buku Kumpulan Soal-Soal Pemorgaman C */ printf(“ Page 32 “)

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

printf("Diskriminan = %.2f\n", D);

printf("X1 = %.2f\n", (-b + sqrt(D)) / (2 * a));

printf("X2 = %.2f\n", (-b - sqrt(D)) / (2 * a));

}

else

{

printf("Diskrimanan = %.2f\n", D);

printf("X1 = %.2f\n", (-b / (2 * a) + (sqrt(-D)) / (2 * a)));

printf("X2 = %.2f\n", (-b / (2 * a) - (sqrt(-D)) / (2 * a)));

}

}

else

{

printf("Diskriminan = %.2f\n", D);

printf("X1 = %.2f\n", -b / (2 * a));

printf("X2 = %.2f\n", -b / (2 * a));

}

}

Output Prorgam :

Analisa :

Program yang ini untuk menentukan diskriminan, 𝑥1 dan 𝑥2 suatu persamaan yang setiap

variabelnya berupa input-an dari user. Logika yang dipakai adalah jika D (diskriminan

dari hasil 𝑏2 − 4 𝑎 𝑐) sama dengan 0 atau tidak. Jika D ≠0 maka akan masuk ke dalam

nested decision. Antara D > 0 atau D < 0. Selanjutnya akan disesuaikan dengan rumus

matematika untuk mencari 𝑥1 dan 𝑥2-nya. Setelah 𝑥1 dan 𝑥2 sudah ditemukan, maka

akan dicetak 𝑥1 dan 𝑥2-nya.

5. Dengan menggunakan pernyataan else..if , buatlah program kalkulator sederhana,

untuk mendapatkan tanpilan hasil sebagai berikut :

Masukkan bilangan pertama : 5

Page 38: Buku tutorial pemprograman c

/* Buku Kumpulan Soal-Soal Pemorgaman C */ printf(“ Page 33 “)

Masukkan bilangan kedua : 3

Menu Matematika

1. Penjumlahan

2. Pengurangan

3. Pembagian

4. Perkalian

Masukkan pilihan anda : 4

Hasil operasi tersebut = 15

Listing Program :

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

#include <stdio.h>

int main()

{

float a, b;

int Menu;

printf("OPERASI MATEMATIKA\n\n");

printf("Masukkan a = ");

scanf("%f",&a);

printf("Masukkan b = ");

scanf("%f",&b);

printf("\n");

printf("PILIH MENU OPERASI MATEMATIKA\n\n");

printf("1. Penjumlahan\n");

printf("2. Pengurangan\n");

printf("3. Pembagian\n");

printf("4. Perkalian\n");

printf("Masukan Pilihan = ");

scanf("%d",&Menu);

if(Menu == 1)

printf("Hasil Penjumlahan = %.1f\n", a + b);

else if(Menu == 2)

printf("Hasil Pengurangan = %.1f\n", a - b);

else if(Menu == 3)

printf("Hasil Pembagian = %.1f\n", a / b);

else if (Menu == 4)

printf("Hasil Perkalian = %.1f\n", a * b);

else

printf("Tidak dalam menu\n");

Page 39: Buku tutorial pemprograman c

/* Buku Kumpulan Soal-Soal Pemorgaman C */ printf(“ Page 34 “)

32 }

Output Prorgam :

Analisa :

Pada program matematika sederhana ini yang menjadi patokannya adalah input-an dari

user untuk menentukan operasi matematika yang dipakai, yang sebelumnya variabel a

dan b sudah diisi user. Decision utamanya terdapat pada pilihan menunya, jika user

memasukkan pilihan 1 maka yang diproses adalah decision penjumlahan, begitu

seterusnya. Untuk pembagian tidak ada larangan untuk pembaginya.

6. Buat program untuk mengkonversikan nilai angka ke nilai huruf.

Petunjuk :

nilai_angka<=40 = E

40<nilai_angka<=55 = D

55<nilai_angka<=60 = C

60<nilai_angka<=80 = B

80<nilai_angka<=100 = A

Input : nilai_angka = 62

Output : Nilai huruf adalah B

Listing Program :

1

2

3

4

5

6

7

8

9

#include <stdio.h>

int main()

{

int Nilai;

printf("Masukkan nilai = ");

scanf("%d", &Nilai);

if (Nilai <= 100 && Nilai >= 0)

Page 40: Buku tutorial pemprograman c

/* Buku Kumpulan Soal-Soal Pemorgaman C */ printf(“ Page 35 “)

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

{

if(Nilai <= 40)

printf("Nilai Huruf = E\n");

else

if(Nilai > 40 && Nilai <= 55)

printf("Nilai Huruf = D\n");

else

if(Nilai > 55 && Nilai <= 60)

printf("Nilai Huruf = C\n");

else

if(Nilai > 60 && Nilai <= 80)

printf("Nilai Huruf = B\n");

else

if(Nilai > 80 && Nilai <= 100)

printf("Nilai Huruf = A\n");

}

else

printf("Nilai yang dimasukkan salah\n");

}

Output Prorgam :

Analisa :

Dalam program ini untuk mengubah nilai angka menjadi nilai huruf, dimana setelah user

sudah meng-input-kan nilai, akan diolah pada decision-nya sesuai dengan ketentuan yang

ada, jika user salah menginputkan nilai atau yang diisi bukan berupa angka akan muncul

“NILAI YANG DIMASUKKAN SALAH”.

7. Tulislah kembali pernyataan-pernyataan di bawah ini dengan menggunakan pernyataan

switch

if( letter == 'X' )

sum = 0;

else if ( letter == 'Z' )

valid_flag = 1;

else if( letter == 'A' )

Page 41: Buku tutorial pemprograman c

/* Buku Kumpulan Soal-Soal Pemorgaman C */ printf(“ Page 36 “)

sum = 1;

else

printf("Unknown letter -->%c\n", letter );

Listing Program :

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

#include <stdio.h>

int main()

{

printf("Project Title : Tugas Pendahuluan Bab 04A no 01”);

//Jawaban

int var_bulat = 32767;

float var_pecahan1 = 339.2345678f;

double var_pecahan2 = 3.4567e+40;

char var_karakter = 'S';

printf("var_bulat = %d\n", var_bulat);

printf("var_pecahan1 = %f\n", var_pecahan1);

printf("var_pecahan2 = %g\n", var_pecahan2);

printf("var_karakter = %c\n", var_karakter);

return 0;

}

Output Prorgam :

Analisa :

Soal nomor 1 merupakan penerapan dari syntax printf(“string control”, daftar argument)

dengan menngunakan beberapa variable dengan tipe data berbeda. String control yang

digunakan juga harus sesuai dengan tipe data variable yang akan kita gunakan. Contoh

utnuk variable dengan tipe data Integer kita menggunakan %d, tipe data float %f, tipe

data double %g (range lebih luas dari pada float) dan untuk karakter %c.

8. Ubahlah program di bawah ini, implementasikan kembali dengan menggunakan

pernyataan switch

Page 42: Buku tutorial pemprograman c

/* Buku Kumpulan Soal-Soal Pemorgaman C */ printf(“ Page 37 “)

main()

{

int valid_operator = 1;

//valid_operator diinisialisasi dengan logika 1 char

operator;

float number1, number2, result;

printf("Masukkan 2 buah bilangan & sebuah operator\n");

scanf("%f %c %f", &number1, &operator, &number2);

if(operator == '*')

result = number1 * number2;

else if(operator == '/')

result = number1 / number2;

else if(operator == '+')

result = number1 + number2;

else if(operator == '-')

result = number1 - number2;

else

valid_operator = 0;

if(valid_operator)

printf("\n%g %c %g is %g\n", number1, operator, number2,

result );

else

printf("Invalid operator!\n");

}

Listing Program :

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

#include <stdio.h>

int main()

{

printf("Project Title : Tugas Pendahuluan Bab 04A no 01”);

//Jawaban

int var_bulat = 32767;

float var_pecahan1 = 339.2345678f;

double var_pecahan2 = 3.4567e+40;

char var_karakter = 'S';

printf("var_bulat = %d\n", var_bulat);

printf("var_pecahan1 = %f\n", var_pecahan1);

printf("var_pecahan2 = %g\n", var_pecahan2);

printf("var_karakter = %c\n", var_karakter);

return 0;

}

Output Prorgam :

Page 43: Buku tutorial pemprograman c

/* Buku Kumpulan Soal-Soal Pemorgaman C */ printf(“ Page 38 “)

Analisa :

Soal nomor 1 merupakan penerapan dari syntax printf(“string control”, daftar argument)

dengan menngunakan beberapa variable dengan tipe data berbeda. String control yang

digunakan juga harus sesuai dengan tipe data variable yang akan kita gunakan. Contoh

utnuk variable dengan tipe data Integer kita menggunakan %d, tipe data float %f, tipe

data double %g (range lebih luas dari pada float) dan untuk karakter %c.

9. Buatlah program untuk menampilkan menu dan melakukan proses sbb :

Menu :

1. Menghitung volume kubus

2. Menghitung luas lingkaran

3. Menghitung volume silinder. Input : pilihan user (1, 2 atau 3)

Jika pilihan = 1, maka :

Input : panjang sisi kubus

Output : Volume kubus (vol = sisi3)

Jika pilihan = 2, maka :

Input : panjang jari-jari lingkaran

Output : Luas lingkaran (luas = 3.14 * r2)

Jika pilihan = 3, maka :

Input : panjang jari-jari lingkaran & tinggi silinder

Output : Volume silinder (vol = 3.14 * r2 * t)

Jika pilihan selain 1, 2 & 3 (default) : Tampilkan pesan kesalahan.

Petunjuk : gunakan switch-case

Listing Program :

1

2

3

4

5

6

7

8

9

#include <stdio.h>

int main()

{

printf("Project Title : Tugas Pendahuluan Bab 04A no 01”);

//Jawaban

int var_bulat = 32767;

float var_pecahan1 = 339.2345678f;

double var_pecahan2 = 3.4567e+40;

Page 44: Buku tutorial pemprograman c

/* Buku Kumpulan Soal-Soal Pemorgaman C */ printf(“ Page 39 “)

10

11

12

13

14

15

16

17

18

char var_karakter = 'S';

printf("var_bulat = %d\n", var_bulat);

printf("var_pecahan1 = %f\n", var_pecahan1);

printf("var_pecahan2 = %g\n", var_pecahan2);

printf("var_karakter = %c\n", var_karakter);

return 0;

}

Output Prorgam :

Analisa :

Soal nomor 1 merupakan penerapan dari syntax printf(“string control”, daftar argument)

dengan menngunakan beberapa variable dengan tipe data berbeda. String control yang

digunakan juga harus sesuai dengan tipe data variable yang akan kita gunakan. Contoh

utnuk variable dengan tipe data Integer kita menggunakan %d, tipe data float %f, tipe

data double %g (range lebih luas dari pada float) dan untuk karakter %c.

10. Tulislah kembali pernyataan-pernyataan di bawah ini dengan menggunakan pernyataan switch

if( letter == 'X' )

sum = 0;

else if ( letter == 'Z' )

valid_flag = 1;

else if( letter == 'A' )

sum = 1; else

printf("Unknown letter -->%c\n", letter );

Listing Program :

Page 45: Buku tutorial pemprograman c

/* Buku Kumpulan Soal-Soal Pemorgaman C */ printf(“ Page 40 “)

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

#include <stdio.h>

int main()

{

char letter;

int sum, valid_flag;

printf("Masukkan satu abjad = ");

scanf("%c",&letter);

switch(letter)

{

case 'X':

sum = 0;

break;

case 'Z':

valid_flag = 1;

break;

case 'A':

sum = 1;

break;

default :

printf("Unknown letter --> %c\n", letter );

break;

}

}

Output Prorgam :

Analisa :

Pada program ini adalah untuk menyaring sebuah input-an huruf. Antara lain hanya huruf

X, Z, dan A, dimana kasus decision yang dipakai adalah jika input kata yang dimasukkan

X maka variabel sum akan bernilai 0, jika A maka variabel sum bernilai 1, selain itu

huruf yang di inputkan tidak bernilai namun dicetak kembali huruf yang tadi di-input-

kan.

11. Ubahlah program di bawah ini, implementasikan kembali dengan menggunakan pernyataan

switch main()

{

int valid_operator = 1;

//valid_operator diinisialisasi dengan logika 1

char operator;

float number1, number2, result;

Page 46: Buku tutorial pemprograman c

/* Buku Kumpulan Soal-Soal Pemorgaman C */ printf(“ Page 41 “)

printf("Masukkan 2 buah bilangan & sebuah operator\n");

printf("dengan format : number1 operator number2\n\n");

scanf("%f %c %f", &number1, &operator, &number2);

if(operator == '*')

result = number1 * number2;

else if(operator == '/')

result = number1 / number2;

else if(operator == '+')

result = number1 + number2;

else if(operator == '-')

result = number1 - number2;

else

valid_operator = 0;

if(valid_operator)

printf("\n%g %c %g is %g\n", number1, operator,

number2, result );

else printf("Invalid operator!\n");

}

Listing Program :

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

#include<stdio.h>

int main()

{

int valid_operator = 1;

//valid_operator diinisialisasi dengan logika 1

char op;

float number1, number2, result;

printf("Masukkan 2 buah bilangan & sebuah operator\n");

printf("dengan format : number1 operator number2\n\n");

scanf("%f %c %f", &number1, &op, &number2);

switch(op){

case '*':

result = number1 * number2;break;

case '/':

result = number1 / number2;break;

case '+':

result = number1 + number2;break;

case '-':

result = number1 - number2;break;

default :

valid_operator = 0;break;

}

Page 47: Buku tutorial pemprograman c

/* Buku Kumpulan Soal-Soal Pemorgaman C */ printf(“ Page 42 “)

25

26

27

28

29

30

if(1)

printf("\n%g %c %g is %g\n", number1, op, number2, result );

else

printf("Invalid operator!\n");

}

Output Prorgam :

Analisa :

Sama seperti kasus pada PRAKTIKUM 5.2 nomor 2, namun kali ini menggunakan

decision berupa switch case, bedanya yang menjadi patokan decision-nya di

program ini langsung ke operasi matematikanya(e,g +, -. *, /) , tanpa menggunakan angka

(e.g 1, 2, 3, etc) sebagai patokan operasi matematikanya. Jika terjadi default atau

opearsi yang dimasukkan tidak ada dalam operasi matematika variabel

valid_operator akan bernilai 0, yang selanjutnya dilanjutkan pada decision if

untuk mencetak kalimat “INVALID OPERATOR”. Selain itu pada decision if nya akan

mencetak hasil sesuai yang di-input-kan

Page 48: Buku tutorial pemprograman c

/* Buku Kumpulan Soal-Soal Pemorgaman C */ printf(“ Page 43 “)

Bab 5 PERULANGAN

A. TUJUAN

B. DASAR TEORI

1. Perulangan For

Bentuk pernyataan for :

for (ungkapan1; ungkapan2; ungkapan3)

pernyataan;

Keterangan:

Ungkapan1 : digunakan untuk memberikan inisialisasi terhadap variabel

pengendali loop.

Ungkapan2 : dipakai sebagai kondisi untuk keluar dari loop.

Ungkapan3 : dipakai sebagai pengatur kenaikan nilai variabel pengendali loop.

Ketiga ungkapan dalam for tersebut harus dipisahkan dengan tanda titik koma (;).

Dalam hal ini pernyatan bisa berupa pernyataan tunggal maupun jamak. Jika

pernyataannya berbentuk jamak, maka pernyataan-pernyataan tersebut harus diletakkan

di antara kurung kurawal buka ({) dan kurung kurawal tutup (}), sehingga formatnya

menjadi :

for (ungkapan1; ungkapan2; ungkapan3)

{

pernyataan;

pernyataan;

.

.

.

}

2. Perulangan While

1. Menjelaskan tentang perulangan loop for, while dan do

while

2. Menjelaskan variasi-variasi looping

3. Menggunakan continue dan break

Page 49: Buku tutorial pemprograman c

/* Buku Kumpulan Soal-Soal Pemorgaman C */ printf(“ Page 44 “)

while atau do-while digunakan jika loop belum ditentukan berapa banyak

perulangannya. Menggunakan pernyataan while ketika kondisi perluangan diperiksa

sebelum menjalankan pernyataan dan menggunakan do_while ketika perulangan

kodisi perulangan tersebut diperiksa setelah mejalankan pernyataan.

Pada pernyataan while, pemeriksaan terhadap loop dilakukan di bagian

awal (sebelum tubuh loop). Pernyataan while akan diulangi terus selama kondisi

bernilai benar, atau diulangi selama kondisinya benar, jika kondisinya salah maka

perulangan (loop) dianggap selesai. Lebih jelasnya, bentuk pernyataan while adalah

sebagai berikut :

while (kondisi)

pernyataan;

3. Break dan Continue

Fungsi break digunakan untuk keluar dari perulangan, sedangkan continue

digunakan agar program kembali ke perulangan awal dan mengabaikan list code

selanjutnya.

4. Perulangan Nested Loop

Nested loop memungkinkan adanya loop di dalam suatu loop. Contoh nesteed

loop dengan loop for

for (baris = 1; baris <= MAKS; baris++) {

for (kolom = 1; kolom <= MAKS; kolom++) {

hasil_kali = baris * kolom;

printf ("%2d", hasil_kali);

}

printf("\n"); /* pindah baris */

}

C. PERCOBAAN

1. Gunakan loop for untuk menampilkan nilai 1 sampai dengan 20 dalam baris-baris yang

terpisah

Listing Program :

1

2

3

4

#include<stdio.h>

#include<conio.h>

int main(){

Page 50: Buku tutorial pemprograman c

/* Buku Kumpulan Soal-Soal Pemorgaman C */ printf(“ Page 45 “)

5

6

7

8

9

int nilai;

for(nilai = 1; nilai <=20; nilai ++)

printf("nilai %d\n", nilai);

getch();

}

Output Program :

Analisa :

Dalam program ini diminta untuk menampilkan nilai mulai 1 sampai <= 20 dengan

menggunakan for dan while

2. Hitunglah bilangan triangular dari masukan pengguna, yang dibaca dari keyboard

dengan menggunakan scanf(). Bilangan triangular adalah penjumlahan dari bilangan

masukan dengan seluruh bilangan sebelumnya, sehingga bilangan triangular dari 7

adalah : 7 + 6 + 5 + 4 + 3 + 2 + 1

Listing Program :

1

2

3

4

5

6

7

8

9

10

#include<stdio.h>

#include<conio.h>

int main(){

int bil, n, hasil = 0;

printf("Masukan bil tringular yang kamu inginkan = ");

scanf("%d", &n);

printf("Output: ");

for (bil=n; bil >=1; bil--){

if(bil==1)

Page 51: Buku tutorial pemprograman c

/* Buku Kumpulan Soal-Soal Pemorgaman C */ printf(“ Page 46 “)

11

12

13

14

15

16

17

18

printf("%d", bil);

else

printf("%d + ", bil);

hasil += bil;

}

printf(" = %d\n", hasil);

getch();

}

Output Program :

Analisa :

Dalam program ini diminta untuk menampilkan bilangan triangular dangan sesuai yang

diinputkan oleh user. Dengan menggunakan for dan while.

3. Gunakan loop for untuk menampilkan seluruh karaker dari A sampai dengan Z dalam

baris-baris yang terpisah.

Listing Program :

1

2

3

4

5

6

7

8

9

10

#include<stdio.h>

#include<conio.h>

int main(){

char huruf;

for (huruf='A'; huruf <='Z'; huruf++){

printf("huruf %c\n", huruf);

}

getch();

}

Output Program :

Page 52: Buku tutorial pemprograman c

/* Buku Kumpulan Soal-Soal Pemorgaman C */ printf(“ Page 47 “)

Analisa :

Dalam program ini diminta untuk menampilkan huruf mulai A sampai >= Z dengan

menggunakan for dan while.

4. Gunakan loop for dengan kenaikan varibel negatif untuk menampilkan seluruh karaker

dari Z sampai dengan A dalam baris-baris yang terpisah.

Listing Program :

1

2

3

4

5

6

7

8

9

10

#include<stdio.h>

#include<conio.h>

int main(){

char huruf;

for (huruf='Z'; huruf >='A'; huruf--){

printf("huruf %c\n", huruf);

}

getch();

}

Output Program :

Page 53: Buku tutorial pemprograman c

/* Buku Kumpulan Soal-Soal Pemorgaman C */ printf(“ Page 48 “)

Analisa :

Dalam program ini diminta untuk menampilkan huruf mulai Z sampai >= A dengan

menggunakan for dan while.

5. Gunakan loop while untuk membuat program yang dapat menampilkan semua

karakter yang diketikkan di keyboard sampai yang diketikkan pada keybord huruf

„X‟ (x besar).

Listing Program :

1

2

3

4

5

6

7

8

9

10

11

12

13

14

#include<stdio.h>

#include<conio.h>

int main(){

char kar;

printf("\t\t.'KARAKTER'.\n");

printf("Input karakter yang anda inginkan adalah ");

scanf("%c", &kar);

while (kar!='X'){

printf("%c", kar);

scanf("%c",& kar);

}

getch();

}

Page 54: Buku tutorial pemprograman c

/* Buku Kumpulan Soal-Soal Pemorgaman C */ printf(“ Page 49 “)

Output Program :

Analisa :

Dalam program ini diminta untuk menampilkan karakter yang diinputkan oleh user

ketika inputkan X maka progam akan berhenti dan mencetak karakter sebelum X.

6. Gunakan loop while untuk membuat program yang dapat mencari total angka yang

dimasukkan dengan tampilan sebagai berikut :

Listing Program :

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

#include<stdio.h>

#include<conio.h>

int main(){

int bil, n=1, total=0;

char jawaban = 'y';

while (jawaban == 'y'){

printf("masukkan bil ke-%d= ", n);

scanf("%d", &bil);

printf("mau masukkan data lagi [y/t] ? ");

scanf(" %c", &jawaban);

total += bil;

n++;

}

printf("total bilangan = %d", total);

getch();

}

Page 55: Buku tutorial pemprograman c

/* Buku Kumpulan Soal-Soal Pemorgaman C */ printf(“ Page 50 “)

Output Program :

Analisa :

Dalam program ini diminta untuk menampilkan bilangan sesuai yang diinputkan oleh

user ketika menjawab „y‟ maka akan diminta untuk menginputkan bilangan, ketika

menjawab „t‟ maka akan dijumlahkan bilangan tersebut kemudian dicetak.

7. Pada program no 6 tambahkan rata-rata, maksimum dan minimum dari angka yang

dimasukkan.

Listing Program :

1

2

3

4

5

6

7

8

9

10

11

13

14

15

16

17

18

19

20

21

22

23

24

25

#include<stdio.h>

#include<conio.h>

int main(){

int bil, max, min;

float n=1, total=0;

float mean;

char jawaban = 'y';

while (jawaban == 'y'){

printf("masukkan bil ke-%.0f= ",n);

scanf("%d", &bil);

if(n==1){

max = bil;

min = bil;

}

printf("mau masukkan data lagi [y/t] ? ");

scanf(" %c", &jawaban);

total += bil;

n++;

if(bil >= max)

max=bil;

Page 56: Buku tutorial pemprograman c

/* Buku Kumpulan Soal-Soal Pemorgaman C */ printf(“ Page 51 “)

26

27

28

29

30

31

32

33

34

35

if (bil <= min)

min=bil;

}

printf("total bil = %.2f\n", total);

printf("mean = %.2ff\n", (total/(n-1)));

printf("bil max = %d\n", max);

printf("bil min = %d\n", min);

getch();

}

Output Program :

Analisa :

Dalam program ini diminta untuk menampilkan bilangan sesuai yang diinputkan oleh

user ketika menjawab „y‟ maka akan diminta untuk menginputkan bilangan, ketika

menjawab „t‟ maka akan dijumlahkan bilangan tersebut dan dicetak , kemudian mencetak

rata bilangan max dan min.

8. Gunakan while pada program yang digunakan untuk menghitung banyaknya

karakter dari kalimat yang dimasukkan melalui keyboard (termasuk karakter spasi).

Untuk mengakhiri pemasukan kalimat, tombol ENTER („\n‟) harus ditekan

Input : Ketikkan sembarang kalimat

Output : jumlah karakter = m jumlah spasi =n

Listing Program :

1

2

3

4

5

6

7

#include<stdio.h>

#include<conio.h>

int main(){

char kar = 'A';

int m=0, n=0;

printf("Input: ");

Page 57: Buku tutorial pemprograman c

/* Buku Kumpulan Soal-Soal Pemorgaman C */ printf(“ Page 52 “)

8

9

10

11

12

13

14

15

16

17

18

19

20

while(kar!=13){

kar = getch();

putchar(kar);

m++;

if(kar == ' ')

n++;

}

printf("\nOutput: \n");

printf("Jumlah karakter = %d", m-1);

printf("\nJumlah spasi = %d", n);

getch();

}

Output Program :

Analisa :

Dalam program ini diminta untuk menampilkan jumlah karakter dan jumlah spas

Karakter diinputkan oleh user kemudian akan mencetak jumlah karakter dan jumah spasi.

9. Dengan menggunakan pernyataan break, buatlah program yang dapat menampilkan

semua tampilan karakter yang diketikkan dan program berakhir ketika ditekan tombol

Enter.

Listing Program :

1

2

3

4

5

6

7

8

9

10

11

#include<stdio.h>

#include<conio.h>

int main(){

char kar;

printf("Ketik sembarang kalimat\n");

printf("Dan diakhiri dengan Enter\n\n");

while(1){

kar=getchar();

if(kar=='\n')

break;

Page 58: Buku tutorial pemprograman c

/* Buku Kumpulan Soal-Soal Pemorgaman C */ printf(“ Page 53 “)

12

13

14

15

}

printf("Selesai\n");

getch();

}

Output Program :

Analisa :

Dalam program ini diminta untuk menampilkan karakter yang diinputkan oleh user

ketika inputkan enter maka program akan selesai dan mencetak selesai.

10. Dengan menggunakan pernyataan continue, buatlah program yang dapat menampilkan

bilangan ganjil dari 1 sampai < n (n diinputkan), kecuali bilangan ganjil tersebut

kelipatan 3

Listing Program :

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

#include<stdio.h>

#include<conio.h>

int main(){

int n, i;

printf("\t.'Bilangan Ganjil dari 1 < n kecuali bilangan keliapatan 3'.\t\n");

printf("masukkan n =");

scanf("%d",&n);

for (i=1; i<n; i++){

if(i%2==1){

if(i%3==0)

continue;

printf("%d ", i);

}

}

getch();

}

Page 59: Buku tutorial pemprograman c

/* Buku Kumpulan Soal-Soal Pemorgaman C */ printf(“ Page 54 “)

Output Program :

Analisa :

Dalam program ini diminta untuk menampilkan bilangan ganjil mulai 1 sampai kurang

dari yang inputkan oleh user, kemudian ketika bilangan tersebut kelipatan 3 maka akan di

continue, dan bilangan ganjil tersebut dicetak.

11. Dengan menggunakan pernyataan break dan continue, buatlah program untuk membuat

program dengan input n, dan output, bilangan ganjil kecuali kelipatan 7 dan 11 mulai dari

1 sampai < n atau bilangan tersebut < 100.

Listing Program :

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

#include<stdio.h>

#include<conio.h>

int main(){

int n, i;

printf("\t.'Bilangan Ganjil tanpa Kelipatan 7 dan 11'.\t\n\n");

printf("masukkan n = ");

scanf("%d",&n);

for (i=1; i<n; i++){

if(i>=100)

break;

if(i%2==1){

if(i%7==0)

continue;

if(i%11==0)

continue;

printf("%d ", i);

}

}

printf("\nSelesai\n");

getch();

}

Output Program :

Page 60: Buku tutorial pemprograman c

/* Buku Kumpulan Soal-Soal Pemorgaman C */ printf(“ Page 55 “)

Analisa :

Dalam program ini diminta untuk menampilkan bilangan ganjil mulai 1 sampai kurang

dari yang inputkan oleh user, kemudian ketika bilangan tersebut kelipatan 3, 7 dan 11

maka akan di continue, dan bilangan ganjil tersebut dicetak.

12. Buatlah program untuk menerima daftar nilai mahasiswa sbb:

Input : - Jumlah data (n)

- Nilai ke-1 s/d Nilai ke-n

Output : - Nilai minimal

- Nilai maksimal

- Nilai rata-rata (rata-rata= nilai total / jumlah data)

(Petunjuk : Gunakan loop For dan seleksi kondisi dengan if)

Listing Program :

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

#include<stdio.h>

#include<conio.h>

int main(){

int n, i;

float mean=0;

int total=0, nilai, max, min;

printf("\t\t.'Menerima Daftar Nilai Mahasiswa'.\t\t\n\n");

printf("masukan jumlah data = ");

scanf("%d", &n);

for(i=1;i<=n;i++){

printf("jumlah data ke-%d= ", i);

scanf("%d", &nilai);

if(i==1){

max=nilai;

min=nilai;

}

total += nilai;

if(nilai >= max)

max=nilai;

Page 61: Buku tutorial pemprograman c

/* Buku Kumpulan Soal-Soal Pemorgaman C */ printf(“ Page 56 “)

21

22

23

24

25

26

27

28

29

30

if(nilai <= min)

min=nilai;

}

printf("total nilai = %d\n", total);

mean=(float)total/n;

printf("mean = %.2f\n", mean);

printf("nilai max = %d\n", max);

printf("nilai min = %d\n", min);

getch();

}

Output Program :

Analisa :

Dalam program ini diminta untuk menampilkan daftar nilai mahasiswa. Jumlah data yang

diinputkan oleh user kemudian user menginputkan nilai tersebut, lalu menjumlahkan nilai

tersebut

13. Dengan menggunakan pernyataan nested loop, buatlah program berikut:

Input: n

output:

1 2 3 4 5…n

1 2 3 4 5…n

1 2 3 4 5…n

……

1 2 3 4 5…n

Listing Program :

1

2

3

4

5

#include<stdio.h>

#include<conio.h>

int main(){

int i, j, n;

n kali

Page 62: Buku tutorial pemprograman c

/* Buku Kumpulan Soal-Soal Pemorgaman C */ printf(“ Page 57 “)

6

7

8

9

10

11

12

13

14

printf("Masukan bilangan n = ");

scanf("%d", &n);

for (i= 1;i<=n;i++){

for (j=1;j<=n;j++)

printf("%d ", j);

printf("\n");

}

getch();

}

Output Program :

Analisa :

Dalam program ini diminta untuk menampilkan mengurutkan bilangan dimulai dari 1

sampai n, yang dimana n adalah inputan dari user. Menggunakan nested loop yang

dicetak j, j merupakan untuk kolom sehingga mencetak jumlahnya baris dan kolom

sesuai n dan setiap ganti baris dimulai dari 1.

14. Dengan menggunakan pernyataan nested loop, buatlah program berikut:

input: n

output:

1

2 2

3 3 3

…….

n n n n n

Listing Program :

1

2

3

4

5

#include<stdio.h>

#include<conio.h>

int main(){

int i, j, n;

n kali

Page 63: Buku tutorial pemprograman c

/* Buku Kumpulan Soal-Soal Pemorgaman C */ printf(“ Page 58 “)

6

7

8

9

10

11

12

13

14

printf("masukkan n= ");

scanf("%d", &n);

for (i=1;i<=n;i++){

for (j=1;j<=i;j++)

printf("%d ", i);

printf("\n");

}

getch();

}

Output Program :

Analisa :

Dalam program ini diminta untuk menampilkan mengurutkan bilangan dimulai dari 1

sampai n, yang dimana n adalah inputan dari user. Menggunakan nested loop yang

dicetak i, i merupakan untuk baris sehingga mencetak jumlahnya kolom dan baris sesuai

n dan setiap ganti baris dimulai dari 1 kemudian diincremen sampai n.

15. Dengan menggunakan pernyataan nested loop, buatlah program berikut:

input: n

output:Bilangan prima ke n 3 5 7 11….

Listing Program :

1

2

3

4

5

6

7

8

9

10

11

#include<stdio.h>

#include<conio.h>

int main(){

int n, i, j, faktor, hitung=0;

printf("\t\t.'Bilangan Prima.'\t\t\n");

printf("masukkan n= ");

scanf("%d", &n);

i=2;

while(1){

faktor=0;

Page 64: Buku tutorial pemprograman c

/* Buku Kumpulan Soal-Soal Pemorgaman C */ printf(“ Page 59 “)

12

13

14

15

16

17

18

19

20

21

22

23

24

25

for(j=1;j<=i;j++){

if(i%j==0)

faktor++;

}

if(faktor==2){

printf("%d ", i);

hitung++;

}

if(hitung==n)

break;

i++;

}

getch();

}

Output Program :

Analisa :

Dalam program ini diminta untuk menampilkan bilangan prima dimulai dari 2 sampai n,

yang dimana n adalah inputan dari user. Menggunakan nested loop, bilangan prima

merupakan bilangan yang memiliki factor pembaginya adalah 1 dan bilangan itu sendiri.

16. Dengan menggunakan pernyataan nested loop, buatlah program berikut:

input: n

output: 0 1 3 6 10 15 21 28…..Bilangan ke n

Listing Program :

1

2

3

4

5

6

7

8

#include<stdio.h>

#include<conio.h>

int main(){

int i=0, j, n, nilai=0;

printf("masukkan n= ");

scanf("%d", &n);

while(i<n){

Page 65: Buku tutorial pemprograman c

/* Buku Kumpulan Soal-Soal Pemorgaman C */ printf(“ Page 60 “)

9

10

11

12

13

14

15

16

for(j=0;j<i;j++){

nilai++;

}

i++;

printf("%d ", nilai);

}

getch();

}

Output Program :

Analisa :

Dalam program ini diminta untuk menampilkan bilangan dimulai dari 0 sampai n, yang

dimana n adalah inputan dari user. Menggunakan nested loop, kemudian untuk bilangan

selanjutnya dijumlahkan dengan bilangan sesuai urutannya.

17. Pada program nomor 16 diatas tambahkan tanyaan “apakah anda inginkan keluar

(y/t)?”, erntaan tersebut hanya bias di jawab dengan huruf „y‟ (y kecil) dan „t‟ (t kecil).

Dan akan keluar dari program setelah dijawab dengan „y‟ (y keci

Listing Program :

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

#include<stdio.h>

#include<conio.h>

#include<stdlib.h>

int main(){

int i, j, n, nilai;

char jawab;

do{

nilai = 0;i = 0;

printf("masukkan n= ");

scanf("%d", &n);

while(i<n){

for(j=0;j<i;j++){

nilai++;

}

i++;

Page 66: Buku tutorial pemprograman c

/* Buku Kumpulan Soal-Soal Pemorgaman C */ printf(“ Page 61 “)

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

printf("%d ", nilai);

}

printf("\napakah anda ingin keluar(y/t) ? ");

fflush(stdin);

jawab = getchar();

if(jawab != 't')

exit(0);

else

jawab = 'y';

}

while(jawab == 'y');

getch();

}

Output Program :

Analisa :

Dalam program ini diminta untuk menampilkan daftar nilai mahasiswa. Jumlah data yang

diinputkan oleh user kemudian user menginputkan nilai tersebut, lalu menjumlahkan nilai

tersebut

18. Buatlah program untuk menghitung factorial dari bilangan yang diinputkan dengan syarat

tidak boleh menggunakan operator perkalian hanya dengan operator tambahan! Contoh:

Input : 4

Output: 24 (faktorial dari 4)

Listing Program :

Page 67: Buku tutorial pemprograman c

/* Buku Kumpulan Soal-Soal Pemorgaman C */ printf(“ Page 62 “)

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

#include<stdio.h>

#include<conio.h>

#include<stdlib.h>

int main(){

int hasil,i,j,a,b,c;

printf("\t\t.'Faktorial'.\t\t\n\n");

printf ("Input nilai a: ");

scanf ("%d",&a);

printf("\n");

if(a == 0){

printf("Nilai faktorial = 0\n");

}else{

hasil = a;

b = a - 2;

for(i=b;i>=1;i--){

c = hasil;

for(j=i;j>=1;j--){

hasil = hasil + c;

}

}

if ( hasil == 0)

printf("Nilai faktorial = 1\n\n");

else

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

}

getch();

}

Output Program :

Analisa :

Page 68: Buku tutorial pemprograman c

/* Buku Kumpulan Soal-Soal Pemorgaman C */ printf(“ Page 63 “)

Dalam program ini diminta untuk menampilkan daftar nilai mahasiswa. Jumlah data yang

diinputkan oleh user kemudian user menginputkan nilai tersebut, lalu menjumlahkan nilai

tersebut

Page 69: Buku tutorial pemprograman c

/* Buku Kumpulan Soal-Soal Pemorgaman C */ printf(“ Page 64 “)

Bab 6 FUNGSI

A. TUJUAN

B. DASAR TEORI

Fungsi adalah suatu bagian dari program yang dirancang untuk melaksanakan

tugas tertentu dan letaknya dipisahkan dari program yang menggunakannya. Elemen

utama dari program bahasa C berupa fungsi-fungsi, dalam hal ini program dari bahasa C

dibentuk dari kumpulan fungsi pustaka (standar) dan fungsi yang dibuat sendiri oleh

pemrogram. Fungsi banyak digunakan pada program C dengan tujuan :

a. Program menjadi terstruktur, sehingga mudah dipahami dan mudah dikembangkan.

Dengan memisahkan langkah-langkah detail ke satu atau lebih fungsi-fungsi, maka

fungsi utama (main()) menjadi lebih pendek, jelas dan mudah dimengerti.

b. Dapat mengurangi pengulangan (duplikasi) kode. Langkah-langkah program yang

sama dan dipakai berulang-ulang di program dapat dituliskan sekali saja secara

terpisah dalam bentuk fungsi-fungsi. Selanjutnya bagian program yang

membutuhkan langkah-langkah ini tidak perlu selalu menuliskannya, tetapi cukup

memanggil fungsi-fungsi tersebut.

Parameter Formal dan Parameter Aktual Parameter formal adalah variabel yang ada pada daftar parameter dalam definisi

fungsi. Pada contoh program di atas misalnya, maka dalam fungsi jumlah() variabel x

dan y dinamakan sebagai parameter formal. Adapun parameter aktual adalah parameter

(tidak selalu berupa variabel) yang dipakai dalam pemanggilan fungsi.

C. PERCOBAAN

1. Buatlah sebuah fungsi yang berfungsi untuk menampilkan sebuah string (di layar)

1. Memecah program dalam fungsi-fungsi yang sederhana

2. Menejelaskan tentang pemrogaman terstruktur

Page 70: Buku tutorial pemprograman c

/* Buku Kumpulan Soal-Soal Pemorgaman C */ printf(“ Page 65 “)

= “Pilihan Menu” (misalkan nama fungsinya = menu). Fungsi tersebut tidak

memiliki nilai kembalian (return value) dan juga tidak menerima parameter masukan

apapun.

Tulislah prototipe fungsi untuk fungsi tersebut.

Buat function main untuk memanggil function menu() secara berulang-ulang, dengan

jumlah perulangan yang merupakan input dari user.

Listing Program :

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

#include<stdio.h>

void menu(void);

main()

{

int n, i;

printf("Masukkannilaiperulangan : ");

scanf("%d", &n);

for (i=0; i<n; i++)

{

menu();

}

}

void menu(void)

{

printf("Pilihan Menu\n");

}

Output Program :

Page 71: Buku tutorial pemprograman c

/* Buku Kumpulan Soal-Soal Pemorgaman C */ printf(“ Page 66 “)

Analisa :

Progam diatas menggunakan dua fungsi. Fungsi void main() digunakan untuk mencetak

sebuah string dan fungsi main() digunakan untuk menginputkan berapa kali string

tersebut dicetak.

2. Buatlah sebuah fungsi untuk menghitung jumlah triangular n (misal nama

fungsinya = triangular). Fungsi tersebut memiliki sebuah parameter berupa bilangan

int (n) yang akan dicari triangularnya serta tidak memiliki nilai kembalian (return

value)

Tulislah prototipe fungsi untuk fungsi tersebut.

Buat function main untuk memanggil function triangular() tersebut dengan nilai n

yang merupakan input dari user.

Listing Program :

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

#include <stdio.h>

int triangular (int);

main()

{

int n;

printf("Masukkan nilai n : ");

scanf("%d", &n);

triangular(n);

}

int triangular (int n)

{

int c=0, a;

n;

for (a=0; a<=n; a++)

c=a+c;

printf("Hasilnya = %d\n", c);

return n;

}

Output Program :

Page 72: Buku tutorial pemprograman c

/* Buku Kumpulan Soal-Soal Pemorgaman C */ printf(“ Page 67 “)

Analisa :

Program diatas menggunakan dua fungsi. Fungsi main() digunakan untuk memasukkan

berapa banyak triangular dan fungsi int triangular() terdapat looping dari 0 sampai ke n

dimana dalam proses looping tersebut terdapat proses perjumlahan kemudian dicetak.

3. Buatlah sebuah fungsi untuk menghitung nilai bilangan kuadrat (misal nama

fungsinya = kuadrat). Fungsi tersebut memiliki sebuah parameter bertipe float, yaitu

bilangan yang akan dikuadratkan serta memiliki sebuah return value bertipe float,

yaitu hasil kuadratnya

Tulislah prototipe fungsi untuk fungsi tersebut.

Buat function main untuk memanggil function kuadrat() tersebut dengan

bilangan x yang akan dicari kuadratnya merupakan input dari user.

Listing Program :

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

#include <stdio.h>

float kuadrat(float);

main()

{

float bil;

printf("Masukkannilai x : ");

scanf("%f", &bil);

kuadrat(bil);

}

float kuadrat(float bil)

{

float hasil;

hasil;

hasil=bil*bil;

printf("Hasilsetelahdikuadratkanadalah = %g\n", hasil);

return hasil;

}

Output Program :

Page 73: Buku tutorial pemprograman c

/* Buku Kumpulan Soal-Soal Pemorgaman C */ printf(“ Page 68 “)

Analisa :

Program diatas menggunakan dua fungsi. Fungsi main() digunakan untuk memasukkan

berapa banyak triangular dan fungsi int triangular() terdapat looping dari 0 sampai ke n

dimana dalam proses looping tersebut terdapat proses perjumlahan kemudian dicetak.

4. Definisikan sebuah fungsi ganjil() yang memilliki sebuah parameter

bilangan bulat dan mengembalikan nilai 1 jika parameter yang diberikan adalah

bilangan ganjil dan mengembalikan nilai 0 jika parameter tsb bukan bilangan ganjil

Tulislah prototipe fungsi untuk fungsi tersebut.

Buat function main untuk memanggil function ganjil() yang menerima input

sebuah bilangan bulat yang akan ditentukan ganjil/genapnya. Tampilkan pesannya

(ganjil/genap) dalam main().

Listing Program :

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

#include <stdio.h>

int ganjil (int);

int main()

{

int bil;

printf("Masukkan Bilangan = ");

scanf("%d", &bil);

ganjil(bil);

if (ganjil(bil)==0)

printf("Bilangan Genap\n");

else if (ganjil(bil)==1)

printf("Bilangan Ganjil\n");

}

int ganjil (int x)

{

if (x%2==0)

return 0;

Page 74: Buku tutorial pemprograman c

/* Buku Kumpulan Soal-Soal Pemorgaman C */ printf(“ Page 69 “)

22

23

24

else

return 1;

}

Output Program :

Analisa :

Program diatas menggunakan dua fungsi. Fungsi main() digunakan untuk memasukkan

suatu nilai dan memanggil fungsi int ganjil dan fungsi int ganjil() digunakan untuk

mencari sisa hasil bagi 2 dari bilangan yagn telah dimasukkan, kemudian memberikan

nilai kembalian yang kembali ke fungsi main() untuk dicetak apakah bilangan tersebut

ganjil atau genap.

5. Buatlah program untuk menghitung faktorial dengan menggunakan 2 fungsi

(main() dan faktorial()). Fungsi faktorial() memberikan return value

bertipe long int yang akan dicetak ke layar dalam fungsi main().

Listing Program :

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

#include <stdio.h>

long int faktorial (int);

int main()

{

int bil;

printf("Masukkan Bilangan = ");

scanf("%d", &bil);

printf("= %d \n", faktorial(bil));

}

long int faktorial (int x)

{

int i=x, hasil=1;

while (i>0)

{

Page 75: Buku tutorial pemprograman c

/* Buku Kumpulan Soal-Soal Pemorgaman C */ printf(“ Page 70 “)

19

20

21

22

23

24

25

26

27

printf("%d ", i);

if (i>0)

printf("* ");

hasil*=i;

i--;

}

return hasil;

}

Output Program :

Analisa :

Program diatas menggunakan dua fungsi. Fungsi main() digunakan untuk memasukan

suatu nilai yang sebagai parameter dari faktorialnya dan fungsi long int faktorial (int x)

digunakan untuk menampilkan bilangan mulai dari parameter tersebut secara besar ke

kecil dengan proses looping yang dikurangi dengan 1 kemudian semuanya dikalikan dan

dikembalikan ke fungsi main() untuk menampilkan hasilnya.

6. Buatlah fungsi prima(), yang memberikan nilai balik 1 bila bilangan yang

dimasukkan adalah prima, dan 0 bila bukan bilangan prima.

Listing Program :

1

2

3

4

5

6

7

8

9

10

11

12

#include <stdio.h>

int cek prima (int);

int main()

{

int bil;

printf("Masukkan Bilangan = ");

scanf("%d", &bil);

if(cek prima(bil)==1)

printf("Bilangan Prima\n");

else

Page 76: Buku tutorial pemprograman c

/* Buku Kumpulan Soal-Soal Pemorgaman C */ printf(“ Page 71 “)

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

printf("Bukan Bilangan Prima\n");

}

int cek prima (int x)

{

int i, fak=0;

i=1;

while (i<=x)

{

if(x%i==0)

fak++;

i++;

}

if(fak==2)

return 1;

else

return 0;

}

Output Program :

Analisa :

Pada program tersebut menggunakan dua fungsi. Fungsi main() digunakan untuk

memasukkan suatu nilai bilangan yang akan ditentukan apakah bilangan tersebut

termasuk prima atau bukan dan fungsi int cek prima (int x) digunakan untuk mencari

apakah bilangan tersebut termasuk bilangan prima atau bukan dan memiliki nilai

kembalian.

7. Definisikan sebuah fungsi radian() yang berfungsi untuk mengkonversi

besaran sudut dari derajat ke radian dengan rumus sbb : rad = drjt / 180.0f * PI. Fungsi

tersebut memiliki sebuah parameter yaitu derajat yang akan dikonversi, dan memiliki

sebuah return value berupa hasil konversi dalam radian.

Tulislah prototipe fungsi untuk fungsi tersebut.

Buat function main untuk memanggil function radian(), setelah sebelumnya

meminta masukan nilai derajat yang akan dikonversi.

Page 77: Buku tutorial pemprograman c

/* Buku Kumpulan Soal-Soal Pemorgaman C */ printf(“ Page 72 “)

Definisikan PI sebagai sebuah konstanta yang bernilai : 3.14159f

Listing Program :

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

#include <stdio.h>

include <stdio.h>

float radian (float);

int main()

{

float n;

printf("Masukkan sudut yg akan dikonfersikan = ");

scanf("%f", &n);

printf("Nilai radiannya adalah = %f\n", radian(n));

}

float radian (float drjt)

{

float rad;

rad=drjt/180.0f*3.14159f;

return rad;

}

Output Program :

Analisa :

Program diatas menggunakan dua fungsi. Fungsi main() digunakan untuk memasukan

nilai sudut yang akan dikonversi dan fungsi float radian (float drjt) digunakan untuk

mengkonversi nilai dari derajat ke radian dan memiliki nilai kembalian yang kembali ke

fungsi main() untuk dicetak hasilnya.

8. Definisikan sebuah fungsi float konversi(suhu, asal, tuj), untuk

Page 78: Buku tutorial pemprograman c

/* Buku Kumpulan Soal-Soal Pemorgaman C */ printf(“ Page 73 “)

mengkonversikan suhu dari Celsius ke Fahrenheit, Celsius ke Reamur,

Fahrenheit ke Celsius, Fahrenheit ke Reamur, Reamur ke Celsius, dan Reamur ke

Fahrenheit. Dimana suhu adalah suhu sumber, asal adalah satuan awal suhu yang

akan dikonversi dan tuj adalah satuan hasil konversi

prototipe fungsi untuk fungsi tersebut.

Buat function main() untuk memanggil function konversi(), setelah

sebelumnya meminta masukan nilai suhu, satuan asal dan satuan tujuannya.

Listing Program :

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

#include <stdio.h>

float konversi (float, char, char);

int main()

{

float suhu, hasil;

char asal, tuj;

printf("masukkan nilai suhu : ");

scanf("%f", &suhu);

printf("masukkan suhu asal: ");

scanf("\n%c", &asal);

printf("masukkan suhu tujuan: ");

scanf("\n%c", &tuj);

hasil = konversi(suhu, asal, tuj);

printf("hasil konversi suhu %g %c = %g %c\n", suhu, asal, hasil, tuj);

}

float konversi(float x, char y, char z)

{

float sum;

if(y == 'C' && z == 'R')

sum = 0.8 * x;

else if(y == 'C' && z == 'F')

sum = (1.8 * x) + 32;

else if(y == 'F' && z == 'C')

sum = 0.55 * (x - 32);

else if(y == 'F' && z == 'R')

sum = 0.4 * (x - 32);

else if(y == 'R' && z == 'F')

sum = (2.25 * x) + 32;

else if(y == 'R' && z == 'C')

sum = 1.25 * x;

return sum;

}

Page 79: Buku tutorial pemprograman c

/* Buku Kumpulan Soal-Soal Pemorgaman C */ printf(“ Page 74 “)

Output Program :

Analisa :

Program diatas menggunakan dua fungsi. Fungsi main() digunakan untuk memasukkan

nilai suhu, suhu asal, suhu tujuan dan fungsi float konversi(float x, char y, char z)

digunakan untuk mengkonversi suhu dari suhu asal ke suhu tujuan dimana terdapat

proses if else dan mempunyai nilai kembalian yang akan dikembalikan ke fungsi main()

yang kemudian dicetak hasilnya.

9. Definisikanlah function untuk menentukan bilangan terbesar dari 2 bilangan yang

diinputkan di main(). Function mempunyai parameter berupa 2 buah bilangan yang

akan dibandingkan dan memberikan return value berupa bilangan yang terbesar.

Sertakan pula prototype function tsb.

Listing Program :

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

#include <stdio.h>

int maximum (int, int);

int main()

{

int a, b, besar;

printf("MasukkanBilangan a : ");

scanf("%d", &a);

printf("MasukkanBilangan b : ");

scanf("%d", &b);

besar = maximum(a,b);

printf("Bilanganterbesarantara %d dan %d adalah : %d\n", a, b, besar);

}

int maximum (int x, int y)

{

if (x>y)

return(x);

Page 80: Buku tutorial pemprograman c

/* Buku Kumpulan Soal-Soal Pemorgaman C */ printf(“ Page 75 “)

21

22

23

else

return(y);

}

Output Program :

Analisa :

Program diatas menggunakan dua fungsi. Fungsi main() digunakkan untuk

menginputkan dua buah bilangan yang akan dibandingkan untuk mencari mana yang

terbesar dan fungsi int maximum () digunakan untuk mencari nilai yang terbesar dari

dua bilangan dan memiliki nilai kembalian yang dikembalikan ke fungsi main() untuk

dicetak hasilnya.

10. Buatlah suatu fungsi permutasi() dan kombinasi() untuk menghitung permutasi dan

kombinasi dari suatu pasangan bilangan, yang dinyatakan dengan formula:

Listing Program :

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

#include <stdio.h>

int permutasi(int, int);

int kombinasi(int, int);

int main()

{

int n, r;

printf("Masukkan n = ");

scanf("%d", &n);

printf("Masukkan r = ");

scanf("%d", &r);

permutasi(n, r);

kombinasi(n, r);

}

int permutasi(int n, int r)

Page 81: Buku tutorial pemprograman c

/* Buku Kumpulan Soal-Soal Pemorgaman C */ printf(“ Page 76 “)

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

{

Int nilai, atas = 1, bawah = 1, x, y;

y = n - r;

for(x=n;x>=1;x--)

{

atas = atas * x;

}

for(x=y;x>=1;x--)

{

bawah = bawah * x;

}

nilai = atas / bawah;

printf("Permutasi = %d\n", nilai);

}

int kombinasi(int n, int r)

{

int x, y, z = 1, atas = 1, bawah = 1, hasil;

y = n - r;

for(x=n;x>=1;x--)

{

atas = atas * x;

}

for(x=y;x>=1;x--)

{

bawah = bawah * x;

}

for(x=r;x>=1;x--)

{

z = z * x;

}

hasil = atas/(z*bawah);

printf("Kombinasi = %d\n", hasil);

}

Output Program :

Page 82: Buku tutorial pemprograman c

/* Buku Kumpulan Soal-Soal Pemorgaman C */ printf(“ Page 77 “)

Analisa :

- Pada fungsi main() digunakan untuk memasukan n dan r.

- Padafungsipermutasi, terdapat 2 looping yaitudimulaidari n dankuranghingga 1.

Kurangdidapatdari n-r. Didalam looping terjadiperkalianuntukmendapatkanfaktordari

n danfaktordarikurang. Untukpermutasididapatdarifaktordari n / faktordarikurang

- Padafungsikombinasi, terdapat 3 looping yaitudimulaidari n, r dankuranghingga 1.

Kurangdidapatdari n-r. Didalam looping terjadiperkalianuntukmendapatkanfaktordari

n, faktordari r danfaktordarikurang. Untukkombinasididapatdarifaktordari n / (

faktordarikurang * faktordari r )

11. Buatlah sebuah fungsi untuk mengubah dua bilangan masukan, masing-masing

dinaikkan dengan 2. Masukan dilakukan di main(). Selanjutnya tampilkan hasil

akhir bilangan setelah dirubah di main().

Gunakan pass by reference !

Listing Program :

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

#include <stdio.h>

void tambah(int* nilai1, int* nilai2);

int main()

{

int nilai1, nilai2;

printf("Masukkan nilai 1 = ");

scanf("%d", &nilai1);

printf("Masukkan nilai 2 = ");

scanf("%d", &nilai2);

tambah(&nilai1, &nilai2);

printf("Hasil setelah dinaikan adalah : %d, %d\n", nilai1, nilai2);

}

void tambah(int* x, int* y)

{

*x=*x+2;

*y=*y+2;

}

Output Program :

Page 83: Buku tutorial pemprograman c

/* Buku Kumpulan Soal-Soal Pemorgaman C */ printf(“ Page 78 “)

Analisa :

Program diatas menggunakan dua fungsi. Fungsi main() digunakan untuk mengiputkan

bilangan dan fungsi tambah() digunakan untuk menaikkan bilangan tersebut dengan cara

menjumlahkannya dengan 2 kemudian menampilkan hasilnya.

12. Definisikanlah fungsi main(), masukan() dan average(), sebagai berikut

Fungsi masukan() menerima satu parameter berupa jumlah data yang akan

dimasukkan dan memberikan return value berupa nilai total dari seluruh data yang

dimasukkan. Fungsi ini bertugas menerima masukan data sebanyak n kali dan

sekaligus menghitung total nilai seluruh data.

Fungsi average() menerima dua parameter berupa jumlah data yang telah

dimasukkan dan nilai total seluruh data. Fungsi ini memberikan return value

berupa nilai rata-rata dari seluruh data yang dimasukkan.

Pada fungsi main()mintalah masukan jumlah data yang akan diinputkan.

Selanjutnya lakukan pemanggilan fungsi masukan() dan average(),

kemudian tampilkan nilai rata-rata dari seluruh datanya.

Listing Program :

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

#include<stdio.h>

float masukkan(float);

float average(float, float);

int main()

{

float n;

printf("Masukkan banyak data = ");

scanf("%g", &n);

printf("Rata-rata = %.2g\n", average(n,masukkan(n)));

}

float masukkan(float a)

{

float i, nilai, hasil=0;

Page 84: Buku tutorial pemprograman c

/* Buku Kumpulan Soal-Soal Pemorgaman C */ printf(“ Page 79 “)

19

20

21

22

23

24

25

26

27

28

29

30

31

32

for(i=1; i<=a; i++)

{

printf("Data ke-%g bernilai = ", i);

scanf("%g", &nilai);

hasil=hasil+nilai;

}

return hasil;

}

float average(float b, float hasil)

{

return hasil/b;

}

Output Program :

Analisa :

Program diatas menggunakan tiga fungsi. Fungsi main() digunakan untuk memasukan

nilai banyak data, fungsi masukkan () digunakan untuk memasukkan data melalui proses

looping dari 1 sampai ke banyak data dan menjumlahkannya tetapi tidak ditampilkan

hasilnya akan tetapi langsung masuk ke fungsi average () untuk menghitung rata-rata dan

mengembalikan ke fungsi main() untuk dicetak hasilnya.

13. Definisikanlah fungsi-fungsi sebagai berikut :

Fungsi f_to_i() untuk mengubah ukuran dari satuan kaki (feet) ke inci

Fungsi i_to_cm() untuk mengubah ukuran dari satuan inci ke centimeter

Fungsi c_to_m()untuk mengubah ukuran dari satuan centimeter ke meter

Dalam main() mintalah masukan ukuran dalam satuan kaki (feet) kemudian lakukan

konversi sampai mendapatkan keluaran berupa ukuran dalam meter. Tentukan

jumlah dan tipe parameter dan return value yang dibutuhkan

Keterangan : 1 kaki = 12 inchi, 1 inchi = 2.54 cm, 100 cm = 1 meter

Page 85: Buku tutorial pemprograman c

/* Buku Kumpulan Soal-Soal Pemorgaman C */ printf(“ Page 80 “)

Listing Program :

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

#include<stdio.h>

float f_to_i(float);

float i_to_cm(float);

float c_to_m(float);

int main()

{

float f;

printf("Mengkonversi ukuran dalam satuan kaki ke meter\n");

printf("Masukkan ukuran dalam satuan kaki (feet): ");

scanf("%f", &f);

printf("Hasil konversi adalah = %.2f meter.\n", c_to_m(i_to_cm(f_to_i(f))));

}

float f_to_i(float a)

{

float inci;

inci = 12*a;

return inci;

}

float i_to_cm(float b)

{

float centi;

centi = b*2.54f;

return centi;

}

float c_to_m(float c)

{

float meter;

meter = c/100;

return meter;

}

Page 86: Buku tutorial pemprograman c

/* Buku Kumpulan Soal-Soal Pemorgaman C */ printf(“ Page 81 “)

Output Program :

Analisa :

Program tersebut terdapat 4 fungsi. Fungsi main() digunakan untuk memasukan suatu

ukaran yang akan dikonversi, fungsi f_to_i() untuk mengkonversi dari satuan kaki ke

inchi dan langsung meneruskan ke fungsi i_to_cm () untuk mengkonversi dari satuan

inchi ke cm dan langsung meneruskan ke fungsi cm_to_m () untuk mengkonversi dari

satuan cm ke meter dan langsung mengembalikan fungsi main() untuk kemudian dicetak

hasilnya.

Page 87: Buku tutorial pemprograman c

/* Buku Kumpulan Soal-Soal Pemorgaman C */ printf(“ Page 82 “)

Bab 7 ARRAY

A. TUJUAN

B. DASAR TEORI

Dalam beberapa literatur, array sering disebut (diterjemahkan) sebagai larik.

Array adalah kumpulan dari nilai-nilai data bertipe sama dalam urutan tertentu yang

menggunakan sebuah nama yang sama. Nilai-nilai data di suatu array disebut dengan

elemen-elemen array. Letak urutan dari elemen-elemen array ditunjukkan oleh suatu

subscript atau indeks.

Contoh pendeklarasian array : float nilai_tes[5];

Inisialisasi Array Berdimensi Satu

Sebuah array dapat diinisialisasi sekaligus pada saat dideklarasikan. Untuk

mendeklarasikan array, nilai-nilai yang diinisialisasikan dituliskan di antara kurung

kurawal ({}) yang dipisahkan dengan koma.

int jum_hari[12] =

{31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};

Array Berdimensi Dua

Array berdimensi satu dapat disimpan pada sebuah array berdimensi dua. Pendeklarasian

array berdimensi dua adalah sebagai berikut :

int data_lulus[4][3];

Array Berdimensi Banyak.

C memungkinkan untuk membuat array yang dimensinya lebih dari dua. Bentuk

umum pendeklarasian array berdimensi banyak :

tipe nama_var[ukuran 1][ukuran2}…[ukuranN];

sebagai contoh :

int data_huruf[2][8][8];

1. Menjelaskan array berdimensi satu

2. Menjelaskan array berdimensi banyak

3. Menjelaskan array sebagai parameter fungsi

Page 88: Buku tutorial pemprograman c

/* Buku Kumpulan Soal-Soal Pemorgaman C */ printf(“ Page 83 “)

C. PERCOBAAN

1. Deklarasikan sebuah variabel array of int, selanjutnya isi array tsb kemudian tampilkan

isi variabel tersebut menggunakan statement for(). Ingat apabila jumlah deklarasi index

adalah n maka nilai index-nya adalah dimulai dari 0 sampai dengan n-1.

Listing Program :

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

#include <stdio.h>

#include <conio.h>

#define maks 100

void input (int);

int main(){

int n;

printf("Masukkan batas n: ");

scanf("%d", &n);

input(n);

getch();

}

void input (int n){

int a[maks],i;

for(i=0; i<n; i++){

printf("masukkan data ke-%d = ", i+1);

scanf("%d", &a[i]);

}

}

Output Program :

Analisa :

Dalam program ini diminta untuk menampilkan data sebanyak kurang dari n,

yang dimana n tersebut diinputkan oleh user. Program ini menggunakan fungsi, pada

fungsi main() digunakan untuk menginputkan n dan memanggil fungsi array(), sehingga

Page 89: Buku tutorial pemprograman c

/* Buku Kumpulan Soal-Soal Pemorgaman C */ printf(“ Page 84 “)

pada fungsi array() digunakan untuk proses looping mulai dari indeks[0] sampai kurang

dari n-1 dan memasukkan data mulai 1, karena data ke 1 itu indeks [0] sehingga yang

tampil hanya bilangan sebelum angka n.

2. Deret fibonacci adalah deret yang dimulai dengan dua angka yang bernilai 0 dan

1, kemudian deret ketiga ditentukan dari penjumlahan kedua angka tersebut,

sedangkan deret keempat ditentukan dari dua angka sebelumnya begitu seterusnya.

Sehingga didapatkan deret fibonanci sebagai berikut: 0 1 1 2 3 5 8 13 21 …

Buatlah program untuk meminta input dari user berupa sebuah bilangan, kemudian

tampilkan deret fibonacci mulai dari 1 sampai dengan bilangan tsb.

Listing Program :

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

#include <stdio.h>

#include <conio.h>

void fibonacci (int);

int main()

{

int n;

printf("Masukkan batas n : ");

scanf("%d",&n);

fibonacci (n);

printf("\n");

getch();

}

void fibonacci (int n){

int i, a[100];

for(i=0;i<n;i++){

if(i==0){

a[i]=0;

printf("0 ");

}else if(i==1){

a[i]=1;

printf("1 ");

}else{

a[i]=a[i-1]+a[i-2];

printf(" %d ", a[i]);

}

}

}

Output Program :

Page 90: Buku tutorial pemprograman c

/* Buku Kumpulan Soal-Soal Pemorgaman C */ printf(“ Page 85 “)

Analisa :

Dalam program ini diminta untuk menampilkan bilangan fibonaci, dimulai dari 0 sampai

n, n merupakan bilangan yang diinputkan oleh user. Jika indeks[0] maka cetak 0, jika

indeks[1] maka cetak 1, jika tidak maka melakukan proses

a[i]=a[i-1]+a[i-2] kemudian di cetak.

3. Buat penjumlahan dua matriks A[2][2]dengan B[2][2]. Hasil penjumlahan tersebut

disimpan dalam matrik C. Tampilkan di layar masing-masing isi dari matriks A, B dan C

Listing Program :

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

#include <stdio.h>

#include <conio.h>

void Input_A(int baris, int kolom);

void Input_B(int baris, int kolom);

void jumlah(int baris, int kolom);

int A[5][5], B[5][5], C[5][5];

int main(){

int b,k;

printf("Masukkan ordo matriks(2-5) = ");

scanf("%d * %d", &b,&k);

jumlah(b, k);

getch();

}

void Input_A(int baris, int kolom){

int i,j;

printf("Input Matriks A :\n");

for(i=0;i<baris;i++){

for(j=0;j<kolom;j++){

printf("A[%d][%d] = ", i,j);

scanf("%d", &A[i][j]);

}

}

printf("\nHasil Inputan A:\n\n");

for(i=0;i<baris;i++){

Page 91: Buku tutorial pemprograman c

/* Buku Kumpulan Soal-Soal Pemorgaman C */ printf(“ Page 86 “)

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

for(j=0;j<kolom;j++){

printf("%d ",A[i][j]);

}

printf("\n\n");

}

}

void Input_B(int baris, int kolom){

int i,j;

printf("Input Matriks B :\n");

for(i=0;i<baris;i++){

for(j=0;j<kolom;j++){

printf("B[%d][%d] = ", i,j);

scanf("%d", &B[i][j]);

}

}

printf("\nHasil Inputan B:\n\n");

for(i=0;i<baris;i++){

for(j=0;j<kolom;j++){

printf("%d ",B[i][j]);

}

printf("\n\n");

}

}

void jumlah(int baris, int kolom){

int i,j;

Input_A(baris,kolom);

Input_B(baris,kolom);

printf("\n\nHasil Penjumlahan : \n\n");

for(i=0;i<baris;i++){

for(j=0;j<kolom;j++){

C[i][j]=A[i][j] + B[i][j];

printf("%d ",C[i][j]);

}

printf("\n\n");

}

}

Output Program :

Page 92: Buku tutorial pemprograman c

/* Buku Kumpulan Soal-Soal Pemorgaman C */ printf(“ Page 87 “)

Analisa :

Dalam program ini diminta untuk menampilkan perhitungan penjumlahan matriks,

dimulai dengan memilih matriks, kemudian menginputkan matriks A dan matriks B,

kemudian proses perhitungan, jika sudah selesai maka dicetak hasil dari penjumlahan

tersebut.

4. Buatlah sebuah variabel array of int yang memiliki ukuran MAKS. Dengan

menggunakan looping for(), masukkan sebanyak n data ke dalam array tsb

kemudian carilah nilai terbesar yang ada dalam array tsb

Listing Program :

Page 93: Buku tutorial pemprograman c

/* Buku Kumpulan Soal-Soal Pemorgaman C */ printf(“ Page 88 “)

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

#include<stdio.h>

#include<conio.h>

#define maks 100

void input(int n);

int main(){

int n;

tanya:

printf("Berapa banyak data = ");

scanf("%d", &n);

if(n>maks){

goto tanya;

}

input(n);

getch();

}

void input(int n){

int a[maks], i, max;

for(i=0; i<n; i++){

printf("masukkan data ke-%d = ", i+1);

scanf("%d", &a[i]);

if(i==0){

max=a[0];

}

else{

if(max<=a[i])

max=a[i];

}

}

printf("max =%d", max);

}

Output Program :

Analisa :

Page 94: Buku tutorial pemprograman c

/* Buku Kumpulan Soal-Soal Pemorgaman C */ printf(“ Page 89 “)

Dalam program ini sama dengan program no 1, hanya saja program ini di minta untuk

mencari dan menampilkan bilangan maxnya.

5. Buatlah program yang terdiri atas :

Fungsi input() yang bertugas menanyakan jumlah data sekaligus memasukkan data

bilangan sebanyak yang diminta ke dalam array nilai[]

Fungsi findmax()yang bertugas mencari nilai terbesar yang ada pada array nilai[] tsb

fungsi main() yang memanggil fungsi input() dan fungsi findmax() , selanjutnya

menampilkan nilai terbesar yang ada pada array nilai[]

Petunjuk : jadikan array sebagai parameter fungsi

Listing Program :

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

#include<stdio.h>

#include<conio.h>

#define maks 100

void input (int);

int findmax(int[],int);

int main(){

int n;

tanya:

printf("Berapa banyak data = ");

scanf("%d", &n);

if(n>maks){

goto tanya;

}

input(n);

getch();

}

void input (int n){

int a[maks], max, i;

for(i=0; i<n; i++){

printf("masukkan data ke-%d = ", i+1);

scanf("%d", &a[i]);

}

max=findmax(a, n);

printf("\nmax = %d", max);

}

int findmax(int a[maks], int n){

int i, max;

for(i=0; i<n; i++){

Page 95: Buku tutorial pemprograman c

/* Buku Kumpulan Soal-Soal Pemorgaman C */ printf(“ Page 90 “)

30

31

32

33

34

35

36

37

38

39

if(i==0){

max=a[0];

}

else{

if(max<=a[i])

max=a[i];

}

}

return max;

}

Output Program :

Analisa :

Dalam program ini diminta untuk menampilkan data sebanyak kurang dari n,

yang dimana n tersebut diinputkan oleh user. Program ini menggunakan fungsi, pada

fungsi main() digunakan untuk menginputkan n dan memanggil fungsi array(), sehingga

pada fungsi input() digunakan untuk proses looping mulai dari indeks[0] sampai kurang

dari n-1 dan memasukkan data mulai 1, karena data ke 1 itu indeks [0] sehingga yang

tampil hanya bilangan sebelum angka n. Kemudian memanggil fungsi findmax(), fungsi

ini digunakan untuk mencari dan menampilkan bilangan max.

6. Diketahui daftar nilai siswa sebagai berikut:

Buatlah program untuk menampilkan laporan sebagai berikut:

Page 96: Buku tutorial pemprograman c

/* Buku Kumpulan Soal-Soal Pemorgaman C */ printf(“ Page 91 “)

Petunjuk: Gunakan variable array dua dimensi untuk menyimpan data

Listing Program :

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

#include<stdio.h>

#include<conio.h>

#define maks 100

void input(int n);

int main(){

int n;

tanya:

printf("Berapa banyak data = ");

scanf("%d", &n);

if(n>maks){

goto tanya;

}

input(n);

getch();

}

void input(int n){

int a[maks], i, max;

for(i=0; i<n; i++){

printf("masukkan data ke-%d = ", i+1);

scanf("%d", &a[i]);

if(i==0){

max=a[0];

}

else{

if(max<=a[i])

max=a[i];

}

}

printf("max =%d", max);

}

Output Program :

Page 97: Buku tutorial pemprograman c

/* Buku Kumpulan Soal-Soal Pemorgaman C */ printf(“ Page 92 “)

Analisa :

Dalam program ini diminta untuk menampilkan daftar nilai, dengan menginputkan nilai

bahasa inggris, matematika, dan digital yang diinputkan oleh user, kemudian mencari

rata-ratanya.

7. Buat program untuk menampilkan tabel berikut ini dengan menggunakan looping for()

dan 2 buah array :

x[] sbg array berdimensi satu yang diinisialisasi dgn sudut 0 s/d 360 data[] sbg array

berdimensi dua. data adalah array yg berisi nilai sin, cos dan tan dari masingmasing nilai

sudut yang ada dalam array x.

Petunjuk : gunakan fungsi radian() untuk mengkonversi nilai derajat menjadi radian.

rad = drjt / 180.0 * PI.

PI = 3.14159

Listing Program :

1

2

3

4

5

6

7

8

9

10

#include<stdio.h>

#include<conio.h>

#include<math.h>

#define pi 3.14159

float rad (int x);

int main(){

int x[]={0, 30, 60, 90, 120, 150, 180, 210, 240, 270, 300, 330, 360}, i, j;

double data[13][3];

float r;

printf("------------------------------------\n");

Page 98: Buku tutorial pemprograman c

/* Buku Kumpulan Soal-Soal Pemorgaman C */ printf(“ Page 93 “)

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

printf(" x | sin x | cos x | tan x |\n");

printf("------------------------------------\n");

for(i=0; i<13; i++){

printf(" %-6d |",x[i]);

r=rad(x[i]);

for(j=0; j<3; j++){

if(j==0){

data[i][j]=sin(r);

printf(" %-6.0f |", data[i][0]);

}else if(j==1){

data[i][j]=cos(r);

printf(" %-6.0f |", data[i][1]);

}else if(j==2){

data[i][j]=tan(r);

printf(" %-6.0f |", data[i][2]);

}

}

printf("\n");

}

printf("------------------------------------\n");

getch();

}

float rad (int x){

float radian;

radian=(x/180.0*pi);

return (radian);

}

Output Program :

Page 99: Buku tutorial pemprograman c

/* Buku Kumpulan Soal-Soal Pemorgaman C */ printf(“ Page 94 “)

Analisa :

Dalam program ini diminta untuk menampilkan besar sudut x sesuai dari sin x, cos x, dan

tan x. Sudut sudah diinisialisasikan kemudian melakukan proses dengan rumus

radian=(x/180.0*pi).

Page 100: Buku tutorial pemprograman c

/* Buku Kumpulan Soal-Soal Pemorgaman C */ printf(“ Page 95 “)

Bab 8 STRING

A. TUJUAN

B. DASAR TEORI

Konstanta String

Suatu konstanta string ditulis dengan diawali dan diakhiri tanda petik ganda,

misalnya:

“ABCDE”

Variabel String

Variabel string adalah variabel yang dipakai utuk menyimpan nilai string.

Misalnya :

char name[15];

merupakan instruksi untuk mendeklarasikan variabel string dengan panjang maksimal 15

karakter (termasuk karakter NULL). Deklarasi tersebut sebenarnya tidak lain merupakan

deklarasi array bertipe char.

Inisialisasi String

Suatu variabel string dapat diinisialisasi seperti halnya array yang lain. Namun

tentu saja elemen terakhirnya haruslah berupa karakter NULL. Sebagai contoh :

char name[] = {'R','I','N', 'I',‟\0‟};

yang menyatakan bahwa name adalah variabel string dengan nilai awal berupa string :

“RINI” . Bentuk inisialisasi yang lebih singkat :

char name[] = “RINI”;

Fungsi strcpy() Digunakan untuk Menyalin Nilai String

1. Memahamkan konsep tipe data

2. Memahamkan string sebagai array dari

3. Dapat memasukkan dan menampilkan isi variabel

4.

Page 101: Buku tutorial pemprograman c

/* Buku Kumpulan Soal-Soal Pemorgaman C */ printf(“ Page 96 “)

Bentuk pemakaian : #include <string.h>

strcpy(tujuan, asal);

Fungsi strlen()

untuk Mengetahui Panjang Nilai String Bentuk pemakaian :

#include <string.h

strlen(var_string);

Fungsi strcat()

untuk Menggabung Nilai String

Bentuk pemakaian :

#include <string.h

strcat(var_string);

Fungsi strcmp()

untuk Membandingkan Dua Nilai String

Fungsi strchr()

untuk Mencari Nilai Karakter dalam String

Bentuk pemakaian :

#include <string.h>

strchr(var_string, kar);

C. PERCOBAAN

1. Definisikanlah sebuah fungsi untuk menghitung panjang dari string yang menjadi

parameternya (misalnya : pjgstr()). Pada fungsi main()terimalah input string yang

akandihitung panjang karakternya.

Selanjutnya panggil fungsi pjgstr()untuk mendapatkan panjang string dan tampilkan

hasilnya di main()

Listing Program :

Page 102: Buku tutorial pemprograman c

/* Buku Kumpulan Soal-Soal Pemorgaman C */ printf(“ Page 97 “)

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

#include <stdio.h>

int pjgstr(char *);

int main(){

char str[100];

printf("Masukkan string : "); fflush(stdin); gets(str);

printf("Panjang string : %d", pjgstr(str));

getchar();

}

int pjgstr(char *string){

int i=0;

while(string[i]!='\0'){

i++;

}

return i;

}

Output Program :

Analisa :

Fungsi pjgstr() digunakan untuk menentukan panjang karakter dari suatu string. Panjang

dari string ini didapat dengan menggunakan loop while yang menggunakan acuan kondisi

element ke-i bernilai null („\0‟) atau tidak. Jika element ke-i dari string tidak bernilai null

maka loop akan terus berjalan dan nilai i akan bertambah. Return value dari fungsi ini

merupakan index i yang merupakan index element null dari variabel string.

2. Copy-lah program dari soal no 2. Definisikanlah sebuah fungsi untuk membalik string

yang menjadi parameternya (misalnya : balikstr())

Pada fungsi main() terimalah input string yang akan dihitung panjang karakternya dan

dibalik. Selanjutnya panggil fungsi pjgstr()dan balikstr()untuk mendapatkan kebalikan

dari string input dan tampilkan hasilnya di main()

Listing Program :

Page 103: Buku tutorial pemprograman c

/* Buku Kumpulan Soal-Soal Pemorgaman C */ printf(“ Page 98 “)

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

#include <stdio.h>

int pjgstr(char *);

char *blkstr(char *);

int main(){

char str[100];

printf("Masukkan string : "); fflush(stdin); gets(str);

printf("Panjang string : %d\n", pjgstr(str));

printf("Hasil : %s", blkstr(str));

getchar();

}

int pjgstr(char *string){

int i=0;

while(string[i]!='\0'){

i++;

}

return i;

}

char *blkstr(char *string){

int i=0, n=pjgstr(string)-1;

char temp;

while(i<pjgstr(string)/2){

temp = string[n];

string[n] = string[i];

string[i] = temp;

i++;

n--;

}

i++;

return string;

}

Output Program :

Page 104: Buku tutorial pemprograman c

/* Buku Kumpulan Soal-Soal Pemorgaman C */ printf(“ Page 99 “)

Analisa :

Fungsi blkstr() digunakan untuk membalik karakter dari suatu string (ex. SAYA

AYAS). Agar dapat menyelesaikan kasus ini kita menggunakan fungsi pjgstr() yang telah

dibuat di kasus nomor 1. Untuk membalik string di fungsi blkstr() menggunakan loop

dari 0 sampai setengah dari panjang string. Di dalam loop tersebut terdapat logika

penukaran antar elemen ke i dengan elemen ke n. Indek ke i akan bertambah dan index ke

n akan berkurang nilainya.

3. Definisikanlah sebuah fungsi untuk meng-copy string dengan menjadikan string asal dan

string tujuan menjadi parameter fungsi tsb (misalnya : copystr()).

Pada fungsi main() terimalah input string yang akan di-copy. Selanjutnya panggil fungsi

copystr() untuk mengcopy string asal ke string tujuan, tampilkan hasilnya berupa kedua

string (asal dan tujuan) di main().

Listing Program :

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

# #include <stdio.h>

#include <string.h>

void cpystr(char *, char *);

char *blkstr(char *);

int main(){

char asal[50]="", tujuan[50]="";

printf("Masukkan string asal : "); fgets(asal,sizeof asal, stdin);

cpystr(tujuan, asal);

printf("Nilai string tujuan : %s\n", tujuan);

printf("Nilai string asal : %s\n", asal);

getchar();

}

int pjgstr(char *string){

int i=0;

while(string[i]!='\0'){

i++;

}

return i;

}

void cpystr(char *tujuan, char *asal){

int i=0, m=pjgstr(asal)-1;

while(i<m){

Page 105: Buku tutorial pemprograman c

/* Buku Kumpulan Soal-Soal Pemorgaman C */ printf(“ Page 100 “)

27

28

29

30

tujuan[i] = asal[i];

i++;

}

}

Output Program :

Analisa :

Fungsi cpystr digunakan untuk menyalin value dari satu string ke string lain. Hal ini

dapat dilakukan dengan cara menggunakan loop dari 0 sampai dengan panjang dari string

sumber. Di dalam loop elemen index ke i dari string tujuan akan diisi dengan elemen

index ke i dari string sumber.

4. Ulangilah soal nomor 1, 2 & 3 pada modul prakt String 1 dengan menggunakan fungsi-

fungsi standard (built-in functions)

Listing Program :

Nomor 1 fungsi pjgstr() dapat diganti strlen();

1

2

3

4

5

6

7

8

9

#include <stdio.h>

#include <string.h>

int main(){

char str[100];

printf("Masukkan string : "); fflush(stdin); gets(str);

printf("Panjang string : %d", strlen(str));

getchar();

}

Nomor 2 fungsi blkstr() dapat diganti strrev ();

Page 106: Buku tutorial pemprograman c

/* Buku Kumpulan Soal-Soal Pemorgaman C */ printf(“ Page 101 “)

1

2

3

4

5

6

7

8

9

10

#include <stdio.h>

#include <string.h>

int main(){

char str[100];

printf("Masukkan string : "); fflush(stdin); gets(str);

printf("Panjang string : %d\n", strlen(str));

printf("Hasil : %s", strrev(str));

getchar();

}

Nomor 3 fungsi cpystr () dapat diganti strcpy();

1

2

3

4

5

6

7

8

9

10

11

#include <stdio.h>

#include <string.h>

int main(){

char asal[50]="", tujuan[50]="";

printf("Masukkan string asal : "); fgets(asal,sizeof asal, stdin);

strcpy(tujuan, asal);

printf("Nilai string tujuan : %s\n", tujuan);

printf("Nilai string asal : %s\n", asal);

getchar();

}

5. Definisikanlah sebuah fungsi untuk membandingkan dua buah string yang menjadi

parameternya secara CASE SENSITIVE (misalnya : bandingstr1()).

Pada fungsi main() terimalah input 2 buah string yang akan dibandingkan.. Selanjutnya

panggil fungsi bandingstr1() untuk membandingkan kedua string tsb dan tampilkan

hasilnya di main()

Listing Program :

1

2

3

4

5

6

7

8

9

10

11

#include <stdio.h>

#include <string.h>

int bandingstr1(char *string1, char *string2);

int main(){

int i;

char str1[20], str2[20];

printf("Kata 1 : " );gets(str1);

printf("Kata 2 : " );gets(str2);

Page 107: Buku tutorial pemprograman c

/* Buku Kumpulan Soal-Soal Pemorgaman C */ printf(“ Page 102 “)

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

printf("%d", bandingstr1(str1, str2));

scanf("%d", &i);

return 0;

}

int bandingstr1(char *string1, char *string2){

int n1 = strlen(string1), n2 = strlen(string2);

int i=0, status=0;

while(i<n1){

if(i+1>n2)

break;

if(string1[i] == string2[i]){

i++;

continue;

}else if(string1[i] < string2[i])

status = -1;

else

status = 1;

i++;

}

if(status==0){

if(n1==n2)

status=0;

else if(n1<n2)

status=-1;

else

status=1;

}

return status;

}

Output Program :

Page 108: Buku tutorial pemprograman c

/* Buku Kumpulan Soal-Soal Pemorgaman C */ printf(“ Page 103 “)

Analisa :

Agar dapat memperoleh hasil dari perbandingan 2 string tersebut maka langkah-langkah

penyelesaianya adalah dengan cara membandingkan setiap element dengan index yang

sama antar 2 string tersebut.

6. Definisikanlah sebuah fungsi untuk membandingkan dua buah string yang menjadi

parameternya secara NON CASE SENSITIVE (misalnya : bandingstr2()).

Pada fungsi main()terimalah input 2 buah string yang akan dibandingkan.. Selanjutnya

panggil fungsi bandingstr2() untuk membandingkan kedua string tsb dan tampilkan

hasilnya di main()

Ket : lihat algoritma Fungsi Banding – NON CASE SENSITIVE

Listing Program :

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

#include <stdio.h>

#include <string.h>

int bandingstr1(char *string1, char *string2);

int main(){

int i;

char str1[20], str2[20];

printf("Kata 1 : " );gets(str1);

printf("Kata 2 : " );gets(str2);

printf("%d", bandingstr1(str1, str2));

scanf("%d", &i);

return 0;

}

int bandingstr1(char *string1, char *string2){

Page 109: Buku tutorial pemprograman c

/* Buku Kumpulan Soal-Soal Pemorgaman C */ printf(“ Page 104 “)

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

int n1 = strlen(string1), n2 = strlen(string2);

int i=0, status=0;

while(i<n1){

if(i+1>n2)

break;

if(string1[i] == string2[i] || string1[i] - 32 == string2[i] || string1[i]

== string2[i] - 32){

i++;

continue;

}else if(string1[i] < string2[i])

status = -1;

else

status = 1;

i++;

}

if(status==0){

if(n1==n2)

status=0;

else if(n1<n2)

status=-1;

else

status=1;

}

return status;

}

Output Program :

Analisa :

Page 110: Buku tutorial pemprograman c

/* Buku Kumpulan Soal-Soal Pemorgaman C */ printf(“ Page 105 “)

Alur penyelesainya sama dengan kasus nomor 5, namun ada penambahan kondisi.

Jika di kasus 5 hanya menggunakan perbandingan string1[i] == string2[i] maka di kasus

nomor 6 ini perbandingan yang digunakan string1[i] == string2[i] || string1[i] - 32 ==

string2[i] || string1[i] == string2[i] – 32 yang artinya ascii huruf kapital dan huruf biasa

dianggap sama.

7. Lakukan percobaan untuk membandingkan 2 buah string dengan menggunakan fungsi

strcmp() dan strcmpi(). Analisislah dan berikan kesimpulan tentang perbedaan dan

contoh aplikasi untuk keduanya

Listing Program :

1

2

3

4

5

6

7

8

9

10

11

12

13

14

#include <stdio.h>

#include <string.h>

int main(){

int i;

char str1[20], str2[20];

printf("Kata 1 : " );gets(str1);

printf("Kata 2 : " );gets(str2);

printf("strcmp antara %s dengan %s adalah %d\n",str1,str2,strcmp(str1,

str2));

printf("strcmpi antara %s dengan %s adalah %d",str1,str2,strcmpi(str1,

str2));

scanf("%d", &i);

return 0;

}

Output Program :

Analisa :

Fungsi strcmp digunakan untuk membandingkan 2 string secara Case Sensitif

(Huruf besar dan kecil berpengaruh) sedangkan strcmpi digunakan untuk

membandingkan 2 string secara Non Case Sensitif (Huruf besan dan kecil dianggap

sama)

Page 111: Buku tutorial pemprograman c

/* Buku Kumpulan Soal-Soal Pemorgaman C */ printf(“ Page 106 “)

Bab 9 POINTER

A. TUJUAN

B. DASAR TEORI

Variabel pointer sering dikatakan sebagai variabel yang menunjuk ke obyek lain. Pada

kenyataan yang sebenarnya, variabel pointer berisi alamat dari suatu obyek lain (yaitu obyek

yang dikatakan ditunjuk oleh pointer). Sebagai contoh, px adalah variabel pointer dan x

adalah variabel yang ditunjuk oleh px. Kalau x berada pada alamat memori (alamat awal)

1000, maka px akan berisi 1000. Sebagaimana diilustrasikan pada gambar di bawah ini

Mendeklarasikan Variabel Pointer Suatu variabel pointer dideklarasikan dengan bentuk sebagai berikut :

tipe *nama_variabel

dengan tipe dapat berupa sembarang tipe yang sudah dibahas pada bab-bab

sebelumnya,

maupun bab-bab berikutnya. Adapun nama_variabel adalah nama dari variabel

pointer.

Sebagai contoh :

int *px; //contoh 1

1. Menjelaskan tentang konsep dari variabel pointer

2. Mengakses dan mengubah isi dari variabel pointer

3. Menjelaskan tentang Pointer to Array

4. Menjelaskan tentang Pointer to String

Page 112: Buku tutorial pemprograman c

/* Buku Kumpulan Soal-Soal Pemorgaman C */ printf(“ Page 107 “)

char *pch1, *pch2; //contoh 2

Contoh pertama menyatakan bahwa px adalah variabel pointer yang menunjuk ke suatu

data bertipe int, sedangkan contoh kedua masing pch1 dan pch2 adalah variabel pointer

yang menunjuk ke data bertipe char.

Mengatur Pointer agar Menunjuk ke Variabel Lain

Agar suatu pointer menunjuk ke variabel lain, mula-mula pointer harus diisi dengan

alamat dari variabel yang akan ditunjuk. Untuk menyatakan alamat dari suatu variabel,

operator & (operator alamat, bersifat unary) bisa dipergunakan, dengan menempatkannya di

depan nama variabel. Sebagai contoh, bila x dideklarasikan sebagai variabel bertipe int,

maka &x berarti “alamat dari variabel x”. Adapun contoh pemberian alamat x ke suatu

variabel pointer px (yang dideklarasikan sebagai pointer yang menunjuk ke data bertipe int)

yaitu : px = &x; Pernyataan di atas berarti bahwa px diberi nilai berupa alamat dari variabel

x. Setelah pernyataan tersebut dieksekusi barulah dapat dikatakan bahwa px menunjuk ke

variabel

Mengakses Isi Suatu Variabel Melalui Pointer

Jika suatu variabel sudah ditunjuk oleh pointer, variabel yang ditunjuk oleh pointer

tersebut dapat diakses melalui variabel itu sendiri (pengaksesan langsung) ataupun melalui

pointer (pengaksesan tak langsung). Pengaksesan tak langsung dilakukan dengan

menggunakan operator indirection (tak langsung) berupa simbol * (bersifat unary).

Contoh penerapan operator * yaitu : *px yang menyatakan “isi atau nilai variabel/data

yang ditunjuk oleh pointer px” . Sebagai contoh jika y bertipe int, maka sesudah dua

pernyataan berikut y akan berisi nilai yang sama dengan nilai x. Kedua pernyataan di atas

sebenarnya dapat digantikan dengan sebuah pernyataan berupa y = x;

Seandainya pada program di atas tidak terdapat pernyataan namun terdapat pernyataan

maka y tidaklah berisi nilai x, sebab px belum diatur agar menunjuk ke variabel x. Hal

seperti ini harap diperhatikan. Kalau program melibatkan pointer, dan pointer belum

diinisialisasi, ada kemungkinan akan terjadi masalah yang dinamakan “bug” yang bisa

mengakibatkan komputer tidak dapat dikendalikan (hang).

Selain itu tipe variabel pointer dan tipe data yang ditunjuk harus sejenis. Bila tidak

sejenis maka akan terjadi hasil yang tidak diinginkan.

Page 113: Buku tutorial pemprograman c

/* Buku Kumpulan Soal-Soal Pemorgaman C */ printf(“ Page 108 “)

C. PERCOBAAN

Untuk setiap program di bawah ini,

– gambarkan ilustrasi alokasi memori dari setiap baris pernyataan yang diproses

– perkirakan hasil eksekusinya

1. Soal

1

2

3

4

5

6

7

8

9

10

11

12

13

#include<stdio.h>

int main(){

int y, x = 87;

int *px;

px = &x;

y = *px;

printf("Alamat x = %p\n", &x);

printf("Isi px = %p\n", px);

printf("Isi x = %d\n", x);

printf("Nilai yang ditunjukolehpx = %d\n", *px);

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

}

Output program :

Alokasi Memori :

Page 114: Buku tutorial pemprograman c

/* Buku Kumpulan Soal-Soal Pemorgaman C */ printf(“ Page 109 “)

Analisa:

Pada awalnya variable x berisi nilai 87 kemudian variable x ditujuk oleh pointer

*px sehingga sekarang nilai dari pointer x adalah alamat dari variable, yaitu 1000 yang

nilainya adalah 87. Setelah itu nilai dari variable yang ditunjuk oleh *px di copikan ke

variable y, sehingga variable y sekarang bernilai 87.

2. Soal

1

2

3

4

5

6

7

8

9

10

11

12

13

#include<stdio.h>

int main(){

float *pu, nu;

float u = 1234.0;

pu = &u;

nu = *pu;

printf("Alamatdari u = %p\n", &u);

printf("Isi pu = %p\n", pu);

printf("Isi u = %lf\n", u);

printf("Nilai yang ditunjukolehpu = %f\n", *pu);

printf("Nilai nu = %f\n", nu);

}

Output program :

Page 115: Buku tutorial pemprograman c

/* Buku Kumpulan Soal-Soal Pemorgaman C */ printf(“ Page 110 “)

Alokasi Memori :

Analisa:

Pada awalnya variable u ditunjuk oleh pointer *pu. Sehingga pointer *pu sekarang

bernilai alamat dari variable u. Setelah itu nilai dari variable yang ditunjuk pointer *pu

dicopykan ke variable nu. Tetapi karena berbeda tipe maka nilai dan alamat yang

ditunjuk tidak muncul

3. Soal

1

2

3

4

5

6

7

8

9

#include<stdio.h>

int main(){

float d = 54.5f, *pd;

printf("Isi d mula-mula = %g\n", d);

pd = &d;

*pd += 10;

printf("Isi d sekarang = %g\n", d);

}

Output program :

Page 116: Buku tutorial pemprograman c

/* Buku Kumpulan Soal-Soal Pemorgaman C */ printf(“ Page 111 “)

Alokasi Memori :

Analisa :

Pada awalnya variable d berisi 54.5 kemudian ditunjuk oleh pointer *pd. Setelah itu isi

dari pointer *pd ditambah dengan 10 sehingga sekarang variable d bernilai 64.5.

4. Soal

1

2

3

4

5

6

7

8

9

10

#include<stdio.h>

int main(){

int z = 20, s = 30, *pz, *ps;

pz = &z;

ps = &s;

*pz += *ps;

printf("z = %d\n", z);

printf("s = %d\n", s);

}

Output program :

Alokasi Memori :

Page 117: Buku tutorial pemprograman c

/* Buku Kumpulan Soal-Soal Pemorgaman C */ printf(“ Page 112 “)

Analisa:

Pada awalnya variable z bernilai 20 dan variable s bernilai 30 kemudian pointer *pz

menunjuk alamat variable z dan pointer *ps menunjuk alamat variable s. Setelah itu nilai

yang ditunjuk oleh pointer *pz ditambahkan dengan nilai yang ditunjuk oleh pointer *ps.

Sehingga sekarang nilai dari variable z=50 dan variabel s tetap bernilai 30.

5. Soal

1

2

3

4

5

6

7

8

int main(){

char c = 'Q', *cp = &c;

printf("%c %c\n", c, *cp);

c = '/';

printf("%c %c\n", c, *cp);

*cp = '(';

printf("%c %c\n", c, *cp);

}

Output program :

Page 118: Buku tutorial pemprograman c

/* Buku Kumpulan Soal-Soal Pemorgaman C */ printf(“ Page 113 “)

Alokasi Memori :

Analisa:

Pada awalnya variable c bernilai „Q‟, kemudian variable c ditunjuk oleh pointer *cp

sehingga pointer *cp bernilai alamat dari variable c yang nilainya ‘Q‟. Setelah itu

variable c diubah nilainya menjadi „/‟ sehingga pointer *cp pun juga bernilai „/‟, lalu nilai

dari pointer *cp diganti dengan „(‟ maka nilai dari variable c juga berubah menjadi „(.‟

6. Soal

1

2

3

4

5

6

7

8

9

#include<stdio.h>

int main() {

int x = 1, y = 2, *ip;

ip = &x;

y = *ip;

*ip = 3;

printf("x = %d, y = %d", x, y);

}

Output program :

Alokasi Memori :

Page 119: Buku tutorial pemprograman c

/* Buku Kumpulan Soal-Soal Pemorgaman C */ printf(“ Page 114 “)

Analisa:

Pada awalnya variable x berisi nilai 87 kemudian variable x ditujuk oleh pointer

*px sehingga sekarang nilai dari pointer x adalah alamat dari variable, yaitu 1000 yang

nilainya adalah 87. Setelah itu nilai dari variable yang ditunjuk oleh *px di copikan ke

variable y, sehingga variable y sekarang bernilai 87.

7. Hubungan antara pointer dan array. Suatu nama array yang ditulis tanpa dengan

indeksnya menunjukkan alamat elemenpertama dari array (versi 1).

Soal

1

2

3

4

5

6

7

8

9

#include <stdio.h>

int main(){

static int tgl_lahir[] = {16, 4, 1974};

int *ptgl;

ptgl = tgl_lahir;

printf("Nilai yang ditunjuk oleh ptgl = %d\n", *ptgl);

printf("Nilai dari tgl_lahir[0] = %d\n", tgl_lahir[0]);

}

Output program :

Alokasi Memori :

Page 120: Buku tutorial pemprograman c

/* Buku Kumpulan Soal-Soal Pemorgaman C */ printf(“ Page 115 “)

Analisa:

Pointer ptgl menunjuk alamat elemen pertama dari array tgl_lahir, karena pada saat

ditunjuk array tidak diikuti indeks. Jadi nilai yang keluar ketika pointer ptgl di tampilkan

hanyalah nilai dari index ke nol array tgl_lahir[].

8. Hubungan antara pointer dan array. Suatu nama array yang ditulis tanpa dengan

indeksnya menunjukkan alamat elemenpertama dari array (versi 2).

Soal

1

2

3

4

5

6

7

8

9

10

11

12

#include <stdio.h>

int main()

{

static int tgl_lahir[] = {16, 4, 1974};

int *ptgl, i;

ptgl = tgl_lahir;

printf("Nilai yang ditunjuk oleh ptgl = %d\n", ptgl);

for (i=0; i<3; i++)

printf("Nilai dari tgl_lahir[i] = %d\n", *(ptgl+i));

}

Output program :

Page 121: Buku tutorial pemprograman c

/* Buku Kumpulan Soal-Soal Pemorgaman C */ printf(“ Page 116 “)

Alokasi Memori :

Analisa:

Sama seperti nomer 1 yaitu proses pointer to array tgl_lahir. Namun pada soal ini

looping yang dilakukan memanggil nilai dari pointer ptgl menggunakan *(ptgl+i),

maksud dari nilai tersebut adalah setelah selain dia menampilkan setiap nilai dari array

sesuai index pointer tersebut juga menaikkan alamat dari pointer ptgl itu sendiri untuk

menampung nilai array per index, jadi bukan menumpuk pada satu alamat pointer.

9. Hubungan antara pointer dan array. Suatu nama array yang ditulis tanpa dengan

indeksnya menunjukkan alamat elemenpertama dari array (versi 3).

Soal

1

2

3

4

5

6

7

8

9

10

11

12

13

#include <stdio.h>

int main()

{

static int tgl_lahir[] = {16, 4, 1974};

int i;

int *ptgl;

ptgl = tgl_lahir;

printf("Nilai yang ditunjuk oleh ptgl = %d\n", *ptgl);

for (i=0; i<3; i++)

printf("Nilai dari tgl_lahir[i] = %d\n", *ptgl++);

}

Output program :

Page 122: Buku tutorial pemprograman c

/* Buku Kumpulan Soal-Soal Pemorgaman C */ printf(“ Page 117 “)

Alokasi Memori :

Analisa:

Soal ini hamper sama seperti nomer 2 namun yang membedakan looping nilai dari

pointer ptgl menggunakan *ptgl++ , maksud dari nilai tersebut adalah setelah selain dia

menampilkan setiap nilai dari array sesuai index pointer tersebut juga menaikkan alamat

dari pointer ptgl untuk menampung nilai array per index, jadi bukan menumpuk pada

satu alamat pointer. Sama seperti soal no.2 hanya berbeda pada penulisan script saja.

Page 123: Buku tutorial pemprograman c

/* Buku Kumpulan Soal-Soal Pemorgaman C */ printf(“ Page 118 “)

Bab 10 STRUCT

A. TUJUAN

B. DASAR TEORI

Struktur adalah pengelompokan variabel-variabel yang bernaung dalam satu nama

yang sama. Berbeda dengan array yang berisi kumpulan variabel-variabel yang bertipe

sama dalam satu nama, maka suatu struktur dapat terdiri atas variabel-variabel yang

berbeda tipenya dalam satu nama struktur. Struktur biasa dipakai untuk

mengelompokkan beberapa informasi yang berkaitan menjadi sebuah.

Variabel-variabel yang membentuk suatu struktur, selanjutnya disebut

sebagai elemen dari struktur atau field. Dengan demikian dimungkinkan suatu

struktur dapat berisi elemen-elemen data berbeda tipe seperti char, int, float, double,

dan lain-lain. Contoh sebuah struktur adalah informasi data tanggal (date) yang berisi:

- day

- month, dan

- year

Mendefinisikan & Mendeklarasikan Struktur

Suatu struktur didefinisikan dengan menggunakan kata kunci struct. Contoh

pendefinisian sebuah tipe data struktur :

struct date {

int month; int day; int

year;

};

struct date {

1. Memahamkan konsep tipe data

2. Memahamkan string sebagai array dari

3. Dapat memasukkan dan menampilkan isi variabel

4.

Page 124: Buku tutorial pemprograman c

/* Buku Kumpulan Soal-Soal Pemorgaman C */ printf(“ Page 119 “)

int month, day, year;

C. PERCOBAAN

1. Buatlah 2 var (today & tommorow) bertipe struct date. Isilah var today dengan tanggal

hari ini. Temukan tgl utk var tomorrow.

Keterangan :

- Berikan pengecekan utk akhir bulan

- Berikan pengecekan utk akhir tahun

- Berikan pengecekan utk bulan Feb di tahun kabisat

Listing Program :

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

#include <stdio.h>

struct date{

int day, month, year;

};

void cetak(date);

void setTommorow(struct date, struct date *);

int main(){

date today, tommorow;

printf("Masukkan tanggal dd-mm-yyyy : "); scanf("%d-%d-

%d",&today.day, &today.month, &today.year);

setTommorow(today, &tommorow);

cetak(tommorow);

scanf("%d", &today.day);

}

void setTommorow(struct date today, struct date *tommorow){

int bulan[]={31,28,31,30,31,30,31,31,30,31,30,31};

if(today.year % 4 ==0)

bulan[1]=29;

(*tommorow).day = today.day + 1;

(*tommorow).month = today.month;

(*tommorow).year = today.year;

if((*tommorow).day > bulan[today.month -1]){

(*tommorow).day = 1;

Page 125: Buku tutorial pemprograman c

/* Buku Kumpulan Soal-Soal Pemorgaman C */ printf(“ Page 120 “)

29

30

31

32

33

34

35

36

37

38

39

40

(*tommorow).month = today.month + 1;

}

if((*tommorow).month > 12){

(*tommorow).month = 1;

(*tommorow).year = today.year + 1;

}

}

void cetak(struct date temp){

printf("%d-%d-%d\n", temp.day, temp.month, temp.year);

}

Output Program :

Analisa :

Variabel today dan tommorow memiliki tipe struct date sehingga memiliki elemen

tanggal, bulan dan tahun. Untuk menetukan nilai dari variabel tommorow maka

digunakan fungsi setTommorow() dengan parameter struct today dan juga pointer struct

tommorow. Alasan digunakannya struct pointer untuk tommorow agar nilainya dapat

berubah walaupun di fungsi yang tidak sama.

Untuk mempermudah perhitungan jumlah hari dalam tiap bulan, maka jumlah hari

tersebut dimasukkan kedalam array bulan. Setelah itu terdapat kondisi untuk menentukan

apakah tahun sekarang kabisat atau tidak, jika kabisat maka akan mengubah array bulan

dengan index 1 -- > index 1 merupakan cerminan dari bulan februari.

Proses selanjutnya adalah menjumlahkan nilai tanggal di var today dengan angka satu.

Jika hasil penjumlahanya lebih besar dari bulan sekarang maka maka set tanggal menjadi

satu dan tambahkan bulan. Jika hasil bulan melebihi dari tahun maka set bulan menjadi

satu dan tambahkan tahun.

2. Buatlah program sebagai berkut dengan menggunakan array of struct :

Input :

- Nama Mahasiswa

- Nilai Tugas

- Nilai UTS

Page 126: Buku tutorial pemprograman c

/* Buku Kumpulan Soal-Soal Pemorgaman C */ printf(“ Page 121 “)

- Nilai UAS

Sebanyak n mahasiswa

Output :

Nama Mhs, Nilai Akhir, Nilai Huruf, Keterangan lulus yang ditampilkan secara

mendatar. Nilai Akhir = 20% tugas + 40% UTS + 40% UAS

Nilai huruf dan keterangan lulus (tanyakan Asisten)

- Dengan menggunakan fungsi buatlah fasilitas untuk menampilkan Nilai-nilai dari

mahasiswa yang diinputkan.

- Dengan menggunakan fungsi buatlah fasilitas untuk menampilkan data

mahasiswa yang mempunyai nilai Rata-rata tertinggi.

Listing Program :

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

#include <stdio.h>

#include <stdlib.h>

struct mahasiswa{

char nama[30];

int tugas, uts, uas;

};

void input(struct mahasiswa data[], int N){

int i=0;

puts("\nMasukkan data Mahasiswa");

while(i<N){

printf("\nMahasiswa ke-%d\n", i+1);

printf("Nama : "); fflush(stdin); gets(data[i].nama);

printf("Nilai Tugas : "); scanf("%d", &data[i].tugas);

printf("Nilai UTS : "); scanf("%d", &data[i].uts);

printf("Nilai UAS : "); scanf("%d", &data[i].uas);

i++;

}

}

double getRata(struct mahasiswa data[], int index){

return (0.2 * data[index].tugas + 0.4 * data[index].uts + 0.6 *

data[index].uas);

}

char getGrade(double nilai){

if(nilai >= 90)

Page 127: Buku tutorial pemprograman c

/* Buku Kumpulan Soal-Soal Pemorgaman C */ printf(“ Page 122 “)

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

60

return 'A';

else if(nilai >= 80)

return 'B';

else if(nilai >= 70)

return 'C';

else if(nilai >= 50)

return 'D';

else return 'E';

}

int getIndexMax(struct mahasiswa data[], int N){

int i=0, hasil=0;

double max = 0;

while(i<N){

if(getRata(data,i) > max){

max = getRata(data,i);

hasil = i;

}

i++;

}

return hasil;

}

void cetak(struct mahasiswa data[], int N){

system("cls");

puts("DAFTAR NILAI");

puts("MATAKULIAH KONSEP PEMROGAMAN");

puts("================================================

==========================");

printf("No\t Nama\t\t\t\t\t Nilai\t\t Grade\n");

printf("\t Mahasiswa\t\t Tugas\t UTS\t UAS\t Akhir\n");

puts("================================================

==========================");

int i=0;

while(i<N){

printf("%d\t %s\t\t %-2d\t %-2d\t %-2d\t %-4.2lf\t

%c\n",i+1,data[i].nama, data[i].tugas, data[i].uts, data[i].uas, getRata(data,i),

getGrade(getRata(data,i)));

i++;

}

puts("================================================

==========================");

printf("Total Mahasiswa = %d\n", i);

Page 128: Buku tutorial pemprograman c

/* Buku Kumpulan Soal-Soal Pemorgaman C */ printf(“ Page 123 “)

printf("\nNilai tertinggi\n");

printf("Nama : %s\n", data[getIndexMax(data,N)].nama);

printf("Nilai : %4.2lf\n", getRata(data, getIndexMax(data,N)));

}

Output Program :

Analisa :

Struct mahasiswa memiliki element nama dengan tipe string dan 3 elemen bertipe

integer yaitu tugas, uts, dan uas. Fungsi input digunakan untuk memasukkan data

Page 129: Buku tutorial pemprograman c

/* Buku Kumpulan Soal-Soal Pemorgaman C */ printf(“ Page 124 “)

dan cetak digunakan untuk mencetak data struct ke layar. Rata- rata nilai di dapat dari

fungsi getRata() dan grade nilai di dapat dari fungsi getGrade.

~ End of Page ~

Page 130: Buku tutorial pemprograman c