Anda di halaman 1dari 52

Makalah

DASAR-DASAR PEMROGRAMAN

CHRISTIN APRILLIA BR MANULLANG


202406019
KOM A’20

PROGRAM STUDI D-3 TEKNIK INFORMATIKA


FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM
UNIVERSITAS SUMATERA UTARA MEDAN
2020
KATA PENGANTAR

Puji dan syukur penulis panjatkan kepada TUHAN YME, dengan limpah
karunia-Nya penulis dapat menyelesaikan penyusunan makalah ini dengan judul
DASAR-DASAR PEMROGRAMAN.
Terima kasih penulis sampaikan kepada setiap pihak yang sudah mendukung
selama berlangsungnya pembuatan makalah ini. Terkhusus lagi penulis sampaikan
terima kasih kepada Bapak James Piter Marbun selaku dosen pengajar dan asisten
laboratorium Muhammad Irfan Liy yang telah membimbing. Penulis sekaligus juga
berharap semoga makalah ini bisa bermanfaat bagi setiap pembaca.
Disertai keseluruhan rasa rendah hati, kritik dan saran yang membangun amat
penulis nantikan, agar nantinya penulis dapat meningkatkan dan merevisi kembali
pembuatan makalah di tugas lainnya dan di waktu berikutnya.

Medan, November 2020

Penulis

i
DAFTAR ISI

Halaman
KATA PENGANTAR i
DAFTAR ISI ii

BAB 1 PENDAHULUAN
1.1 Latar Belakang 1
1.2 Rumusan Masalah 1
1.3 Tujuan 1

BAB 2 Pengenalan C
2.1 Sejarah Bahasa C 2
2.2 Struktur Bahasa Pemrograman C 5

BAB 3 If – Nested If & Switch Case


3.1 Bentuk Blok Percabangan 8

BAB 4 Looping
4.1 Memahami Blok Perulangan pada C 24
4.2 Perulangan For pada C 25
4.3 Perulangan While pada C 28
4.4 Perulangan Do While pada C 29

BAB 5 Function
5.1 Pengertian Fungsi/Function 32
5.2 Mendefinisikan Fungsi 32
5.3 Fungsi dengan Parameter 33

BAB 6 Array
6.1 Apa itu Array 41
6.2 Cara Membuat Array pada C 42

BAB 7 Penutup
7.1 Kesimpulan 48
7.2 Saran 48

DAFTAR PUSTAKA 49

ii
BAB I
PENDAHULUAN

1.1 Latar Belakang


Bahasa pemrograman atau sering diistilahkan juga dengan bahasa komputer
adalah teknik komando/instruksi untuk memerintahkan komputer. Bahasa
pemrograman ini merupakan suatu himpunan dari aturan sintaks dan semantik yang
dipakai untuk mendefinisikan program komputer. Bahasa pemrograman dikenal cukup
sulit dipahami oleh orang awam dan terkesan membosankan (Hanselman, 2016).
Salah satu bahasa pemrograman yang cukup populer yaitu bahasa
pemrograman C. Bahasa C adalah sebuah bahasa dasar tingkat menengah yang
sifatnya kompleks dan membangun logika atau algoritma. Bahasa C bersifat portable,
yaitu dengan sedikit atau tanpa perubahan, suatu program yang dirancang atau ditulis
dengan bahasa C dapat dijalankan pada komputer lain. Bahasa C banyak menginspirasi
bahasa-bahasa pemrograman yang lain seperti Java, Javascript, C++, C#, PHP, dsb.
Bahasa-bahasa tersebut memiliki sintaks hampir sama dengan bahasa C.

1.2 Rumusan Masalah


Berdasarkan latar belakang itu, dapat diambil rumusan masalah yaitu :
1. Apa itu bahasa pemrograman C ?
2. Bagaimana struktur atau bagian dari bahasa C ?

1.3 Tujuan
1. Memenuhi tugas Praktikum Dasar Pemrograman.
2. Mengetahui dam memahami apa itu bahasa C.
3. Mempelajari struktur bahasa pemrograman C
BAB II
PENGENALAN C

2.1 Sejarah Bahasa C


Bahasa C merupakan sebuah bahasa pemrograman komputer yang ringkas
untuk tujuan-tujuan umum yang pada awalnya dikembangkan oleh Dennis MacAlistair
Ritchie untuk sistem operasi Unix. Bahasa ini diimplementasikan pertama kali di
komputer PDP-11 buatan Digital Equipment Corporation pada 1972.

Gambar 1.1. Dennis Ritchie di Japan Prize Foundation

Bahasa pemrograman tersebut dinamakan “C” merupakan kelanjutan dari


bahasa “B” yang diperkenalkan pada sekitar 1970. Sistem operasi Unix dan hampir
semua aplikasinya ditulis dalam bahasa C. Namun demikian, C tidak dibatasi oleh
platform tertentu dan program dapat dibuat pada mesin mana saja yang mendukung C,
termasuk diantaranya yang menjalankan platform Windows.
Fleksibilitas dan portabilitas C membuatnya sangat populer dan bahasa
tersebut dibakukan pada 1989 oleh ANSI (American National Standards Institute).
Standar ANSI menjelaskan tanpa ambiguitas setiap aspek C, meniadakan
ketidakpastian tentang sintaks yang tepat terkait bahasa tersebut. ANSI C telah dikenal
sebagai standar untuk bahasa C.
3

2.1.1 Mengapa Belajar Pemrograman Bahasa C?


Bahasa C telah dikenal hingga saat ini seiring dengan diperkenalkannya
bahasa-bahasa pemrograman yang baru seperti Java, C++, dan C#. Kebanyakan bahasa
baru tersebut diturunkan atau setidaknya sebagian dari C dan ukurannya jauh lebih
besar.
Begitu ringkasnya C menjadikannya cocok sebagai bahasa pemula karena ia
mudah dipelajari. Untuk ke depan, akan sangat mudah untuk mempelajari bahasa-
bahasa baru lainnya sekali saja prinsip-prinsip bahasa C telah dikuasai. Sebagai
contoh, bahasa C++ merupakan sebuah ekstensi bahasa C dan seseorang mungkin bisa
kesulitan untuk mempelajarinya kecuali Anda telah menguasai pemrograman bahasa
C terlebih dahulu.
Terlepas dari fitur-fitur lebih yang tersedia dalam bahasa-bahasa terbaru,
bahasa C tetaplah populer karena ia bisa melakukan banyak hal dan begitu efisien. Saat
ini, ia digunakan juga pada banyak platform untuk segala hal mulai dari
microcontroller hingga pada banyak sistem ilmiah yang paling maju. Para pemrogram
di seluruh dunia menyarankan penggunaannya karena ia memperbolehkan kendali dan
efisiensi maksimal dalam program-program mereka.

2.1.2 Pustaka-pustaka Standar Bahasa C


ANSI C menjelaskan bahwa sejumlah pustaka standar yang mengandung
beberapa fungsi yang sudah diuji coba serta bisa digunakan dalam program-program
C Anda. Pustaka-pustaka ada dalam berkas “header” yang masing-masingnya
memiliki ekstensi berkas” .h“.
Nama-nama berkas header pustaka standar C disebutkan dalam daftar berikut
dengan sebuah penjelasan mengenai kegunaannya:
4

Tabel 1. Pustaka-pustaka Standar Bahasa C.


Pustaka Penjelasan
stdio.h Mengandung fungsi-fungsi masukan (input) dan keluaran
(output), tipe-tipe dan definisi-definisi makro. Pustaka ini
digunakan kebanyakan program C dan mewakili hampir
sepertiga keseluruhan pustaka-pustaka C.
ctype.h Mengandung fungsi-fungsi untuk menguji karakter-karakter.
string.h Mengandung fungsi-fungsi untuk memanipulasi kalimat teks
(strings).
math.h Mengandung fungsi-fungsi matematis.
stdlib.h Mengandung fungsi-fungsi utilitas untuk konversi bilangan,
alokasi penyimpanan, dsb.
assert.h Mengandung sebuah fungsi yang bisa digunakan untuk
menambahkan fungsi diagnostik ke dalam sebuah program.
stdarg.h Mengandung sebuah fungsi yang digunakan untuk menjejaki
sederet argumen-argumen fungsi.
setjmp.h Mengandung sebuah fungsi yang digunakan untuk
menghindari rangkaian panggilan dan kembalian yang wajar.
signal.h Mengandung fungsi-fungsi untuk menangani kondisi-kondisi
eksepsional yang kemungkinan muncul dalam sebuah program.
limit.h Mengandung definisi-definisi konstanta untuk ukuran tipe-tipe
data bahasa C.
float.h Mengandung definisi-definisi konstanta yang berhubungan
dengan aritmetika bilangan titik-kambang (floating-point).
5

2.2 Struktur Bahasa Pemrograman C


Setiap ingin membuat program C, kita harus menuliskan struktur seperti berikut
ini:
#include <stdio.h>

int main(){
// kode atau logika program kita di sini
return 0;
}
Ini adalah struktur dasar yang wajib dipahami. Kalau kita perhatikan, struktur
program tersebut dibagi menjadi dua bagian utama:
1. Bagian Include;
2. Blok Fungsi Main.

Gambar 2. Struktur dasar bahasa C


Apa itu #include?
Pada program C, #include berfungsi untuk mengimpor fungsi-fungsi k rumah
yang sudah didefinisikan pada header file. Header file adalah file yang berisi definisi
fungsi yang sudah dibuat. Tujuannya agar bisa digunakan pada program C yang
lainnya. File ini berekstensi .h, contoh: stdio.h.
Pada contoh di atas, kita mengimpor file stdio.h. File ini berisi deklarasi fungsi-
fungsi dasar yang kita butuhkan untuk membuat program C, seperti printf().
File stdio.h sudah ada di dalam komputer kita saat menginstal gcc.
Apa itu Fungsi main()?
Fungsi main() adalah fungsi utama dalam program. Fungsi ini akan dieksekusi
pertama kali saat program dijalankan. Karena itu, kita harus menuliskan logika program
di dalam fungsi ini.
6

Kita membuat fungsi main dengan deklarasi seperti ini:


Int main(){
//...
Return 0;
}
Maksud dari int di depan main adalah tipe data yang akan dikembalikan. Maka
di dalam fungsi main(), wajib kita sertakan return 0. Artinya, fungsi main akan
mengembalikan nilai 0 setelah selesai dieksekusi. Cara lain kita bisa
menggunakan void. Contohnya:
void main(){
//...
}
Void artinya tidak ada (kosong). Jika kita menggunakan void, maka kita tidak
perlu menuliskan kata kunci return di akhir fungsi. Karena fungsi void tidak akan
mengembalikan nilai apapun.

2.2.1 Penulisan Statement


Statement adalah perintah atau fungsi untuk melakukan sesuatu. Contoh:
printf("Hello World!");
Artinya: kita menyuruh komputer untuk mencetak teks Hello
World! ke console. Setiap statement di dalam program C wajib diakhiri dengan titik
koma (;), kalau tidak, maka program akan error.

2.2.2 Penulisan Blok Kode


Blok kode adalah kumpulan statement atau ekspresi. Blok kode pada prgram C
dibungkus dengan kurung kurawal { ... }. Contoh blok kode:
if (x == y) {
// di dalam sini adalah blok kode
// sampai akhir kurung
}
for (int i = 0; i < 10; i++){
// di dalam sini adalah blok kode
// sampai akhir kurung
}
7

Kita akan banyak menggunakan blok kode untuk membungkus beberapa


statement di dalam blok if, for, while, do/while, fungsi, dll.

2.2.3 Penulisan Komentar


Komentar adalah bagian yang tidak akan dieksekusi oleh komputer. Komentar
bisanya digunakan untuk membuat keterangan pada kode program. KitaKita bisa
menggunakan garis miring ganda (//) untuk membut komentar satu baris dan
tanda /**/ untuk membuat komentar beberapa baris. Contoh:

#include <stdio.h>

int main(){

// ini adalah komentar satu baris

printf("Hello World!");

/*

ini adalah komentar

yang lebih

dari satu baris

*/

return 0;

2.2.4 Case Bersifat Sensitive


Case Sensitive artinya bahasa C akan memperhatikan huruf besar dan huruf
kecil dalam penulisan kode. Contoh:
// misalkan kita membuat variabel seperti ini
string nama = "Petani";
string Nama = "Kode";
Variabel nama dengan Nama akan diganggap variabel yang berbeda, karerna
ada yang pakai huruf besar (kapital) dan hutuf kecil.
BAB III
IF – NESTED IF & SWITCH CASE

3.1 Bentuk Blok Percabangan


Bagi sebagian orang yang belum pernah belajar pemrograman sebelumnya,
mungkin akan bertanya: “Apa itu percabangan dan kenapa dinamakan
percabangan?” Bagi yang belum pernah belajar tentang algoritma dan flowchart,
mungkin ini istilah yang baru pertama didengar.
Isitilah ini sebenarnya untuk menggambarkan alur program yang bercabang.
Pada flow chart, logika “jika…maka” digambarkan dalam bentuk cabang.

Gambar 3. Ilustrasi Percabangan


Karena itulah disebut percabangan. Selain percabangan, struktur ini juga
disebut: control flow, decision, struktur kondisi, struktur if, dsb. Percabangan akan
mampu membuat program berpikir dan menentukan tindakan sesuai dengan
logika/kondisi yang kita berikan.
9

Pada bahasa pemrograman C, terdapat 6 bentuk percabangan yang harus kita


ketahui. Apa saja itu? Berikut akan dijelaskan:

3.1.1 Percabangan if
Percabangan if merupakan percabangan yang hanya memiliki satu blok
pilihan saat kondisi bernilai benar. Coba perhatikan flowchart berikut:

Gambar 3.1.1. Flowchart percabangan if

Flowchart tersebut dapat kita baca seperti ini: “Jika total belanja lebih besar
dari Rp 100.000, Maka tampilkan pesan “Selamat, Anda dapat hadiah”. Kalau
dibawah Rp 100.000 bagaimana? Maka pesannya tidak akan ditampilkan.
Mari kita coba membuat program C bernama percabangan_if.c, kemudian isi
dengan kode berikut.
#include <stdio.h>
void main(){
printf("== Program Pembayaran ==\n");
int total_belanja = 0;
printf("Inputkan total belanja: ");
10

scanf("%i", &total_belanja);
// menggunakan blok percabangan if
if( total_belanja > 100000 ){
printf("Selamat, Anda mendapatkan hadiah!\n");
}
printf("Terimakasih sudah berbelanja di toko kami\n\n");
}

Maka, hasilnya saat kita masukan nilai di bawah 100000 :

Gambar 3.1.2. Hasil ketika diinput nilai < 100000

Saat kita masukan nilai di atas 100000.

Gambar 3.1.3. Hasil ketika diinput nilai > 100000


11

Sekarang mari kita perhatikan kode programnya:


// menggunakan percabangan if
If( total_belanja > 100000 ){
Printf(“Selamat, Anda mendapatkan hadiah!\n”);
}

Inilah yang disebut blok program. Blok program berisi sekumpulan ekpresi
dan statement untuk dikerjakan oleh komputer. Blok program pada bahasa C, selalu
diawali dengan tanda buka kurung kurawal { dan akan diakhiri dengan tutup kurung
kurawal }.
Apabila di dalam blok hanya terdapat satu baris ekspresi atau statement, maka
boleh tidak ditulis tanda kurungnya seperti ini:

If (total_belanja > 100000)

Printf(“Selamat, Anda mendapatkan hadiah!\n”);

3.1.2. Percabangan if/else


Percabangan if/else merupakan percabangan yang memiliki dua blok
pilihan. Blok pilihan pertama untuk kondisi benar, dan pilihan kedua untuk
kondisi salah (else). Coba perhatikan flowchart ini:
12

Gambar 3.2.1. Flowchart percabangan if/else

Ini adalah flowchart untuk mengecek password. Apabila password benar,


pesan yang ada pada blok hijau akan ditampilkan: “Selamat datang bos!". Tapi
kalau salah, maka pesan yang ada di blok merah yang akan ditampilkan: “Password
salah, coba lagi!". Kemudian, pesan yang berada di blok abu-abu akan tetap
ditampilkan, karena dia bukan bagian dari blok percabangan if/else. Perhatikan arah
panahnya, setiap blok if/else mengarah ke sana
13

Gambar 3.2.2. Arah panah Flowchart percabangan if/else

Untuk lebih jelasnya, mari kita coba dalam program. Buatlah file beru
bernama percabangan_if_else.c, kemudian isi dengan kode berikut:
#include <stdio.h>
void main(){
// membuat array karakter untuk menyimpan password
char password[30];
printf("==== Program Login ====\n");
printf("Masukan password: ");
scanf("%s", &password);
// percabangan if/esle
if( strcmp(password, "kopi") == 0 ){
printf("Selamat datang bos!\n");
} else {
printf("Password salah, coba lagi!\n");
}
14

printf("Terimakasih sudah menggunakan aplikasi ini!\n");


}

Hasilnya saat password yang diinputkan benar.

Gambar 3.2.2. Hasil saat password yang diinputkan benar

Saat password yang diinputkan salah.

Gambar 3.2.3. Hasil saat password yang diinputkan salah

Sekarang coba perhatikan kode programnya. Pertama kita membuat sebuah


array dari karakter dengan panjang 30 karakter untuk menyimpan password.
// membuat array karakter untuk menyimpan password
Char password[30];
Setelah itu kita mengisi nilai password dengan mengambil input dari scanf().
Scanf(“%s”, &password);
15

Berikutnya pada percabangan if/else, kita menggunakan


fungsi strcmp() untuk membandingkan dua teks (string).
If( strcmp(password, “kopi”) == 0 ){
Printf(“Selamat datang bos!\n”);
} else {
Printf(“Password salah, coba lagi!\n”);
}

Fungsi strcmp() akan menghasilkan nilai false atau nol (0) jika kedua teks
yang dibandingkan sama. Oleh sebab itu, kita menggunakan perbandingan seperti ini
pada blok if/else : Strcmp(password, “kopi”) == 0

3.1.3. Percabangan if/else/if


Percabangan if/else/if merupakan percabangan yang memiliki lebih dari dua blok
pilihan. Coba perhatikan flowchart berikut:

Gambar 3.3.1. Flowchart Percabangan if-else if-else


16

Ini adalah blok untuk percabangan if/else/if. Kita bisa menambahkan


berapapun blok yang kita inginkan. Perhatikan contoh program berikut ini
#include <stdio.h>
Void main(){
Int nilai;
Char grade;
Printf(“=== Program Grade Nilai ===\n”);
Printf(“Inputkan nilai: “);
Scanf(“%i”, &nilai);
// menggunakan percabangan if/esle/if
If (nilai >= 90) {
Grade = ‘A’;
} else if (nilai >= 80) {
Grade = ‘B’; // seharusnya B+
} else if (nilai >= 70) {
Grade = ‘B’;
} else if (nilai >= 60) {
Grade = ‘C’; // seharusnya C+
} else if (nilai >= 50) {
Grade = ‘C’;
} else if (nilai >= 40) {
Grade = ‘D’;
} else if (nilai >= 30) {
Grade = ‘E’;
} else {
Grade = ‘F’;
}
Printf(“Nilai: %i\n”, nilai);
Printf(“Grade anda: %c\n”, grade);
}
17

Hasilnya:

Gambar 3.3.2. Hasil percabangan if/else if/else

Perhatikan di bagian else if untuk >= 80 dan >= 60, seharusnya di sana kita
mengisi variabel grade dengan B+ dan C+. Tapi kita mengisinya
dengan B dan C saja. Ini karena variabel tersebut bertipe char dan tipe data ini hanya
mampu menyimpan satu karakter saja. Jika ingin menggunakan B+ dan C+, kita bisa
pakai tipe data string.

3.1.4. Percabangan Switch / Case


Percabangan switch/case adalah bentuk lain dari percabangan if/else/if.
Strukturnya seperti ini:
switch(variabel){
case <value>:
// blok kode
break;
case <value>:
// blok kode
break;
default:
// blok kode
}
18

Kita dapat mermbuat blok kode (case) sebanyak yang diinginkan di dalam
blok switch. Pada <value>, kita bisa isi dengan nilai yang nanti akan dibandingkan
dengan varabel. Setiap case harus diakhiri dengan break. Khusus untuk default,
tidak perlu diakhiri dengan break karena dia terletak di bagian akhir.
Pemberian break bertujuan agar program berhenti mengecek case berikutnya saat
sebuah case terpenuhi. Contoh:

#include <stdio.h>
void main(){
char grade;
printf("Inputkan grade: ")
scanf("%c", &grade);
switch (toupper(grade)){
case 'A':
printf("Luar biasa!\n");
break;
case 'B':
case 'C':
printf("Bagus!\n");
break;
case 'D':
printf("Anda lulus\n");
break;
case 'E':
case 'F':
printf("Anda remidi\n");
break;
default:
printf("Grade Salah!\n");
}
}
19

Gambar 3.4.1 Hasil program percabangan switch case

Perhatikan program di atas. Kita menggunakan fungsi toupper() untuk


mengubah huruf kecil menjadi huruf kapital atau huruf besar.
Switch (toupper(grade)){
...
}
Mengapa menggunakan toupper()? Ini karena agar kita dapat menginputkan
huruf kecil dan huruf besar untuk mengecek grade. Berikutnya coba perhatikan case
'B' dan case 'E'.
20

Kedua case ini tidak memiliki isi. Ini artinya dia akan mengikut pada case
berikutnya. Sebagai contoh, apabila kita inputkan B maka case C yang akan terpilih.
BegituBegitu juga saat kita inputkan E, maka case F yang akan terpilih.

3.1.5. Percabangan dengan Opertor Ternary


Percabangan menggunakan opreator ternary merupakan bentuk lain dari
percabangan if/else. Bisa dibilang bentuk singkatnya dari if/else. Operator ternary
juga dikenal dengan sebutan operator kondisi (conditional operator). Bentuk
strukturnya seperti ini:
(kondisi) ? true : false
Bagian kondisi dapat kita isi dengan ekspresi yang menghasilkan
nilai true dan false. Lalu setelah tanda tanya ? adalah bagian pilihan.
Jika kondisi bernilai benar, maka true yang akan dipilih. Tapi kalau salah,
maka false yang akan dipilih.
21

Untuk lebih jelasnya, mari kita coba. Buatlah file baru bernama 📄 ternary.c,
kemudian isi dengan kode berikut:
#include <stdio.h>
Void main(){

Int jawaban;

Printf(“Berapakah hasil 3+4?\n”);


Printf(“jawab> “);
Scanf(“%d”, &jawaban);

Printf(“Jawaban anda: %s\n”, (jawaban == 7) ? “Benar” : “Salah”);

}
Hasilnya:

Gambar 3.5.1 Hasil program percabangan dengan Opertor Ternary


Coba perhatikan pada baris ini:
Printf(“Jawaban anda: %s\n”, (jawaban == 7) ? “Benar” : “Salah”);

Di sana kita menggunakan operator ternary untuk membuat kondisi if/else.


Jika tidak menggunakan operator ternary, akan menjadi seperti ini:
if( jawaban == 7 ){
Printf(“Jawaban anda: Benar\n”);
} else {
Printf(“Jawaban anda: Salah\n”);
}
22

3.1.6. Percabangan Bersarang (Nested)


Semua bentuk blok percabangan di atas dapat kita buat di dalam percabangan
yang lainnya. IniIni disebut dengan percabangan bersarng atau nested if. Contoh:
#include <iostream>
Using namespace std;

Int main(){

String username, password;

cout << “=== Welcome ===” << endl;


cout << “Username: “;
cin >> username;
cout << “Password: “;
Cin >> password;

if (username == “petanikode”){
if (password == “kopi”){
cout << “Selamat datang bos!” << endl;
} else {
cout << “Password salah, coba lagi!” << endl;
}
} else {
cout << “Anda tidak terdaftar” << endl;
}

return 0;

}
23

Hasilnya:

Gambar 3.6.1. Hasil program percabangan bersarang (Nested)


BAB IV

LOOPING

4.1 Memahami Blok Perulangan pada C

Apa yang akan kamu lakukan saat disuruh mencetak kalimat berulang-ulang?
Misalnya: “Tolong tampilkan kalimat “Tutorial Pemrograman C!” sebanyak 10x ke
layar!”

Mungkin kamu bisa menuliskannya dengan fungsi printf() sebanyak 10 kali.


Apakah boleh seperti itu? Ya, boleh-boleh saja. TapiTapi bagaimana kalau nanti mau
menampilkan sebanyak 1000 kali? Pasti akan melelahkan . Karena itu, kita harus
menggunakan perulangan.

Perulangan akan membantu kita mengeksekusi kode yang berulang-ulang,


berapapun yang kita mau. Ada tiga macam bentuk perulangan pada C. Secara umum,
dibagi menjadi dua kelompok, yaitu: counted loop dan uncounted loop.

Perbedaannya:

1. Counted Loop merupakan perulangan yang jelas dan sudah tentu banyak kali
perulangannya.
2. Sedangkan Uncounted Loop, merupakan perulangan yang tidak jelas berapa
kali ia harus mengulang.

Perulangan yang termasuk dalam Counted Loop:

a. Perulangan For

Perulangan yang termasuk dalam Uncounted Loop:

a. Perulangan While
b. Perulangan Do/While
25

4.2 Perulangan For pada C


Perulangan for merupakan perulangan yang termasuk dalam counted loop,
karena sudah jelas berapa kali ia akan mengulang.

Gambar 4.2.1. Flowchart perulangan for


Bentuknya kodenya seperti ini:
for(int i = 0; i < 10; i++){
printf(“Perulangan ke-%i\n”, i);
}

Yang perlu diperhatikan adalah kondisi yang ada di dalam kurung setelah
kata for. Kondisi ini akan menentukan:
1. Hitungan akan dimulai dari 0 (i = 0);
2. Hitungannya sampai berapa? Sampai i < 10;
3. Lalu di setiap perulangan i akan bertambah +1 (i++).
Variabel i pada perulangan for berfungsi untuk menyimpan nilai hitungan.
Jadi setiap perulangan dilakukan nilai i akan selalu bertambah satu. Karena kita
menentukannya di bagian i++.
26

Contoh program loop dengan for:


#include <stdio.h>

void main(){

for(int i = 0; i < 10; i++){


printf(“Perulangan ke-%i\n”, i);
}
}

Gambar 4.2.2. Hasil program Looping For

Apakah nama variabelnya harus selalu i? Tidak. Kita juga bisa menggunakan
nama lain. Misalnya:
#include <stdio.h>

void main(){

for(int counter = 0; counter < 50; counter+=2){


printf(“Perulangan ke-%i\n”, counter);
}
}

Pada contoh tersebut, kita melakukan perulangan dimulai dari nol 0. Lalu di
setiap perulangan nilai variabel couter akan ditambah 2 (counter+2).
27

Hasilnya:

Gambar 4.2.3. Hasil program Looping For dengan variabel lain


Bagaimana kalau counter perulangannya dimulai dari angka yang lebih besar
sampai yang ke paling kecil? Ini biasanya kita buat saat ingin menghitung mundur.
Caranya gampang. Kita tinggal isi nilai counter dengan nilai terbesarnya. Misalnya
kita akan mulai hitungan dari 10 sampai ke 0. Maka nilai counter, kita isi awalnya
dengan 10.
Lalu di kondisi perbandingannya, kita berikan counter > 0. Artinya
perulangan akan dilakukan selama nilai counter lebih besar dari 0. Lalu kita kurangi
(-1) nilai counter di setiap perulangan (counter--).
for(int counter = 10; counter > 0; counter--){
printf(“Perulangan ke-%i\n”, counter);
}
28

Hasilnya:

Gambar 4.2.4. Hasil looping for pengurangan angka


Mengapa tidak sampai nol (0)? Karena kondisi yang kita berikan counter >
0. Apabila counter bernilai 0, maka kondisi ini akan menjadi false. Kecuali kita
menggunakan operator lebih besar sama dengan (>=), maka jika counter bernilai 0,
kondisi akan menjadi true.

4.3 Perulangan While pada C


Perulangan while merupakan perulangan yang termasuk dalam
perulangan uncounted loop. Perulangan while juga dapat menjadi perulangan
yang counted loop dengan memberikan counter di dalamnya. Contohnya:
#include <stdio.h>
void main(){
char ulangi = ‘y’;
int counter = 0;
while(ulangi == ‘y’){
printf(“Apakah kamu mau mengulang?\n”);
printf(“Jawab (y/t): “);
scanf(“ %c”, &ulangi);
// increment counter
counter++;
}
printf(“\n\n----------\n”);
printf(“Perulangan Selesai!\n”);
printf(“Kamu mengulang sebanyak %i kali.\n”, counter);
29

Gambar 4.3.1. Hasil program Looping While

Perhatikan blok kode while berikut:


// perulangan while
while(ulangi == ‘y’){
printf(“Apakah kamu mau mengulang?\n”);
printf(“Jawab (y/t): “);
scanf(“ %c”, &ulangi);
// increment counter
counter++;
}

Perulangan akan terjadi selama variabel ulangi brenilai y. Lalu kita


menggunakan fungsi scanf() untuk mengambil input. Selama kita menjawab y pada
input, maka perulangan akan terus dilakukan. Tapi kalau kita jawab yang lain, maka
perulangan akan dihentikan. Karena kondisi perulangannya tidak terpenuhi.

4.4 Perulangan Do/While pada C


Perulangan do/while sama seperti perulangan while. Perbedaannya,
perulangan do/while akan melakukan perulangan sebanyak 1 kali terlebih dahulu,
lalu mengecek kondisi yang ada di dalam kurung while.
30

Gambar 4.4.1. Flowchart perulangan do/while

Bentuk kodenya :
do {
// blok kode yang akan diulang
} while (<kondisi>);

Perulangan do/while akan mengecek kondisi di belakang (sesudah


mengulang), sedangkan while akan mencek kondisi di depan atau awal (sbelum
mengulang). Contohnya:
#include <stdio.h>

void main(){

char ulangi = 'y';


31

int counter = 0;
do {
printf("Apakah kamu mau mengulang?\n");
printf("Jawab (y/t): ");
scanf(" %c", &ulangi);

// increment counter
counter++;
} while(ulangi == 'ulang)

printf("\n\n----------\n");
printf("Perulangan Selesai!\n");
printf("Kamu mengulang sebanyak %i kali.\n", counter);
}

Maka hasilnya:

Gambar 4.4.2. Hasil program Looping do-while


BAB V
FUNCTION

5.1. Pengertian Fungsi/Function

Fungsi merupakan suatu bagian dari program yang dimaksudkan untuk


mengerjakan suatu tugas tertentu dan letaknya terpisah dari program yang
memanggilnya. Suatu fungsi dapat dibuat di dalam program yang sama ( fungsi
internal) maupun di file lain ( fungsi eksternal ). Dari dalam program yang sama,
digunakan tanda ‘=’ untuk memberikan nilai ke suatu variabel. Kalimat untuk
memberikan nilai ke sebuah variabel disebut ‘kalimat penilaian’ atau assignment. Dari
luar program, pemberian nilai pada suatu variabel dilakukan dengan menggunakan
fungsi masukan (input function). Fungsi dalam bahasa C adalah subprogram. Program
yang ditulis dengan C terdiri dari fungsi – fungsi. Fungsi minimal yang harus terdapat
dalam suatu program adalah main() dan muncul hanya sekali. Pengertian fungsi dalam
Turbo C mirip dengan subroutine dalam bahasa BASIC atau fungsi dan procedur
dalam PASCAL.

5.2. Mendefinisikan Fungsi


Suatu fungsi secara umum mempunyai dua buah komponen utama, yaitu
definisi fungsi dan tubuh fungsi. Definisi fungsi berisi dengan tipe dari fungsi, nama
dari fungsi dan argumen-argumennya jika digunakan. Tubuh fungsi berisi dengan
statemen-statemen yang akan melakukan tugas yang akan diberikan kepada fungsi
yang bersangkutan. Bentuk umum dari fungsi :

tipe_fungsi nama-fungsi(argumen1,argumen2,...) // Definisi fungsi


{
/*
Badan fungsi
*/
}
33

Definisi fungsi ditulis sebelum tubuh fungsi tanpa diakhiri dengan titik koma.
Tipe di definisi fungsi menunjukkan tipe dari fungsi. Tipe dari fungsi tergantung dari
tipe data hasil balik yang akan diberikan oleh fungsi. Misalnya hasil balik dari fungsi
berupa nilai numerik pecahan, maka tipe dari fungsi dapat dibuat float atau double atau
long double tergantung padaketepatan yang diinginkan. Jika fungsi tidak memberikan
nilai balik, maka tipenya adalah void. Tipe dari fungsi ini tidak dapat ditulis jika
tipenya adalah char atau int. Jika suatu fungsi didefinisikan tanpa menggunakan
tipenya, maka akan dianggap bertipe integer. Contoh definisi fungsi dengan
menggunakan argumen atau parameter :

int Fungsi (float A, int B, char C)

Hal-hal yang perlu diperhatikan dalam penggunaan fungsi:


a) Kalau tipe fungsi tidak disebutkan, maka akan dianggap sebagai fungsi
dengan nilai keluaran bertipe integer.
b) Untuk fungsi yang memiliki keluaran bertipe bukan integer, maka
diperlukan pendefinisian penentu tipe fungsi.
c) Untuk fungsi yang tidak mempunyai nilai keluaran maka dimasukkan ke
dalam tipe void.
d) Pernyataan yang diberikan untuk memberikan nilai akhir fungsi berupa
pernyataan return.
e) Suatu fungsi dapat menghasilkan nilai balik bagi fungsi pemanggilnya.

5.3 Fungsi dengan Parameter


Parameter adalah variabel yang menyimpan nilai untuk diproses di dalam
fungsi. Parameter akan menyimpan nilai yang akan diinputkan ke dalam fungvoidi.
Contoh:
void say_hello(char name[]){
printf(“Hello %s!\n”, name);
}
34

Pada contoh di atas, name adalah sebuah parameter berupa array dengan tipe
char. Parameter ini hanya akan dikenali di dalam fungsi. Lalu, bagaimana cara
memanggil fungsi yang memiliki parameter?

Berikut caranya:
say_hello(“Petani Kode”);
Perhatikan! “Petani Kode” adalah nilai yang akan kita berikan ke parameter.
Agar lebih paham, mari kita coba dalam program. Silahkan buat program baru dengan
nama parameter.c, kemudian isi dengan kode berikut:
#include <stdio.h>

void say_hello(char name[]){


printf(“Hello %s!\n”, name);
}

void main(){
say_hello(“Dian”);
say_hello(“Petani”);
say_hello(“Kode”);
}

Hasilnya:

Gambar 5.3.1 Hasil program fungsi dengan parameter


Program fungsi dengan parameter pada C, hasil outputnya akan menyesuaikan
dengan nilai parameter yang kita berikan ke dalam fungsi. Lalu bagaimana kalau ada
lebih dari satu parameter? Tinggal ditambahkan dan dipisahv tanda koma seperti ini:
35

void add(int a, int b){


printf(“%d + %d = %d\n”, a, b, a+b);
}
Mari kita coba. Buatlah program baru barnama dua_param.c, kemudian isi dengan
kode berikut:
#include <stdio.h>

void add(int a, int b){


printf(“%d + %d = %d\n”, a, b, a+b);
}

void main(){
add(1, 4);
add(8, 2);
add(3, 2);
}

Hasilnya:

Gambar 5.3.2 Fungsi dengan parameter lebih dari satu

5.4 Fungsi yang Mengembalikan Nilai


Pada contoh di atas, kita memberikan nilai masukan ke dalam fungsi berupa
integer lalu di dalamnya dilakukan operasi penjumlahan.
void add(int a, int b){

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

}
36

Fungsi ini tidak akan mengembalikan apa-apa, karena tipe data yang
diberikan pada nilai kembalian adalah void. Terkadang fungsi harus
mengembalikan sebuah nilai agar dapat diproses di tahap berikutnya. Kita bisa
menggunakan kata kunci return untuk mengembalikan nilai dari fungsi.
Contoh:
int add(int a, int b){

return a+b;

Maka fungsi add() akan mengembalikan nilai berupa integer dari hasil
penjumlahan nilai a dan b. Mari kita coba contoh yang lain. Silahkan buat program
baru bernama fungsi_bagi.c, kemudian isi dengan kode berikut:
#include <stdio.h>

float bagi(int a, int b){

float hasil = (float)a / (float)b;

return hasil;

void main(){

printf("Hasil 5/2: %.2f\n", bagi(5, 2));

Hasilnya:

Gambar 5.4.1 Hasil program fungsi yang mengembalikan nilai


37

5.5. Fungsi Rekursif pada C


Fungsi rekursif adalah fungsi yang memanggil dirinya sendiri. Maksudnya,
jika biasanya kita memanggil fungsi pada fungsi main atau fungsi yang lainnya,
namun, pada fungsi rekursif fungsi itu akan memanggil dirinya sendiri di dalam
tubuh fungsi.
Coba perhatikan contoh berikut:
#include <stdio.h>

int sum(int n);

void main(){

int number, result;

printf("Enter a positive integer: ");

scanf("%d", &number);

result = sum(number);

printf("sum = %d", result);

int sum(int num){

if (num!=0)

return num + sum(num-1); // fungsi sum() memanggil dirinya


sendiri

else

return num;

}
38

Hasilnya:

Gambar 5.5.1. Hasil program rekursif pada C


Mengapa hasilnya bisa 21? Karena kita menginputkan nilai 6, maka akan
sama dengan:
1 + 2 + 3 + 4 + 5 + 6 = 21

5.6 Variabel Lokal dan Variabel Global


Variabel lokal dan variabel global akan sering kita temukan dalam pembuatan
fungsi. Variabel global adalah variabel yang bisa diakses dari semua fungsi.
Sedangkan variabel lokal adalah variabel yang hanya bisa diakses dari dalam fungsi
itu sendiri. Contoh:
#include <stdio.h>

// membuat variabel global

int nilai = 9;

void main(){

// membuat variabel lokal

int nilai = 7;

// mencetak variabel

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

}
39

Pada contoh di atas, kita membuat variabel global bernama nilai. Lalu di
dalam fungsi main(), kita membuat variabel lagi bernama nilai dengan nilai yang
berbeda. Variabel yang ada di dalam fungsi main() adalah variabel lokal. Lalu,
berapakah hasil outputnya? Jawabannya: 7

Mengapa bisa 7? Karena variabel nilai kita buat ulang di dalam fungsi main.
Sekarang coba hapus variabel lokal yang ada di dalam main, sehingga akan menjadi
seperti ini:
#include <stdio.h>

// membuat variabel global

int nilai = 9;

void main(){

// mencetak variabel

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

Maka hasil outputnya akan 9. Karena variabel yang dipakai adalah variabel global.

5.7 Pass by Value dan Pass by Reference


Pass by value dan pass by reference adalah cara untuk memberikan nilai pada
paramaeter. Biasanya kita langsung memberikan nilai kepada parameter dengan cara
seperti ini:
kali_dua(4);

Ini disebut pass by value, karena di sana kita memberikan nilai 4. Nah kalau
seperti ini:
kali_dua(&nama_variabel);

Ini disebut pass by reference, karena kita memberikan alamat memori.


Contoh:
#include <stdio.h>

void kali_dua(int *num){


40

*num = *num * 2;

void main(){

int angka = 9;

// memanggil fungsi

kali_dua(&angka);

// mencetak isi variabel

// setelah fungsi dipanggil

printf("isi variabel angka = %d\n", angka);

Hasilnya:

Gambar 5.7.1 Hasil program


Fungsi kali_dua() memiliki parameter berupa pointer, artinya kita harus
memberikan alamat memori untuk parameter ini. Pada saat pemanggilan,
fungsi kali_dua() kita isi parameternya dengan alamat memori dari variabel angka.
Maka hasilnya nilai variabel angka akan dikalikan dengan 2 berdasarkan rumus pada
fungsi yang kita berikan.
BAB VI
ARRAY

Apa yang akan kamu lakukan jika diminta untuk menyimpan banyak data di
program? Misalkan kita ingin menyimpan nama-nama teman untuk data kontak.
Mungkin saja, kita akan menyimpannya seperti ini:
char[32] namaKontak1 = "Ayu";

char[32] namaKontak2 = "Bunga";

char[32] namaKontak3 = "Cyntia";

char[32] namaKontak4 = "Deni";

char[32] namaKontak5 = "Elisa";

Hal ini boleh-boleh saja. Akan tetapi, masalahnya:


“Gimana nanti kalau ada banyak sekali data, pasti capek bikin variabel terus?”
Karena itu, kita membutuhkan Array. Apa itu Array, dan bagaimana cara
menggunakannya? Mari kita bahas.

6.1 Apa itu Array?


Array merupakan struktur data yang digunakan untuk menyimpan
sekumpulan data dalam satu tempat. Setiap data dalam Array memiliki indeks,
sehingga kita akan mudah memprosesnya.

Gambar 6.1.1 Array diibaratkan seperti penyimpanan data

Indeks array selalu dimulai dari angka nol (0). Pada teori struktur data, ukuran
array akan bergantung dari banyaknya data yang ditampung di dalamnya.
42

6.2 Cara Membuat Array pada C


Pada pemrograman C, array dapat kita buat dengan cara seperti ini.
// membuat array kosong dengan tipe data integer dan panjang 10

int nama_array[10];

// membuat array dengan langsung diisi

int nama_arr[3] = {0, 3, 2}

Cara membuat array hampir sama seperti cara membuat variabel biasa.
Bedanya, pada array kita harus menentukan panjangnya.

Gambar 6.2.1 Cara Membuat Array

6.3 Cara Mengambil Data dari Array


Seperti yang sudah kita kethaui. Array akan menyimpan sekumpulan data dan
memberinya nomer indeks agar mudah diakses. Indeks array selalu dimulai dari
nol 0. Misalkan kita punya array seperti ini:
char huruf[5] = {'a', 'b', 'c', 'd', 'e'};

Bagaimana cara mengambil huruf c? Jawabannya:


huruf[2];
43

Mengapa bukan huruf[3]? Ingat: indeks array selalu dimulai dari nol. Biar
lebih jelas, mari kita coba dalam program:
#include <stdio.h>

void main(){

char huruf[5] = {'a', 'b', 'c', 'd', 'e'};

printf("Huruf: %c\n", huruf[2]);

Hasilnya:

Gambar 6.3.1 Hasil program mengambil data Array

6.4 Mengisi Ulang Data pada Array


Data pada array dapat kita isi ulang dengan cara seperti ini:
huruf[2] = 'z';

Maka isi array huruf pada indeks ke-2 akan bernilai 'z'. Kalau tidak percaya,
kamu bisa coba buktikan sendiri.
#include <stdio.h>

void main(){

// isi awal array


44

char huruf[5] = {'a', 'b', 'c', 'd', 'e'};

// mengubah isi array

huruf[2] = 'z';

// mencetak isi array

printf("Huruf: %c\n", huruf[2]);

Hasil outputnya:
Huruf: z

Contoh lain:
#include <stdio.h>

void main(){

// membuat array kosong

int nilai[5];

// mengisi array

nilai[0] = 32;

nilai[1] = 42;

nilai[2] = 76;

nilai[3] = 31;

nilai[4] = 57;

// mencetak isi array

printf("Nilai ke-1: %d\n", nilai[0]);

printf("Nilai ke-2: %d\n", nilai[1]);


45

printf("Nilai ke-3: %d\n", nilai[2]);

printf("Nilai ke-4: %d\n", nilai[3]);

printf("Nilai ke-5: %d\n", nilai[4]);

Hasilnya:

Gambar 6.4. hasil program mengisi ulang data array

6.5 Menggunakan Perulangan dan Array


Pada contoh di atas, kita menggunakan perintah printf() secara berulang
untuk mencetak semua isi array.
printf("Nilai ke-1: %d\n", nilai[0]);
printf("Nilai ke-2: %d\n", nilai[1]);
printf("Nilai ke-3: %d\n", nilai[2]);
printf("Nilai ke-4: %d\n", nilai[3]);
printf("Nilai ke-5: %d\n", nilai[4]);
Kalau isi array-nya ada ribuan, apa kamu akan sanggup menulis ini berulang-
ulang? Tentu saja tidak! Karena itu, kita bisa memanfaatkan perulangan untuk
mencetaknya. Contoh:
#include <stdio.h>

void main(){
// membuat array kosong
int nilai[5];
46

// mengisi array
nilai[0] = 32;
nilai[1] = 42;
nilai[2] = 76;
nilai[3] = 31;
nilai[4] = 57;

// mencetak isi array dengan perulangan


for(int i; i < 5; i++){
printf("Nilai ke-1: %d\n", nilai[i]);
}
}

Hasilnya:

Gambar 6.5.1. Hasil program perulangan pada array


Jauh lebih sederhana ‘kan. Tapi ada yang masih kurang. Pada perulangan di
atas kita memberikan batas maksimal secara manual, yaitu: i < 5. Nilai 5 seharusnya
diganti dengan ukuran atau jumlah isi array. Sehingga akan menjadi seperti ini:
int length = sizeof(nilai) / sizeof(*nilai);
for (int i = 0; i < length; i++){
printf("Nilai ke-1: %d\n", nilai[i]);
}

6.6 Array Multi Dimensi


Array yang kita buat pada contoh-contoh program di atas adalah array satu
dimensi. Array bisa dibuat dua dimensi bahkan lebih. Array multidimensi biasanya
digunakan untuk membuat matriks. Contoh array dua dimensi:
47

int matriks[3][3] = {
{1, 3, 5},
{5, 3, 1},
{6, 2, 3}
};

Array dua dimensi biasanya digunakan untuk membuat matriks. Lalu


bagaimana cara mengambil data dari array dua dimensi? Bgini caranya:
matriks[1][2];

Contoh program:
#include <stdio.h>

void main(){
int matriks[3][3] = {
{1, 3, 5},
{5, 3, 1},
{6, 2, 3}
};

printf("Isi Data pada indeks ke-(1,0): %d\n", matriks[1][0]);


}

Hasilnya:

Gambar 6.6.1 Hasil program array multidimensi


BAB VII
PENUTUP

7.1 Kesimpulan
Bahasa C adalah sebuah bahasa dasar tingkat menengah yang sifatnya
kompleks dan membangun logika atau algoritma. Bahasa C bersifat portable, yaitu
dengan sedikit atau tanpa perubahan, suatu program yang dirancang atau ditulis
dengan bahasa C dapat dijalankan pada komputer lain.
Struktur dasar bahasa pemrograman C yang wajib dipahami adalah dibagi
menjadi dua bagian utama, yaitu:
1. Bagian Include;
2. Blok Fungsi Main.
Pada program C, #include berfungsi untuk mengimpor fungsi-fungsi k rumah
yang sudah didefinisikan pada header file. Header file adalah file yang berisi definisi
fungsi yang sudah dibuat. Tujuannya agar bisa digunakan pada program C yang
lainnya. File ini berekstensi .h, contoh: stdio.h.
Fungsi main() adalah fungsi utama dalam program. Fungsi ini akan dieksekusi
pertama kali saat program dijalankan. Karena itu, kita harus menuliskan logika
program di dalam fungsi ini.

7.2 Saran

Untuk menciptakan suatu struktur bahasa pemrograman yang baik harus memenuhi
beberapa kriteria yaitu :

1. Suatu bahasa pemrograman ditulis secara urut dan sesuai dengan prosedurnya.
2. Dalam penulisan struktur bahasa pemrograman sebaiknya perlu
memperhatikan tipe-tipe data yang akan digunakan dalam pembuatan program.
3. Pada saat bagian deklarasi sebaiknya perlu memperhatikan syarat-syarat atau
kententuan-ketentuan dalam suatu bahasa pemrograman.
DAFTAR PUSTAKA

https://ariana.web.ugm.ac.id/2018/07/10/seri-tutorial-bahasa-c-bagian-1-
mengenal-dan-memulai-membuat-program-sederhana-dalam-bahasa-c/
https://www.petanikode.com/c-perulangan/
http://25ieundip2012ti.blogspot.com/2012/11/makalah-bahasa-
pemrograman.html
https://www2.slideshare.net/mandez/bahasa-c-29426976
http://rogayah.staff.gunadarma.ac.id/Downloads/files/38669/FUNGSI__DAL
AM__BAHASA_C.pdf

Anda mungkin juga menyukai