SlideShare ist ein Scribd-Unternehmen logo
1 von 47
Downloaden Sie, um offline zu lesen
BAB III VARIABEL, IDENTIFIER DAN TIPE DATA
Pertemuan Minggu III
Alokasi Waktu

:

2 Jam Pertemuan

Standar Kompetensi

:

Mahasiswa dapat membuat program komputer sederhana dengan menggunakan bahasa
C

Kompetensi Dasar

:

Memahami penamaan variabel dan macam-macam tipe data, operator dalam bahasa C

Indikator

:

Mahasiswa dapat memahami konsep variabel dalam bahasa C.
Mahasiswa memahami berbagai macam tipe data dalam bahasa C

1.1. IDENTIFIER
Semua angka dan huruf yang digunakan dalam program komputer disimpan didalam unit memori. Secara
konseptual, lokasi memori didalam unit memori dianalogikan seperti kamar-kamar yang terdapat dalam
sebuah hotel. Layaknya kamar hotel setiap memori dalam unit memori memiliki nomor kamar yang
berbeda antara satu dengan yang lain. Sebelum muculnya bahasa pemrograman tingkat tinggi seperti C,
lokasi memori secara individu di ketahui dari alamatnya, sebagai contoh untuk menyimpan nilai integer
10 dan 100 dalam unit memori di simpan dalam alamat memori 1652 dan 2548. dari ilustrasi diatas maka
muncul suatu algoritma untuk menginisialiasai nilai tersebut di dalam unit memori sebagai berikut :
Letakkan nilai 100 pada lokasi memori 2548
Letakkan nilai 10 pada lokasi memori 1652
10

10

Gambar 3.1
Penempatan Nilai pada
Memori Komputer

165

254

Dalam bahasa tingkat tinggi penempatan suatu nilai dalam alamat memori tertentu diwakili oleh sebuah
nama yang diambil dari bahasa alami. Penamaan simbol yang mewakili alamat memori disebut sebagai
variabel. Menganalogikan dengan sebuah komplek perumahan, konsep variabel ini serupa dengan
pemasangan papan nama pemiliki rumah nomor sekian. Dalam kehidupan sehari-hari penunjukan sebuah
rumah akan lebih mudah dengan menunjuk nama pemiliknya misalnya rumah Bapak Hadi atau rumah
Bapak Eko dari pada menyebutkan nomor rumahnya misalnya rumah nomor 365A atau rumah noor
101B. Dengan menggunakan variabel ini maka proses penyimpanan nilai 10 dan 100 di dalam unit
memori menjadi sebagai berikut:
N1 = 10
N2 = 100

1
N1 dan N2 adalah nama variabel yang diberikan oleh programer untuk menyinpan nilai 10 dan 100 ke
dalam memori yang lokasinya berada pada 1652 dan 2548. Dengan konsep penamaan ini maka seorang
programer tidak perlu tahu dimana tepatnya nilai-nilai tersebut disimpan, seorang programer hanya perlu
untuk mengetahui tentang nama-nama yang sudah di deklarasikan untuk digunakan pada saat
pengembangan program selanjutnya.
Analogi dalam bahasa matematika seperti x = y + z. x, y, dan z adalah nama-nama yang diberikan untuk
mewakili nilai tertentu yang diwakilinya. Identifier (Pengenal) merupakan nama yang biasa digunakan
untuk suatu peubah (variable), konstanta, fungsi, atau obyek lain yang didefinisikan oleh pemrogram.
Ketika menggunakan identifier dalam program, perlu identifikasi awal untuk masing-masing variabel
tersebut. Aturan yang berlaku untuk penamaan identifier adalah:
 Pengenal harus diawali dengan huruf (A .. Z, a .. z) atau karakter garis bawah ( _ ).
 Selanjutnya dapat berupa huruf, angka (0 .. 9), karakter garis bawah, atau simbol seperti dolar
($), %, dll.
 Pengenal tidak boleh mengandung spasi
 Panjang pengenal boleh terdiri lebih dari 32 karakter, akan tetapi hanya 32 karakter pertama
yang dianggap berarti.
 Contoh: Jumlah
jumlah
nilai2
total_per_bulan
harga_jual$
Karakter garis-bawah biasa digunakan untuk memudahkan pembacaan terhadap suatu pengenal, terutama
yang terdiri lebih dari satu kata, karena nama suatu pengenal tidak boleh dipisahkan spasi. Untuk
menghindari kesalahan, pengenal tidak boleh menggunakan nama yang tergolong sebagai kata kunci
(seperti main), dan sebaiknya tidak menggunakan pengenal yang digunakan untuk nama fungsi,
konstanta, variabel atau obyek lain yang digunakan oleh pustaka-pustaka bahasa pemrograman. Contoh
idenfier yang dijadaikan pustaka oleh bahasa pemrograman C.
Tabel 3.1 Contoh pustaka C
No

Bahasa C

1

Case

2

Enum

3

Class

4

Const

5

Catch

1.2. PEUBAH (VARIABLE)
Peubah atau variabel dalam program digunakan untuk menyimpan suatu nilai, dan nilai yang ada padanya
dapat diubah-ubah selama eksekusi program berlangsung. Peubah yang akan digunakan dalam program
harus dideklarasikan terlebih dahulu. Pengertian deklarasi disini berarti memesan memori dan
menentukan jenis data yang dapat disimpan di dalamnya. Bentuk umum pendeklarasian suatu peubah
adalah:
tipe nama_peubah;

2
Pada pendeklarasian peubah, daftar-peubah dapat berupa sebuah peubah atau beberapa peubah yang
dipisahkan dengan tanda koma, contoh:
int jumlah;
float harga_per_satuan, total_harga;
Pernyataan deklarasi yang pertama menyatakan bahwa jumlah adalah nama peubah/vaiabel dan tipe dari
perubah terseut adaah int (integer = digunakan untuk menyimpan bilangan bulat), sedangkan pernyataan
kedua menyatakan bahwa harga_per_satuan dan total_harga adalah nama peubah yang bertipe float
(untuk menyimpan bilangan pecahan), tanda koma (,) diperuntukan sebagai pemisah anatar peubah.
Pendeklarasian peubah dalam baris ke dua di atas dapat dideklarasikan menjadi sebagai berikut:
float harga_per_satuan;
float total_harga;

1.3. TIPE DATA
Pada umumnya, program komputer bekerja dengan memanipulasi obyek (data di dalam memori. Obyek
akan diprogram bermacam-macam jenis atau tipenya, misalnya nilai numeric, karakter, string, dan
rekaman (record). Suatu tipe menyatakan pola penyajian data dalam komputer. tipe data dikelompokan
menjadi dua macam. Tipe dasar dan tipe bentukan. Tipe dasar adalah tipe yang dapat langsung dipakai,
sedangkan tipe bentukan dibentuk dari tipe dasar atau dari tipe bentukan lain yang sudah didefinisikan.
(Munir:2001)

1.3.1. Tipe Dasar
Dalam dunia pemrograman yang termasuk tipe dasar adalah: bilangan logika, bilangan bulat, bilangan riil,
dan karakter.
Bilangan Logika
Bilangan logika dinyatakan dalam bentuk angka biner yaitu 1 dan 0. bilangan ini kemudian diterjemahkan
kedalam bahasa pemrograman 1 jika pernyataan tersebut bernilai benar (true) dan 0 jika pernyataan
tersebut bernilai salah (false). Dalam pemrograman tipe untuk menyatakan bilangan logika dinyatakan
dengan boolean. Jika a dan b adalah suatu peubah (variabel) yang bertipe boolean, maka hasil operasi a
dan b dengan operator boolean tersebut diberikan oleh tabel kebenaran berikut
Tabel 3.2. Hasil Operasil dari Tipe Data Bolean
No

A

B

A and b

A or b

1

True

True

True

True

2

False

True

False

True

3

True

False

False

True

4

False

False

False

False

Bilangan Bulat
Bilangan bulat adalah bilangan yang tidak mengandung pecahan desimal, seperti 1, 2, 5, 78, 445, -87, dan
sebagainya. tipe untuk menyatakan bilangan bulat dinyatakan dengan integer (int). Rentang nilai tipe
data integer adalah dari minus tak hingga sampai plus tak hingga. Akan tetapi dalam implementasinya
tipe ini mempunyai keterbatasan digit bilangan. Ketika suatu data diimplementasikan bertipe integer
maka data tersebut tidak boleh mengandung bilangan pecahan.

3
Pada kompilator Turbo Pascal tipe integer dapat direpresentasian ke dalam 4 macam tipe, yaitu byte,
shortint, word, integer, dan longint.
Tabel 3.3. Daftar variasi tipe bilangan bulat (integer)
No

Tipe

Rentang Nilai

Format

1

Byte

0 . . . 255

Unsigned 8 bit

2

Shortint

-128 . . . 127

Signed 8 bit

3

Word

0 . . . 65535

Unsigned 16 bit

4

Integer

-23768 . . . 32767

Signed 16 bit

5

Longint

-2147483648 . . . 2147483647

Signed 32 bit

Sebagai contoh, dua buah peubah X dan Y masing-masing didefinisikan bertipe byte dan integer dalam
Pascal.
Var

X : byte
Y : integer

Sebagai konsekuensi pendifinisian tipe X dan Y, maka peubah X tidak dapat dioperasikan untuk nilainilai diatas 255 atau dibawah 0. begitu juga peubah Y tidak dapat bekerja pada nilai-nilai diatas 32767.
Bilangan Riil
Bilangan riil adalah bilangan yang mengandung nlai pecahan, misalnya 3,56 , 100,6 , 100 E-6 dan
sebagainya. Tipe untuk menyatakan bilangan riil dinyatakan dengan real untuk bahasa pascal dan float
untuk bahasa C. Sebagai contoh pada kompilator turbo pascal bilangan riil direpresentasikan dengan 4
macam tipe yaitu real, single, double, dan extended.
Tabel 3.4. Daftar variasi tipe bilangan floating point (float)
No

Tipe

1

Real

2

Single

3

Double

4

Extended

Rentang Nilai

Format
18

6 byte

1.5 x 10-45 . . . 3.4 x 1038

4 byte

2.9 x 10

5.0 x 10

-39

. . . 1.7 x 10

-324

308

. . . 1.7 x 10

3.4 x 10-4932... 1.1 x 104932

8 byte
10 byte

Karakter
Karakter adalah huruf alfabet, tanda baca, simbol, dan angka. Tipe untuk menyatakan karakter dengan
char. Tetapan untuk data bertipe karakter harus diapit oleh tanda petik tunggal contoh, ’h’, ’Y’, dan
sebagainya, ’9’ adalah karakter akan tetapi 9 adalah bertipe integer atau riil.
1.3.2. Tipe Bentukan
Tipe bentukan adalah tipe yang didefinisikan sendiri oleh programmer. Tipe bentukan disusun oleh satu
oleh lebih tipe dasar. Tipe bentukan diantaranya String dan Rekaman (record)
String
String adalah deretan karakter dengan panjang deretan yang tertentu jumlahnya. Contohnya ’Jurusan
Teknik Elektro’, ’G 2345 HB’. Tipe untuk menyatakan string adalah string atau char [ .. .].

4
Rekaman
Rekaman disusun oleh satu atau lebih field. Tiap field menyimpan data dari tipe dasar tertentu atau dari
tipe bentukan lain yang sudah didefinisikan sebelumnya. Nama rekaman idefinisika oleh programmer
sendiri. Tipe untuk menyatakan rekaman adalah record atau typedef.
Contoh pendefinisian rekaman dalam bahasa pascal
Type matakuliah : record
< Kode_MK : string,
Nama_MK : string,
Nilai
: char
>
Contoh pendefinisian rekaman dalam bahasa C
Typedef struct {
int NIM;
char nama[25];
int Nilai;
} Mahasiswa;
Penggunaan berbagai macam tipe data
Contoh 3.1
#include <stdio.h>
#include <conio.h>
main( )
{
int a = 3;
int b = 3;
int c = a + b;
printf (“Hasil dari penjumlahan antara a dan b adalah : %d”,c);
}
Pada program 3.1 semua data direpresentasikan dengan tipe integer. Variable yang bertipe integer hanya dapat menampung
data dalam bentuk bilangan bulat, jika variable tersebut di berikan nilai 3.5 maka nilai decimal dibelangan angka 3 yaitu 0.5 tidak
akan pernah diperhitungkan. Coba saja???.
Contoh 3.2
#include <stdio.h>
#include <conio.h>
main( )
{
float n1 = 2.5;
int n2 = 2;
float n3 = n1 * n2;
printf (“Hasil dari perkalian antara n1 dan n2 adalah : %f”,n3);
}
Pada program 3.2 variabel – variablenya menggunakan tipe data integer dan float. N1 bertipe float, dengan tipe data ini maka
varibel tersebut dapat menampung nilai decimal. N3 juga bernilai float, dengan memberikan tipe data float pada n3 maka hasil
perkalian antara n1 dan n2 dapat menghasilkan nilai yang tepat, jika n3 diberi tipe integer kira-kira apa yang dihasilkan???.
Contoh 3.3
#include <stdio.h>
#include <conio.h>
main( )
{

5
printf(“Nama siswa : %sn, “Feddy”);
printf(“NIM : %dn”, 10029);
printf(“Nilai : %f Predikat : %cn”, 86.6, ‘A’);
}
Program 3.3 mendemonstrasikan penggunaan berbagai macam tipe data yang digunakan secara bersamaan dalam sebuah
program, perlu dijadikan perhatian khusus setiap tipe data mempunyai symbol masing-masing dimana data tersebut akan
ditampilkan sesuai dengan tipe datanya.
Int (integer)  %d
Float (floating point)  %f
Char (character)  %c
dsb……..

1.4. OPERATOR DAN FUNGSI MATEMATIKA
Mengenal operator dan fungsi matematika dalam memahami konsep pemrograman terstruktur merupakan
hal mendasar dalam memahami konsep pemrograman secara keseluruhan. Beberapa buku pemrograman
akan mengawali contoh programnya dengan membuat program Hello World atau dengan program
aritmatika sederhana. Berikut daftar operator aritmatika yang digunakan dalam pemrograman bahasa C
Tabel 3.5. Simbol Operator Aritmatika dalam C
Simbol

Arti

+

Penambahan

-

Pengurangan

*

Perkalian

/

Pembagian

%

Sisa Hasil Bagi
(Modulus)

++

Increment

--

Decrement

Beberapa operasi matematika yang agak komplek oleh C dibuatkan beberapa fungsi sehingga pengguna
tinggal memanfaatkan fungsi tersebut dalam pemerograman, beberapa fungsi matematika yang disediakan
oleh C :
Tabel 3.6 Fungsi matematika yang disediakan C
Fungsi

Arti

Pow()

Fungsi untuk kuadrat

Abs()

Fungsi untuk mendapatkan nilai absolut

Log()

Fungsi untuk mendapatkan nilai logaritma

Sqrt()

Fungsi untuk mendapatkan nilai akar kuadrat

Sin()

Fungsi untuk mendapatkan nilai Sinus

Cos()

Fungsi untuk mendapatkan nilai Cosinus

6
Fungsi untuk mendapatkan nilai tangen

Tan()

Bentuk operator lain yang dikenal dalam pemrograman C adalah operator relasional dan operator logika.
Operator relasional melambangkan hubungan antara dua entitas, Entitas tersebut bisa berupa variabel,
konstanta maupun fungsi, Nilai dari kedua hubungan tersebut hanya bernilai dua yaitu TRUE atau
FALSE. Adapun Operator operasional dalam pemrograman berbentuk sebagai berikut :
Tabel 3.7. Simbol Operator Relasional yang digunakan dalam C
Operator

Arti

>

Lebih Besar

>=

Lebih Besar atau Sama Dengan

<

Lebih Kecil

<=

Lebih Kecil atau Sama Dengan

==

Sama Dengan

!=

Tidak Sama Dengan

Operator tersebut akan mempunyai dua nilai True atau False jika digunakan dalam operasi matematika,
sebagai contoh 3 > 1 : True , 5 < 8 : True , 3==5 : False , 3!=5 : True
Operator logika juga merupakan operator yang menyatakan kondisi True atau False dengan kondisi logika
tertentu. Adapun operator lagika dalam pemrograman berbentuk sebagai berikut :
Tabel 3.8. Simbol Operator Logika dalam C
Operator

Arti

&&

Logika AND

||

Logika OR

!

Logika NOT

Pengayaan
Latihan 3.1
#include <stdio.h>
#include <conio.h>
main()
{
int roti = 5;
int kalori = 125; /* Calories per cookie */
int total_dimakan = 0; /* Total cookies eaten */
int dimakan = 2; /* Number to be eaten */
roti = roti - dimakan; /* Subtract number eaten from cookies */
total_dimakan = total_dimakan + dimakan;
printf("nSay telah memakan %d roti. Terdapat %d roti yang tersisa",dimakan, roti);
dimakan = 3; /* New value for cookies to be eaten */
roti = roti - dimakan; /* Subtract number eaten from cookies */
total_dimakan = total_dimakan + dimakan;
printf("nSaya telah memakan %d. Sekarang terdapat %d roti yang tersisan",dimakan, roti);
printf("nTotal energy yang dikonsusi adalah %d calories.n",total_dimakan*kalori);

7
}
Latihan 3.2
#include <stdio.h>
#include <conio.h>
main( )
{
/* Menghitung volume silender */
float radius, height, volume;
radius 2.5;
height 16.0;
volume 3.1416 * radius * radius * height;
printf("n Volume silender tersebut adalah %f", volume);
getch();
}

Latihan 3.3
#include <stdio.h>
main(
{
int sum;
sum = 25;
printf("nThe number stored in sum is %d.",sum);
sum = sum + 10;
printf (" nThe number now stored in sum is %d.", sum) ;
getch();
}
Latihan 3.4
#include <stdio.h>
#include <conio.h>
main( )
{
clrscr();
printf(“ 3 < 5 bernilai : %dn”, 3 < 5);
printf(“15 >= 3 * 5 bernilai : %dn”, 15 >= 3 * 5);
printf(“ 8 = = 7bernilai : %dn”, 8= =7);
printf(“11<=5+4 bernilai : %dn”, 11<=5+4);
getch();
}
Latihan 3.5
#include <stdio.h>
#include <conio.h>
main( )
{
int x, y;
x = 5;
y = 2;
printf("%d ", x/y); /* akan menampilkan angka 2 */
printf(''%d ", x%y); /* akan menampilkan angka 1, 1 adalah sisa dari hasil bagi*/
}

8
Latihan 3.6
#include <stdio.h>
#include <conio.h>
main()
{
puts("LOGIKA AND");
printf("hasil AND dari 1 AND 1 = %dn",1 && 1);
printf("hasil AND dari 1 AND 0 = %dn",1 && 0);
printf("hasil AND dari 0 AND 1 = %dn",0 && 1);
printf("hasil AND dari 0 AND 0 = %dn",0 && 0);
printf("nn");
puts("LOGIKA OR");
printf("hasil OR dari 1 OR 1 = %dn",1 || 1);
printf("hasil OR dari 1 OR 0 = %dn",1 || 0);
printf("hasil OR dari 0 OR 1 = %dn",0 || 1);
printf("hasil OR dari 0 OR 0 = %dn",0 || 0);
getch();
}
Latihan 3.7
#include <stdio.h>
#include <conio.h>
main(void)
{
float x, y, kuadrat, akar;
x = 10;
y = 9;
kuadrat=pow(x);
akar=sqrt(y);
printf(“Hasil kuadrat dari 10 = %f”,kuadrat);
printf(“Hasil akar kuadrat dari 9 = %f,akar);
}

9
BAB IV PROSES PEMILIHAN DALAM PEMROGRAMAN
Pertemuan Minggu IV
Alokasi Waktu

:

4 Jam Pertemuan

Standar Kompetensi

:

Mahasiswa dapat membuat program komputer sederhana dengan menggunakan bahasa
C

Kompetensi Dasar

:

Memahami program komputer yang mengandung unsur Pemilihan

Indikator

:

Mahasiswa dapat memahami struktur pemrograman if, if else, nested if, swith case.

:

Mahasiswa dapat membuat program dengan melibatkan struktur pemilihan

1.1. STRUKTUR IF - ELSE
Penyeleksian kondisi digunakan untuk mengarahkan perjalanan suatu proses. Penyeleksian kondisi dapat
diibaratkan sebagai katup atau kran yang mengatur jalannya air. Bila katup terbuka maka air akan
mengalir dan sebaliknya bila katup tertutup air tidak akan mengalir atau akan mengalir melalui tempat
lain. Fungsi penyeleksian kondisi penting artinya dalam penyusunan bahasa C, terutama untuk program
yang kompleks (Achmad Solichin)
C menyediakan kata kunci if else untuk menyeleksi kondisi pernyataan, jika pernyataan tersebut bernilai
benar atau sesuai dengan kondisi yang dinginkan maka pernyataan tersebut akan dijalankan. Sebaliknya
jika penyataan yang di periksa tidak sesuai dengan kondisi maka pernyataan tersebut tidak dijalankan atau
menjalankan penyataan yang lain.
Hari ini
Hujan?

Gambar 4.1
Ya

Diagram Alir Struktur Pemilihan
Suatu Kondisi

Tidak

Pernyataan 1

Pernyataan 2

1. Pernyataan 1 : Membawa Payung
2. Pernyataan 2 : Berangkat Sekolah
Pada gambar di atas peryataan tersbut mengisyaratkan bahwa
Jika hari ini Hujan maka, Saya akan membawa payung dan akan berangkat sekolah
Jika hari ini tidak hujan maka saya berangkat sekolah.
Pernyataan tersebut mengisyaratkan ada sebuah kondisi yang harus di periksa sebelum melakukan
aktivitas selanjutnya. Contoh lain dalam kehidupan sehari-hari dimana kita diharuskan memeriksa suatu
kondisi tertentu unutk membuat keputusan selanjutnya.
1. Jika Andi mendapatkan nilai >= 70 maka Andi Lulus
1
2. Jika Andi mendapatkan nilai < 70 maka Andi tidak lulus
Pernyataan tersebut di atas jika diterjemahkan dalam algoritma pemrograman menjadi
If Nilai >= 70 --------- >(Ekspresi)
Lulus
---------- >(Pernyataan 1)
Else
Tidak Lulus ---- >(Pernyataan 2)

Dalam hal ini ekspresi yang pertama yaitu Apakah Nilai yang di periksa >= 70, jika Nilai yang di periksa
semisal 80 maka pernyataan tersebut benar adanya maka pernyataan LULUS akan dieksekusi. Jika nilai
yang diperiksa semisal 65 maka pernyataan Tidak Lulus akan dieksekusi.
Pada contoh diatas blok program dari if else hanya di isi oleh masing-masing satu peryataan. Berikut
merupakan struktur if else dengan pernyataan yang lebih dari satu
If (Kondisi Pemilihan) --------- > (Ekspresi)
{
(Blok Pernyataan 1)
}
Else
{
(Blok Pernyataan 2)
}

Berikut adalah contoh algortima dengan melibatkan lebih dari satu pernyataan untuk tiap bloknya
If Nilai >= 85 --------- >(Ekspresi)
{
Lulus
------ > (Blok Pernyataan 1)
Dengan predikat sangat memuaskan
}
Else
{
Tidak Lulus
------ > (Blok Pernyataan 2)
Mengulang Semester Depan
}

Program yang melibatkan suatu kondisi pemilihan juga dapat dibuat secara bertingkat, pemeriksaan
kondisi bertingkat juga dapat dilakukan dengan melibatkan operator logika seperti operator AND (&&)
dan operator OR ( | | ), sebagai contoh perhatikan pernyataan dibawah ini
Jika Mahasiwa mempunyai nilai lebih dari atau sama dengan 85
Maka Mahasiswa tersebut mendapat nilai A
Jika Mahasiswa mempunyai nilai antara 70 sampai 85
Maka Mahasiswa tersebut mendapat nilai B
Jika Mahasiswa mempunyai nilai antara 60 sampai 70
Maka Mahasiswa tersebut mendapat nilai C

Jika diperhatikan ada beberapa rentang nilai seperti 70 sampai 85, 60 sampai 70 yang harus di periksa
untuk mendapatkan kesimpulan yang benar, berikut adalah algoritma untuk mengevaluasi pernyataan
diatas
if (nilai >= 85 )
{
Nilai A
}
if else ( (nilai >= 70 ) && (nilai < 85) )
{
Nilai B

2
}
if else ( (nilai >= 60 ) && (nilai < 07) )
{
Nilai C
}

Contoh 4.1
#include <stdio.h>
#include <conio.h>
main()
{
int nilai;
printf("Masukan Nilai Anda : ");
scanf("%d",&nilai);
if (nilai < 70)
printf("Tidak Lulus");
else
printf("Lulus");
getch();
}

Pada contoh 4.1 memperlihatkan suatu pemilihan kondisi sederhana, yaitu hanya tersedia dua pilihan “Jika
tidak ini maka itu”. Program pada contoh 4.1 akan menguji angka yang dimasukan oleh pengguna, masukan
tersebut ditampung di dalam variable nilai. Pada tahap selanjutnya program akan menguji variable nilai,
jika nilai mempunyai harga dibawah 70 maka dilayar computer akan muncul pernyataan “tidak lulus” akan
tetapi jika anda memasukan angka diatas 70 maka dilayar computer akan muncul pernyataan “lulus”.
Contoh 4.2
#include <stdio.h>
#include <conio.h>
main()
{
int hari;
printf("Masukan Angka Untuk Mewakili Hari : ");
scanf("%d",&hari);
if (hari==1)
{
printf("Senin");
}
if (hari==2)
{
printf("Selasa");
}
if (hari==3)
{
printf("Rabu");

3
}
if (hari==4)
{
printf("Kamis");
}
getch();
}

Pada contoh 4.2 program menyatakan struktur setiap if yang mempunyai blok program, setiap struktur if
dipisahkan oleh pasangan tanda kurung kurawal. Program ini akan menyeleksi setiap angka yang
pengguna masukan, ketika angka yang dimasukan sesuai dengan salah satu kondisi yang ada maka tulisan
Senin, Selasa, dst akan ditampilkan pada layar computer.

1.2. STRUKTUR SWITCH - CASE
Bahasa C juga menyediakan keyword Switch – Case untuk menyederhanakan pemrograman if else.
Keyword ini menjadikan struktur pemrograman if – else menjadi lebih mudah dalam melakukan
pemilihan suatu kondisi. Berikut adalah bentuk umum dari sikntaks switch case
switch (menu)
{
case 1:
Anda Memilih menu Pertama
Break
case 2 :
Anda Memilih menu kedua
break
case 3 :
Anda Memilih menu ketiga
break
default :
Pilihan Anda Salah
}

Pada pemrograman diatas keyword Switch Case mempunyai struktur pemilihan yang berpedoman pada
jumlah case yang menjadi pemilihan. Berikut adalah contoh penggunaan dari switch case untuk
melakukan proses pemilihan
Contoh 4.3
#include <stdio.h>
#include <conio.h>
main()
{
int menu;
clrscr();
puts("Menu Menghitung Luas Bangunn");
puts("1. Luas Bangun Persegi Panjangn");
puts("2. Luas Bangun Lingkarann");
puts("3. Luas Bangun Segitigan");
puts("4. Keluar Program.....n");
printf("Masukan Angka (1-3) untuk memilih menu : ");
scanf("%d", &menu);

4
switch (menu)
{
case 1:
printf("Program untuk
break;
case 2:
printf("Program untuk
break;
case 3:
printf("Program untuk
break;
case 4:
printf("Keluar Program");
break;

menghitung luas Persegi Panjang");
menghitung luas Lingkaran");
menghitung luas Lingkaran");

}
getch();
}

Program yang melibatkan suatu kondisi pemilihan juga dapat dibuat secara bertingkat atau yang lebih
dikenal dengan istilah if else bersarang (nested). Gambar dibwah ini menunjukan diagram alir proses
pengeksekusian blok pernyataan yang menggunakan if else bersarang.
if(i)
{
if(j) Pernyataan_1();
if(k) Pernyataan_2();
else Pernyataan_3(); /* Kondisi else yang berhubungan dengan if(k) */
}
else Pernyataan_4(); /* associated with if(i) */

Pemilihan_1?
Tidak
Ya
Pernyataan 1

Gambar 4.2
Diagram Alir Struktur Pemilihan
Suatu Kondisi Bersarang

Ya
Pemilihan_2?

Pernyataan 4
Tidak

Pernyataan 3

Pernyataan 2

Diagram Alir pemilihan kondisi bersarang tersebut menunjukan bahwa suatu kondisi mula-mula akan
diperiksa pada pemilihan_1 jika bernilai benar maka pernyataan 1 akan dieksekusi, akan tetapi jika salah
pernyataan 2 yang akan dieksekusi. Jika pemeriksaan pada kondisi pemilihan 1 bernilai benar maka
kondisi tersebut juga akan diperiksa pada pemilihan 2, jika kondisi yang dipriksa bernilai benar maka

5
pernyataan 3 akan dieksekusi apabila kondisi yang diperiksa bernilai salah maka penrnyataan 4 yang akan
dieksekusi.
Contoh 4.4
#include <stdio.h>
#include <conio.h>
main()
{
int nilai=75;
if (nilai>=80)
{
printf("Lulusn");
if (nilai >=95)
{
printf("Anak Jenius");
}
else
{
printf("Anak Pandai");
}
}
else
{
printf("Belum Lulusn");
printf("Mengulang Tahun depan");
}
getch();
}

Pengayaan
Latihan 4.1
#include <stdio.h>
#include <conio.h>
main()
{
int mi, pasta, sikat, jml1, jml2, jml3, total;
float bayar;
puts("Harga Mi Instran Persatuan Rp. 800");
puts("Harga Pasta Gigi Persatuan Rp. 1000");
puts("Harga Sikat Gigi Persatuan Rp. 1500");
puts("Masukan jumlah yang barang yang ingin Anda beli");
puts("Bila tidak ingin membeli masukan angka nol (0)");
printf("Berapa jumlah Mi Instan Yang ingin Anda Beli : ");
scanf("%d",&mi);
printf("Berapa jumlah Pasta Gigi Yang ingin Anda Beli : ");
scanf("%d",&pasta);
printf("Berapa jumlah Sikat Gigi Yang ingin Anda Beli : ");
scanf("%d",&sikat);
jml1 = 800 * mi;

6
jml2 = 1000 * pasta;
jml3 = 1500 * sikat;
total = jml1 + jml2 + jml3;
if (total > 10000)
{
bayar = 0.9 * total;
printf("Total Bayar = %.0f",bayar);
}
if (mi > 5)
{
bayar = total - 800;
printf("Total Bayar = %.0f",bayar);
}
if (total > 10000) && (mi > 5)
{
bayar = (0.9 * total) - 800;
printf("Total Bayar = %.0f",bayar);
}
getch();
}
Latihan 4.2
#include <stdio.h>
#include <conio.h>
main()
{
int angka;
printf("Masukan Sembarang Angka untuk di uji: ");
scanf("%d",&angka);
if(angka%2 == 0)
{
printf("nBilangan Yang Anda Masukan Angka Genap");
if((angka/2)%2 == 0)
{
printf("nHasil Bagi Dua dari bilangan tersebut juga Genap");
}
else
{
printf("nHasil Bagi Dua dari bilangan tersebut Angka Ganjil");
}
}
else
{
printf("Bilangan Yang Anda Masukan Angka Ganjil");
}
getch();
}
Latihan 4.3

7
#include <stdio.h>
#include <conio.h>
int main(void)
{
char letter = 0; /* Stores a character */
printf("Enter an uppercase letter:"); /* Prompt for input */
scanf("%c", &letter); /* Read a character */
if(letter >= 'A') /* Is it A or greater? */
if(letter <= 'Z') /* and is it Z or lower? */
{ /* Jika yang Anda Masukan Huruf Besar */
letter = letter - 'A'+ 'a'; /* Convert from upper- to lowercase */
printf("You entered an uppercase %cn", letter);
}
else /* Jika yang Anda Masukan Huruf Kecil*/
printf("Try using the shift key, Bud! I want a capital letter.n");
getch();
}

8
BAB V PROSES PENGULANGAN DALAM PEMROGRAMAN
Pertemuan Minggu V dan VI
Alokasi Waktu

:

4 Jam Pertemuan

Standar Kompetensi

:

Mahasiswa dapat membuat program komputer sederhana dengan menggunakan bahasa
C

Kompetensi Dasar

:

Memahami program komputer yang mengandung unsur Pengulangan (looping)

Indikator

:

Mahasiswa dapat memahami struktur program bahasa C yang mengandung unsur do
while, while do, for

:

Mahasiswa dapat membuat program dengan melibatkan struktur pengulangan

Proses pengulangan pada suatu program merupakan salah satu kekuatan yang dimiliki ketika kita
mengembangan suatu program komputer. Proses pengulangan merupakan suatu proses yang dilakukan
oleh komputer secara berulang-ulang hingga kondisi yang diinginkan terpenuhi. Dalam beberapa buku
proses pengulangan diistilahkan sebagai proses looping atau kalang. Bahasa C mempunyai tiga struktur
untuk melakukan proses pengulangan yaitu struktur while do, do while, dan for.
Pernyataan 1

Periksa
Logika?

Tidak

Gambar 5.1
Diagram Alir Struktur
Pengulangan (looping)

Umum

Ya
Pernyataan 2

Tambahkan angka
1 untuk looping

Pernyataan 3

Sebelum membahas lebih jauh tentang proses looping, terlebih dahulu akan dibahas mengenai operator
decrement (--) dan operator increment (++). Operator decrement adalah operator dimana variabel yang
dirujuk akan melakukan pengurangan secara otomatis satu angka untuk seitap kali proses looping.
Operator increment adalah sebaliknya akan menambah angka satu pada variable yang dirujuk setiap kali
proses looping. Pada pemakaiannya operator ini dapat dituliskan dibelakang ataupun di depan sebuah
variabel yang dirujuk sebagai contoh
Int i;

i ++ , i-- penulisan setelah variabel
++ i , -- I penulisan sebelum variabel
1
Penerapan kedua operator diatas akan dibahas lebih lanjut dalam penggunaannya dalam proses
pengembagan program dengan melibatkan proses looping.
Tiga struktur ini mempunyai karakteristik masing-masing, untuk struktur for dan while do proses
pengulangan mengisyaratkan untuk mengevaluasi kondisi masukan terlebih dahulu kemudian baru
menjalankan pernyataan yang sesuai dengan kondisi yang terpenuhi. Berikut adalah struktur umum dari
for

1.1. LOOPING DENGAN MENGGUNAKAN STRUKTUR FOR
for (batas awal ; batas akhir ; increment/decrement)
{

}

Batas awal mengisyaratkan bahwa proses pengulangan dimulai pada angka 1, 2,atau 3, batas akhir
mengisyaratkan batas atas dari suatu kondisi dimana proses pengulangan harus berhenti.
increment/decrement adalah proses untuk melakukan penambahan/pengurangan satu demi satu saat
melakukan proses pengulangan. Berikut adalah contoh penggunaan stuktur for dalam pemrograman
Contoh 5.1.
#include <stdio.h>
#include <conio.h>
main()
{
int digit;
for (digit=1; digit<=10; digit++)
{
printf(“%d”n,digit);
printf(“nSelesain”);
}
getch();
}

Program diatas akan mengeluarkan output program sebagai berikut:
1
2
3
4
5
6
7
8
9
10
Selesai

Looping for mengisyaratkan bahwa program akan menampilkan angka di layar monitor dengan dimulai
dengan angka 1 melaui perintah digit=1, kemudian digit akan berangsur – angsur meningkat setiap kelipatan
1 melalui perintah digit++, sedangkan perintah digit<= 10 mengisyratkan kapan berakhirnya proses looping,
dalam hal ini dinyatakan proses looping berhenti pada angka 10, karena angka yang lebih dari 10 yaitu 11
keatas mempunyai logika yang salah dari pernyataan digit <= 10. Kata Selesai akan di cetak pada layar
2
monitor ketika logika program digit < = 10 bernilai salah yang berarti akan keluar dari proses looping.
Kemdian program akan berlanjut secara sequence mengerjakan instruksi berikutnya yang dalam hal ini
adalah intruksi printf(“nSelesain”), dimana perintah tersebut memerintahkan program untuk menampilkan
kata Selesai dilayar monitor. Berikut adalah diagram alir dari contoh program diatas

digit = 1

Digit <= 10

Tidak

Ya

Gambar 5.2
Diagram Alir Struktur Program
Penulisan Angka 1 – 10 (looping)

printf(“%d”n,digit);

Tambahkan angka 1 ke
variable digit untuk looping

printf(“nSelesain”)
;

Contoh 5.2.
#include <stdio.h>
#include <conio.h>
main()
{
int jumlah, counter, i;
jumlah = 0;
printf("Masukan angka yang akan anda hitung jumlah deretnya : ");
scanf("%d",&counter);
for (i=1; i<=counter; i++)
jumlah = jumlah + i;
printf("Total Jumlah Deret = %d",jumlah);
getch();
}

Pada contoh 2 diatas program akan menghitung jumlah deret dari nilai yang dimasukan, semisal nilai
yang dimasukan adalah 10 maka program akan melakukan proses penjumlahan yang berulang sebagai
berikut; bertama variable jumlah bernilai 0, pada instruksi jumlah = jumlah + I menyatakan proses
perhitungan sebagai berikut jumlah = 0 + 1 untuk proses looping yang pertama. Hasil dari perhitungan
tersebut di simpan dalam variable jumlah, sehingga variable jumlah yang semula 0 sekarang bernilai 1.
Program berlanjut untuk looping yang kedua, instruksi jumlah = jumlah + I sekarang menyatakan proses
perhitungan jumlah = 1 + 2, varibel jumlah dari proses looping yang bertama mengakibatkan variable
tersebut menyimpan angka 1 dan i pada proses looping yang kedua bernilai 2. Proses looping yang kedua
akan disimpan dalam variable jumlah sehingga yang tadinya bernilai 1 pada proses looping yang kedua
3
akan bernilai 3. Demikian proses looping terus berlanjut hingga kondisi i <= 10 terpenuhi sebagai akhir
dari looping.

1.2. LOOPING DENGAN MENGGUNAKAN STRUKTUR WHILE– DO
Pernyataan while do pada C umumnya di ekspresikan dalam bentuk umum sebagai berikut :
while (ekspresi)
pernyataan ;
ekpresi yang dikandung di dalam tanda kurung akan di uji seperti halnya ekpresi pada struktur
pemrograman if – else. Jika ekepresi tersebut bernilai benar maka pernyataan di bawah struktur while
akan dijalankan, jika sebaliknya maka pernyataan tersebut tidak akan pernah dijalankan. Berikut adalah
proses yang dijalankan oleh computer ketika untuk menguji while do statement.
Uji ekspresi yang diberikan
Jika ekspresi bernilai benar / true /1 maka
a. Jalankan pernyataan
b. kembali ke langkah 1 untuk kembali menguji eksprsi setelah menjalankan pernyataan
else (jika ekspresi yang diuji bernilai salah / false / 0 maka
keluar dari proses looping while do statement

Diagram alir struktur while do adalah sebagi berikut:
Pernyataan 1

Periksa
Logika?

Gambar 5.3
Diagram Alir
while – do

Struktur

looping

Tidak

Ya
Pernyataan 2

Tambahkan angka
1 untuk looping

Pernyataan 3

Diagram Alir untuk teknik looping dengan menggunakan struktur while – do sama dengan pola yang
digunakan pada teknik looping dengan struktur for. Kedua pola looping ini akan menguji kondisi
pengulangan terlebih dahulu sebelum mengekeskusi pernyataan yang terdapat dalam looping, lainnya
halnya denga teknik looping dengan struktur do – while.
Contoh 5.3.
#include <stdio.h>
#include <conio.h>
main()
{

4
int jumlah, counter, i;
jumlah = 0;
i = 1;
printf("Masukan angka yang akan anda hitung jumlah deretnya : ");
scanf("%d",&counter);
while (i <= counter)
{
jumlah = jumlah + i;
i++;
}
printf("Total Jumlah Deret = %d",jumlah);
getch();
}

Pada program contoh 5.3 program terlebih dahulu akan menginisialiasi variable jumlah = 0, dan i = 1,
program akan menampilkan perintah pada layar monitor kepada pengguna untuk memasukan angka yang
akan dihitung jumlah deretnya, angka yang dimasukan oleh pengguna akan ditangkap oleh variable
counter. Pada instruksi selanjutnya program akan menguji dengan struktur pengulangan while do.
Pernyataan while (i <= counter) mengisyaratkan pengecekan apakah I yang bernilai 1 yang diketahui pada saat
inisialisasi awal akan dibandingkan dengan nilai yang tertera pada variable counter. Sebagai contoh
pengguna memasukan angka 10, melalui pernyataan while akan diuji apakah 1 <= 10. Ketika logika dalam
pernyataan tersebut bernilai benar maka instruksi jumlah = jumlah + i akan dijalankan, dari insruksi ini akan
didapatkan hasil penjumlahan dari deret angka 1 sampai 10. Instruksi i++ mengisyaratkan varibel i
melakukan proses increment dengan menambahkan nilai 1 setiap loopingnya. Sebagai contoh pada proses
looping ke dua i akan bernilai 2, nilai ini kemudian akan dimasukan dalam pernyataan while (i <= counter)
yang selanjutnya akan diuji apakah 2 <= 10, logika pernyataan tersebut masih bernilai benar maka program
akan menjalankan instruksi dibawahnya. Instruksi i++ akan menyebabkan i bertambah dari 2 menjadi 3,
nilai 3 tersebut kemudian diperiksa lagi dalam pernyataan while (i <= counter), demikian seterusnya hingga
logika while (i <= counter) bernilai salah, sebagai contoh 11 <= 10. Ketika logika pernyataan bernilai salah maka
proses loopig akan berakhir dan program akan mengeksekusi instruksi printf("Total Jumlah Deret = %d",jumlah).

1.3. LOOPING DENGAN MENGGUNAKAN STRUKTUR DO-WHILE
Teknik pemrograman yang dijelaskan diatas yaitu while do dan for, keduanya akan memeriksa suatu
kondisi pengulangan di awal program,
for (ekspresi)
…..
……
……..

while (ekspresi)
…..
……
……..

Sedangkan struktur do while akan memeriksa kondisi pengulangan pada akhir program,
do
……….
……….
……….
While (ekspresi)

Struktur ini akan memungkinkan program untuk di jalankan minimal sekali sebelum pernyataan dari
program tersebut di periksa oleh kondisi while, jika kondisi yang diperiksa bernilai benar maka
pernyataan diatas while akan di jalankan kembali hingga kondisi salah tercapai. Diagram alir struktur do
while adalah sebagi berikut:
Pernyataan 1
Pernyataan 2

Tambahkan angka
1 untuk looping

5
Gambar 5.4
Diagram Alir Struktur looping do –
while

Contoh 5.4
#include <stdio.h>
#include <conio.h>
main()
{
int counter, jumlah, i;
jumlah = 0;
i = 1;
printf("Masukan angka: ");
scanf("%d",&counter);
do
{
jumlah = jumlah + i;
printf("n%d",jumlah);
i++;
}
while (i <= counter);
getch();
}

Contoh 5.5
#include <stdio.h>
#include <conio.h>
main()
{
int counter,i;
i = 1;
printf("Masukan Angka : ");
scanf("%d",&counter);
while(i <= counter)
{
printf("nBelajar Pemrograman");
i++;

6
}
getch();
}

Contoh 5.6
#include <stdio.h>
#include <conio.h>
main()
{
int counter,i;
i = 1;
printf("Masukan Angka : ");
scanf("%d",&counter);
do
{
printf("nBelajar Pemrograman");
i++;
}
while(i <= counter);
getch();
}

Program contoh 5.5. dan 5.6 memperlihatkan perbedaan penggunaan teknik pengulangan while do dan do
while. Dua program tersebut akan mengeluarkan hasil yang sama ketika kita memasukan angka lebih dari
0, akan tetapi ketika kita berikan angka 0 baru terlihat perbedaan yang mencolok tentang penggunaan
kedua teknik looping tersebut.

Pengayaan
Latihan 5.1
#include <stdio.h>
#include <conio.h>
main()
{
int n, count = 1;
float x, average, sum = 0;
printf("Berapa Angka yang Akan di hitung? " ) ;
scanf ("%d", &n) ;
while (count <= n)
{
printf (" x = ");
scanf("%f", &x);
sum += x;
++count;
}
average = sum/n;
printf("nRata-ratanya adalah %fn", average);

7
getch();
}
Latihan 5.2
#include <stdio.h>
#include <conio.h>
main()
{
int n, count, loops, loopcount;
float x, average, sum;
/* read i n the number of l i s t s */
printf ("How many lists ? " );
scanf ("%d", &loops);
/* outer loop (process each l i s t of numbers */
for (loopcount = 1; loopcount <= loops; ++loopcount)
{
/* initialize and read in a value for n */
sum = 0;
printf ( " n List number %dnHow many numbers? ", loopcount);
scanf ("%d", &n) ;
/* read i n the numbers */
for (count = 1; count <= n; ++count)
{
printf ( " x = " );
scanf ( "%f", &x);
sum += x;
} /* end inner loop */
/* calculate the average and display the answer */
average = sum/n;
printf ("nThe average i s %fn", average) ;
} /* end outer loop */
getch();
}

8
BAB VI PEMROGRAMAN FUNGSI
Pertemuan Minggu VII dan VIII
Alokasi Waktu

:

4 Jam Pertemuan

Standar Kompetensi

:

Mahasiswa dapat membuat program komputer sederhana dengan menggunakan bahasa
C

Kompetensi Dasar

:

Memahami program komputer yang mengandung unsur procedure dan fungsi

Indikator

:

Mahasiswa dapat memahami struktur program bahasa C yang mengandung unsur
procedure dan fungsi

:

Mahasiswa dapat membuat program dengan melibatkan struktur procedure dan fungsi

Dalam topic-topik sebelumnya kita telah memanfaatkan fungsi yang telah didefinisikan oleh C didalam
Pustaka (library) C itu sendiri, seprti sqrt (), pow (), dsb. Salah satu keunngulan pemrograman bahasa C
adalah bahwa seorang programmer dapat membuat Fungsi sendiri sesuai dengan kebutuhan program
aplikasi yang akan dikebangkan. Analogi fungsi adalah seperti halya kita ……
Suatu fungsi dapat diakses atau dipanggil dengan menuliskan nama fungsinya pada main program (fungsi
main ( ) ). Gambar dibawah ini mengilustrasikan program yang terdiri dari beberapa fungsi yang terkait
antara satu dengan yang lain.

Gambar 6.1
Diagram
fungsi

Struktur

pemanggilan

main()
{
function1();
……
fungtion2();

function1()
{
……
return;
}

function3()
{

function3();
……
function4();
……….
return;
}

}

function2()
{

}

……
return;

function4()
{
……
return;
}

Di beberapa literature ada yang membedakan antara pengertian fungsi dan procedure. Procedure diartikan
sebagai suatu bagian program yang menjalankan tugas tertentu yang kemudian dipanggil oleh fungsi
utama. Fungsi juga merupakan bagian dari program yang menjalankan tugas tertentu akan tetapi fungsi
mempunyai nilai yang akan di kembalikan ke fungsi utama ketika di panggil. Secara umum struktur
penamaan sebuah procedure dan fungsi adalah sebagai berikut:
void Nama_prosedure (void)

: struktur umum penamaan prosedure

int nama_fungsi (tipe_data parameter) : struktur umum penamaan fungsi

1
proses pendeklarasian fungsi ini biasanya terletak setelah penulisan library program, dibawah ini
merupakan salah satu cara pendeklarasian fungsi atau procedure
#include <conio.h>
#include <math.h>
#include <stdio.h>
………
int fungsi1 (int a, int b)
Void prosedure1 (void)
……..
Main()
{
………………..
………………..
}

6.1. PROSEDURE
Procedure lebih merupakan sebuah fungsi yang tidak memiliki parameter keluaran. Procedure
hanya digunakan untuk memecah program sehingga lebih mudah dalam pengelolaan dan
pengembangan selanjutnya. Procedure lebih ditekankan pada pemecahan tugas yang lebih spesifik
untuk menyederhanakan program dan mempermudah penanganan saat terjadi kesalahan. Contoh dibawah
ini akan menjelaskan penerapan procedure dalam suatu program yang bertujuan untuk mempermudah
pengelolaan program.
Contoh 6.1
#include <stdio.h>
#include <conio.h>
void luas(void);
void keliling(void);
main()
{
printf("Program Bangun Persegi Panjang");
luas();
keliling();
getch();
}
void luas(void)
{
int luasan, lebar, panjang;
lebar = 3;
panjang = 4;
luasan = panjang * lebar;
printf("nLuas nya adalah : %d",luasan);
}
void keliling(void)
{
int kelilingan, lebar, panjang;

2
lebar = 3;
panjang = 4;
kelilingan = (2*panjang) + (2*lebar);
printf("nKelilingnya adalah : %d",kelilingan);
}

Pada contoh 1.6 diatas bahwa program perhitungan persegi panjang yang menentukan luas dan keliling
dibagi menjadi tiga bagian program, bagian pertama adalah fungsi utama yaitu fungsi main(), bagian kedua
adalah procedure luas yang didefinisikan sebagai void luas (void), bagian ketiga adalah prosudure

keliling yang didefinisikan sebagai void keliling (void).
Pada contoh 6.1 jika kita akan menambahkan suatu proses perhitungan lain terkait dengan
persegi panjang semisal menghitung sisi diagonal persegi panjang, kita hanya perlu
menambahkan deklarasi baru dibawah deklarasi procedure yang sudah ada, selanjutnya tinggal
mendeskripsikan prosedure tersebut seperti pada deskripsi procedure luas dan keliling yang
sudah ada.
Contoh 6.2
#include <stdio.h>
#include <conio.h>
void luas(void);
void keliling(void);
void diagonal(void);
main()
{
printf("Program Bangun Persegi Panjang");
luas();
keliling();
diagonal();
getch();
}
void luas(void)
{
int luasan, lebar, panjang;
lebar = 3;
panjang = 4;
luasan = panjang * lebar;
printf("nLuas nya adalah : %d",luasan);
}
void keliling(void)
{
int kelilingan, lebar, panjang;
lebar = 3;
panjang = 4;
kelilingan = (2*panjang) + (2*lebar);

3
printf("nKelilingnya adalah : %d",kelilingan);
}
void diagonal(void)
{
int lebar, panjang, diagonal
lebar = 3;
panjang = 4;
diagonal = sqrt( (lebar*lebar) + (panjang*panjang) );
printf(“nPanjang diagonal adalah : %d”,diagonal);
}

6.2. FUNGSI
Procedure yang kita dipelajari di atas adalah bentuk paling sederhana dari sebuah fungsi. Fungsi biasanya
mempunyai parameter masukan atau keluaran yang nantinya akan dikeluarkan pada saat fungsi tersebut di
panggil, masih dengan program yang telah dikembangkan pada contoh 6.1, pada contoh dibawah ini
program tersebut akan dimodifikasi dengan menggunakan fungsi.
Contoh 6.2
#include <stdio.h>
#include <conio.h>
int luas(int x, int y);
main()
{
int panjang, lebar, luasan;
printf("Program Bangun Persegi Panjang");
printf("nMasukan Panjangnya : ");
scanf("%d",&panjang);
printf("nMasukan Lebarnya : ");
scanf("%d",&lebar);
luasan = luas(panjang,lebar);
printf("nLuas Persegi Panjang : %d",luasan);
getch();
}
int luas(int x, int y)
{
int hit_luas;
hit_luas = x * y;
return(hit_luas);
}

Pada program contoh 6.2 jika diperhatikan ada penulisan tipe data dan parameter yang digunakan dalam
pendeklarasian fungsinya. Fungsi dideklarasikan didahului dengan tipe data yang akan dikembalikan
kemudian didalam tanda kurung juga berisi variable dan tipe data yang akan diproses pada saat
pemanggilan fungsi : int luas(int x, int y).
4
Pada pendeskrisian fungsi luas diatas lebih ditekankan pada proses bagaimana menghitung luas dengan
melibatkan parameter yang ada, pada contoh diatas juga didapatkan keyword return yang menyatakan
pengembalian dari suatu proses ketika fungsi tersebut di panggil pada fungsi yang lain. Jika ingin
menambahkan suatu fungsi lagi terkait dengan perhitungan persegi panjang adalah sebagai berikut
Contoh 6.3
#include <stdio.h>
#include <conio.h>
int luas(int x, int y);
int keliling(int x, int y);
main()
{
int panjang, lebar, luasan, kel;
printf("Program Bangun Persegi Panjang");
printf("nMasukan Panjangnya : ");
scanf("%d",&panjang);
printf("nMasukan Lebarnya : ");
scanf("%d",&lebar);
luasan = luas(panjang,lebar);
kel = keliling(panjang,lebar);
printf("nLuas Persegi Panjang : %d",luasan);
printf("nKeliling Persegi Panjang : %d",kel);
getch();
}
int luas(int x, int y)
{
int hit_luas;
hit_luas = x * y;
return(hit_luas);
}
int keliling(int x, int y)
{
int hit_keliling;
hit_keliling = (2*x) + (2*y);
return(hit_keliling);
}

Pada contoh 6.3 terlihat ketika ingin menambahkan suatu fungsi, kita tinggal nenambahkan deklarasi
fungsi dibawah deklarasi fungsi yang terdahulu, selanjutnya dideskripsikan dibawah deskripsi fungsi
yang sudah ada dalam hal ini deskripsi fungsi untuk menghitung luas.

Pengayaan
Latihan 6.1

5
#include <stdio.h>
#include <conio.h>
int kabisat(int th);
main()
{
int tahun;
printf("Masukan Tahun : ");
scanf("%d",&tahun);
kabisat(tahun);
getch();
}
int kabisat(int th)
{
if(th%4==0)
printf("Kabisat");
else
printf("Bukan Kabisat");
return(th);
}
Latihan 6.2
#include <stdio.h>
#include <conio.h>
int fak(int fk);
main()
{
int nilai,ft;
printf("Masukan Nilai: ");
scanf("%d",&nilai)
printf("Nilai Faktorial dari %d adalah %d",nilai,fak(nilai));
getch();
}
int fak(int fk)
{
int i,f;
if(fk==0)
{
f=1;
}
if(fk > 0)
{
f=1;
for (i=1; i<=fk; i++)
{
f=f*i;

6
}
return(f);
}
}

7
BAB VII PEMROGRAMAN ARRAY DAN STRING
Pertemuan Minggu IX dan X
Alokasi Waktu

:

4 Jam Pertemuan

Standar Kompetensi

:

Mahasiswa dapat membuat program komputer sederhana dengan menggunakan bahasa
C

Kompetensi Dasar

:

Memahami program komputer yang menggunakan struktur Larik (Array)

Indikator

:

Mahasiswa dapat memahami struktur program bahasa C yang mengandung Array

:

Mahasiswa dapat membuat program dengan melibatkan struktur Array

Pada pemrograman yang sesungguhnya terkada kita membutuhkan suatu blok data yang mempunyai
karakteristik yang sama. Seperti di ilustrasikan tentang konsep variable dengan menganalogikan
penamaan alamat pada sebuah kamar hotel, array di analogikan pada aktifitas pemesanan beberapa kamar
hotel yang akan kita isi sesuai dengan kebutuhan si pemesan. Pada konsep pemrograman bahasa C array
didefinisikan sebagai berikut:
Tipe data nama_array [panjang_array]

Tipe data merupakan batasan dari variable tentang format data apa yang dapat dimanipulasi untuk
variable tersebut, nama_array merupakan nama variable yang dijadikan sebagai bentuk array, dan
panjang_array adalah jumlah maksimum data yang dapat di tamping dalam variable array tersebut.
Berikut adalah contoh format penulisan variable array
int nim [10]
char nama [30]

Pada contoh int nim [10] diartikan sebagai sebuah variable dengan nama nim yang bertipe integer dengan
kemampuan maksimum data yang dapat ditampung sebesar 10 digit. Demikian juga untuk contoh char
nama [30] mengindikasikan bahwa variable array nama bertipe char yang mampu menampung data
sebanyak 30 character (huruf). Hal yang perlu diperhatikan bahwa penulisan batas maksimum daya tamping
sebuah array di tulis dengan tanda kurung kotak [ ].
Pemrograman Array dibagi menjadi dua kelempok besar yaitu array satu dimensi dan array multi dimensi.
Pada pembahasan kali ini hanya akan di dibahas lebih mendalam tentang array 1 dimensi dan array 2
dimensi.

7.1. ARRAY 1 DIMENSI
Seperti dicontohkan pada penulisan variable array diatas, contoh tersebut mengacu pada sintak atau aturan
penulisan untuk array 1 dimensi. Dimana array tersebut hanya berbentuk 1 kolom atau pun baris. Berikut
adalah ilustrasi dari penerapan array 1 dimensi
Contoh 7.1
#include <stdio.h>
#include <conio.h>
/* Program menghitung nilai rata-rata */
main()
{

1
int n1, n2, n3, n4, n5;
float rata;
printf("Masukan nilai untuk n1, n2, n3, n4 dan n5n");
scanf("%d %d %d %d %d", &n1, &n2, &n3, &n4, &n5);
rata = (n1+n2+n3+n4+n5) / 5;
printf("Nilai rata-ratanya = %f ",rata);
getch();
}

Pada program contoh 7.1 diatas mengilustrasikan bahwa untuk dapat membuat rata-rata nilai dari sekian
data kita harus menyiapkan sekian variable sesuai dengan jumlah data yang akan kita kalkulasi, tentu hal
ini tidak akan menjadi masalah jika data yang akan kita hitung dalam rentang satuan, bagaimana jika data
yang akan kita kalkulasi sebanyak 100 bahkan 1000 buah data, tentu saja program pada contoh 7.1
menjadi tidak sangat efektif. Array salah satunya digunakan untuk mengelola blok data sehingga lebih
mudah dalam memanfaatkannya. Contoh 7.2 berikut akan mengilustrasikan manfaat penggunaan array
untuk memperbaiki efektifitas dari program contoh 7.1
Contoh 7.2
#include <stdio.h>
#include <conio.h>
/* Program menghitung nilai rata-rata dengan array*/
main()
{
int n[10];
int data, i,sum;
float rata;
printf("Berapa data yang akan Anda hitung ");
scanf("%d",&data);
sum =0;
for (i=0; i<data; i++)
{
printf("data ke-%d ",i+1);
scanf("%d",&n[i]);
sum = sum + n[i];
}
rata = sum/data;
printf("Nilai rata-ratanya = %.2f",rata);
getch();
}

Pada contoh 7.2 terlihat bahwa pemrograman array terkait erat dengan teknik pemrograman looping.
Penggunaan Teknik looping disini diperuntukan untuk menjalankan proses pemasukan (inisialisasi) data
secara otomatis terkait dengan jumlah data yang aka dikalkulasi secara dinamis. Pada contoh 7.2 Teknik
looping yang digunakan adalah dengan menggunakan struktur for akan tetapi pada dasarnya bisa diganti
dengan teknik looping yang lain. Cara kerja Struktur array adalah sebagai berikut:
1. Ketika pengguna memasukan angka kedalam program, angka tersebut ditangkap oleh variable
data yang bertipe integer.
2. Kemudian program berlanjut mengesekusi baris berikutnya yaitu menginisialisasi (pemberian
nilai awal) pada variable sum dengan nilai nol (0).
2
3. Program berlanjut ke struktur looping dimana proses looping akan dimulai dari angka ke 0 dan
berakhir pada nilai yang dikandung pada variable data dengan proses penambahan angka 1 setiap
perputaran looping yang ditandai dengan pernyataan i++. Proses looping akan berhenti ketika nilai
yang terkadung dalam variable i sudah lebih besar atau sama dengan nilai yang terkandung dalam
variable data.

7.2. ARRAY 2 DIMENSI
Struktur array 2 dimensi mengisyaratkan bahwa susunan data yang dibentuk menyerupai table yaitu akan
terdiri dari baris dan kolom. Pada konsep pemrograman bahasa C array 2 dimensi didefinisikan sebagai
berikut:
Tipe data nama_array [panjang_baris] [panjang_kolom]

Array 2 dimensi termasuk dalam kategori array multidimensi, lebih jauh tentang array multidimensi pada
penjabarannya kita dapat membuat array 3 dimensi, 4 dimensi dst, array multidimensi didefinisikan
sebagai berikut:
Tipe data nama_array [dimensi 1] [dimensi 2][dimensi 3]

array 3 dimesi

Tipe data nama_array [dimensi 1] [dimensi 2][dimensi 3][dimensi 4] array 4 dimesi

Pada pokok bahasan ini akan lebih ditekankan pada array dua dimensi yang akan diilustrasikan dengan
pemrograman matrik. Contoh program dibawah ini akan menampilkan susunan angka yang berbentuk
baris dan kolom.
Contoh 7.3
#include <stdio.h>
#include <conio.h>
main(void)
{
int t, i, num[3][4];
for(t=0; t<3; ++t)
for(i=0; i<4; ++i)
num[t][i] = (t*4)+i+1;
/* now print them out */
for(t=0; t<3; ++t)
{
for(i=0; i<4; ++i)
printf("%3d", num[t][i]);
printf("n");
}
getch();
}

Ketika di jalankan maka output dari program adalah sebagai berikut:
Gambar 7.1
Output program array 2 dimensi

3
Pada gambar 7.1 menampilkan susunan angka yang berpola, dalam gambar tersebut dapat terlihat susunan
table yang terdiri dari bari dan kolom. Berikut adalah ilustrasi dari hasil keluaran program diatas
1

2

3

4

Baris 1

5

6

7

8

Baris 2

9

10

11

12

Baris 3

Kol 1 Kol 2 Kol 3 Kol 4

Program contoh 7.3 mengilustrasikan pembuatan table yang terdiri dari 3 baris dan 4 kolom.
Pendeklarasian variable num[3][4] mengyatakan bahwa keluaran akan dibentuk kedalam table 3 x 4.
Sebagai catatan bahwa array 2 dimensi mempunyai default nilai koordinat untuk kiri atas adalah (0,0)
yang berarti bahwa table dimulau dari baris ke 0 dan kolom ke 0. Proses pembentukan tampilan adalah
sebagai berikut:
1. Looping dimulai pada baris ke 0 yang dinyatakan dengan nilai t=0, dalam ini terjadi proses
looping dimulai pada loop terluar yaitu pada loop for(t=0; t<3; ++t).
2. Program secara sequence mengeksekusi baris berikutnya yaitu pernyataan for(i=0; i<4; ++i). pada
loop kedua ini I dimulai dengan angka 0 yang menyatakan kolom ke 0. Sampai pada tahap ini
program sudah memegang nilai indeks yaitu di 0,0.
3. Program secara sequence mengeksekusi baris berikutnya yaitu pernyataan printf("%3d", num[t][i]).
Pernyataan tersebut merupakan sutau perintah untuk menampilkan angka sesuai dengan hasil
perhitungan pada pernyataan num[t][i] = (t*4)+i+1. num[t][i] adalah variable bertipe array 2 dimensi yang
akan menampatkan angka dari hasil perhitungan susai dengan nomor indeksnya. Pada
perhitungan awal variable num[t][i] bernilai 1 (satu) yang mempunyai indeks di (0,0) (lihat gambar
7.1). posisi tersebut menyatakan bahwa nilai 1 berada pada baris ke 0 dan kolom ke 0.
4. Setelah mencetak angka 1 program masih berjalan pada proses loop ke 2 yaitu pada posisi loop
for(i=0; i<4; ++i). pada loop ini variable i mengalami proses increament dari i= 0 menjadi i=1. Proses
looping yang kedua ini akan merubah harga indeks dari posisi elemen menjadi (0,1), sehingga
nilai 2 hasil dari perhitungan (t*4)+i+1 yang ditampung pada variable num[t][i] akan ditempatkan pada
posisi baris ke nol dan kolom 1.
5. Setelah mencetak angka 2 program masih berjalan pada proses loop ke 2 yaitu pada posisi loop
for(i=0; i<4; ++i). pada loop ini variable i mengalami proses increament dari i= 1 menjadi i=2. Proses
looping yang kedua ini akan merubah harga indeks dari posisi elemen menjadi (0,2), sehingga
nilai 3 hasil dari perhitungan (t*4)+i+1 yang ditampung pada variable num[t][i] akan ditempatkan pada
posisi baris ke nol dan kolom 2. Proses looping pada baris ke 0 akan berakhir setelah i bernilai 3
atau dari logika loop yang dimaksud jika I < 4 maka loop akan berakhir
6. Setelah baris pertama terpenuhi yaitu baris ke 0, maka proses looping akan melompat ke loop
yang terluar yaitu loop for(t=0; t<3; ++t). pada bagian ini proses looping akan berlanjut pada variable
t (lihat keterangan no 1), variable t yang semula bernilai 0 akan berubah menjadi 1 melalui proses
increament ++t. pada proses ini pengeksekusian program hanya melakukan proses increament nilai
t selajutnya program secara sequence mengeksekusi baris berikutnya yaitu pada loop for(i=0; i<4;
++i).

7. Pada tahap ini proses looping akan terjadi pada loop for(i=0; i<4; ++i), pada tahap kedua ini variable I
akan mengalai proses dari awal dengan I bernilai 0. Hanya saja pada tahap ini program memegang

4
indeks dengan nilai (1,0), yang merujuk pada t=1 yang menyatakan baris ke 1, dan I=0 yang
menyatakan kolom ke 0.
8. Program secara sequence mengeksekusi baris berikutnya yaitu pernyataan printf("%3d", num[t][i])
(lihat keterangan no 3). Pada perhitungan ini variable num[t][i] bernilai 5 (lima) yang mempunyai
indeks di (1,0) (lihat gambar 7.1). posisi tersebut menyatakan bahwa nilai 5 berada pada baris ke
1 dan kolom ke 0.
9. Setelah mencetak angka 5 program masih berjalan pada proses loop ke 2 yaitu pada posisi loop
for(i=0; i<4; ++i). pada loop ini variable i mengalami proses increament dari i= 0 menjadi i=1. Proses
looping yang kedua ini akan merubah harga indeks dari posisi elemen menjadi (1,1), sehingga
nilai 6 hasil dari perhitungan (t*4)+i+1 yang ditampung pada variable num[t][i] akan ditempatkan pada
posisi baris ke 1 dan kolom ke 1. Proses looping pada baris ke 1 akan berakhir setelah i bernilai 3
atau dari logika loop yang dimaksud jika I < 4 maka loop akan berakhir
10. Proses akan kembali seperti pada keterangan no. 6 yang akan merubah harga t dari 1 menjadi 2.
Proses di looping terluar akan berakhir ketiga harga berlogika kurang dari 3 (t<3) atau t bernilai 2.

7.3. STRING
String merupakan tipe data bentukan dari tipe data dasar yaitu char. Tipe char hanya mengijinkan untuk
pembacaan 1 huruf (character), dengan memanfaatkan array maka kita dapat menampung beberapa
karakter yang membentuk suatu kesatuan kata atau bahkan kalimat dengan menggunakan tipe data char,
berikut sintaks penulisan tipe bentukan string dalam bahasa C.
char nama[20];
char alamat[50];

dalam pembuatan variable string aturan umum dalam pembuatan variable yaitu mencantumkan tipe data
di depan variable masih tetap berlaku, hanya saja setelah nama variable harus diikuti tanda kurung kotak
dengan disertai angka didalamnya. Sebagai contoh dua varibel diatas mengandung arti bahwa variable
nama dengan tipe char dapat menampung character/huruf sebanyak 20, demikian juga dengan variable
alamat yang mempunyai tipe char dengan huruf maksimal yang dapat ditampung sebanyak 50 huruf.
Terdapat Beberapa aturan yang perlu dicermati dalam melakukan inisialisasi awal pada variable string,
aturan dalam melakukan inisialisasi awal tersebut diantaranya sebagai berikut:
char saying[ ] = "This is a string."
2. char str[40] = "Feddy Setio Pribadi"
1.

Inisialisasi dengan kurung kotak kosong
Inisialisasi dengan kurung kotak terdifinisi

Contoh 7.4.
#include <stdio.h>
#include <conio.h>
int main(void)
{
char nama[80], alamat[80];
puts("Ketikan Nama Anda Lalu Tekan Enter");
puts("nLalu Ketikan Alamat Anda kemudian tekan Enter");
gets(nama);
gets(alamat);
printf("nNama Anda %s dengan Alamat %s",nama,alamat);

5
getch();
}

String mempunyai kajian tersendiri dalam pemrograman, C menyediakan library (string.h) yang berisi
tentang fungsi-fungsi untuk melakukan manipulasi terhadap string. Berikut adalah contoh program yang
menyajikan proses manipulasi yang dapat dilakukan pada string
Contoh 7.5.
#include <stdio.h>
#include <string.h>
#include <conio.h>
main()
{
char s1[80], s2[80];
puts("Ketikan Sebuah Kata Lalu Tekan Enter");
puts("nKetikan Sebuah Kata kemudian tekan Enter");
gets(s1);
gets(s2);
printf("lengths: %d %dn", strlen(s1), strlen(s2));
if(!strcmp(s1, s2)) printf("The strings are equaln");
strcat(s1, s2);
printf ("%sn", s1);
strcpy(s1, "This is a test.n");
printf(s1);
if(strchr("hello", 'e')) printf("e is in hellon");
if(strstr("hi there", "hi")) printf("found hi");
getch();
}

Pada contoh 7.5 perhatikan sintaks program pada bagian include, fungsi-fungsi manipulasi string seperti
strlen, strcmp, strcpy, strcat, dll terkandung dalam library <string.h>, oleh karena itu ketika kita akan melakukan
manipulasi string dengan fungsi-fungsi tersebut maka terlebih dahulu kita harus menyertakan #include
<string.h> pada bagain deklarsai library.

Pengayaan
Latihan 7.1
#include <stdio.h>
#include <conio.h>
main()
{
char str1[] = "To be or not to be";
char str2[] = ",that is the question";

6
int count = 0; /* Stores the string length */
while (str1[count] != '0') /* Increment count till we reach the string */
count++; /* terminating character. */
printf("nThe length of the string "%s" is %d characters.", str1, count);
count = 0; /* Reset to zero for next string */
while (str2[count] != '0') /* Count characters in second string */
count++;
printf("nThe length of the string "%s" is %d characters.n", str2, count);
getch();
}
Latihan 7.2
#include <conio.h>
#include <stdio.h>
void misteri(char *s);
main()
{
char string[] ="naufal";
printf("Sebelum proses %sn",string);
misteri(string);
printf("Setelah proses %s",string);
getch();
}
void misteri(char *s)
{
while (*s != '0')
{
if (*s >= 'a' && *s <= 'z')
*s -=32;
s++;
}
}

7
BAB VIII PEMROGRAMAN POINTER
Pertemuan Minggu XI dan XII
Alokasi Waktu

:

4 Jam Pertemuan

Standar Kompetensi

:

Mahasiswa dapat membuat program komputer sederhana dengan menggunakan bahasa
C

Kompetensi Dasar

:

Memahami program komputer yang menggunakan struktur Pointer

Indikator

:

Mahasiswa dapat memahami struktur program bahasa C yang mengandung Pointer

:

Mahasiswa dapat membuat program dengan melibatkan Pointer

pointer adalah variabel yang menyimpan alamat memori. Alamat ini adalah lokasi obyek lain (biasanya
variabel lain) di memori. Misalnya, jika satu variabel berisi alamat dari variabel lain, variabel pertama
dikatakan menunjuk ke variable kedua. Analogy konsep pointer adalah ketika kita ingin berkenalan
dengan seseoarang akan tetapi kita tidak dapat menyapanya secara langsung maka biasanya kita akan
bertanya kepada teman atau sahabatnya yang kebetulan kita kenal. Orang yang kita tanya perihal
seseorang yang ingin kita ketahui identitasnya adalah seorang Pointer (Penunjuk). Analogy yang lain
ketika kita ingin berkunjung ke suatu alamat akan tetapi kita tidak tahu di daerah mana alamat tersebut
berada maka kita akan bertanya kepada orang yang kita anggap tahu tentag alamat tersebut, orang yang
memberikan penjelasan tentang perihal alamat yang kita tanyakan itulah yang kita sebuat dengan Pointer.
Poiter adalah variabel yang berisi alamat memori variabel lain dan secara tidak langsung menunjuk ke
variabel tersebut. Sebagai contoh Andi berteman dengan Budi, lalu anda ingin mengetahui jumlah
keluarga Budi untuk keperluan sensus penduduk. Anda tidak mengetahui alamat Budi, tetapi anda
mengenal Andi. Untuk mencari jumlah keluarga Budi, maka pertama-tama anda pergi ke rumah Andi,
misalnya di rumah No. 8321. Sesampai di Andi, Andi membaritahukan kepada anda bahwa alamat Budi
ada pada alamat 9821. Kemudian anda pergi ke rumah Budi lalu mencatat jumlah keluarga yang dimiliki
Budi yaitu lima orang (misalkan). Dalam contoh di atas, Andi bertindak sebagai pointer. Andi tidak
memberitahukan jumlah keluarga Budi, tetapi Andi memberitahu alamat Budi, di alamat 9821 (alamat
Budi) itulah Anda mengetahui jumlah keluarga Budi. Jika alamat dari ditunjukkan dengan simbol & dan
isi dari ditunjukkan dengan symbol *, maka hubungan analogi di atas adalah:

Jika variabel akan menjadi penunjuk, itu harus dinyatakan sebagai demikian. Sebuah deklarasi pointer
terdiri dari jenis dasar, *, dan nama variabel. Bentuk umum untuk mendeklarasikan variabel pointer
Tipe *nama_variabel

ketika Anda menyatakan pointer brtipe int *, maka compiler mengasumsikan bahwa semua alamat yang
akan ditunjuk oleh varibel pointer tersebut menunjuk ke sebuah variable yang betipe integer.

1
Contoh 8.1
#include <stdio.h>
#include <conio.h>
main()
{
int x = 99;
int *p1, *p2;
p1 = &x;
p2 = p1;
/* print the value of x twice */
printf("Values at p1 and p2: %d % dn", *p1, *p2);
/* print the address of x twice */
printf("Addresses pointed to by p1 and p2: %p %p", p1, p2);
getch();
}

Contoh 8.2
#include <stdio.h>
#include <conio.h>
main()
{
int U = 3;
int v;
int *pu; /* pointer t o an integer */
int *pv; /* pointer t o an integer */
pu = &U; /* assign address of U t o pu */
v = *pu; /* assign value of U t o v */
pv = &v; /* assign address of v t o pv */
printf("nu=%d &u=%X pu=%X *pu=%d", U, &U, pu, *pu);
printf("nnv=%d &v=%X pv=%x *pv=%d", v, &v, pv, *pv);
getch();
}

Pada program diatas menyatakan pointer *s digunakan sebagai penunjuk variable kata yang berbentuk
array dan bertipe char. Pointer *s ini digunakan sebagai argument fungsi hitung yang akan
mengembalikan nilai integer apabila fungsi hitung tersebut dipanggil. Dengan kata lain fungsi hitung akan
memberikan nilai berupa angka dari suatu masukan yang diberikan pada variable kata yang berupa
sederet char (string).
Contoh 8.3
2
#include <stdio.h>
#include <conio.h>
void tukar(int *a, int *b);
main()
{
int x,y;
printf("Masukan nilai ke 1: ");
scanf("%d",&x);
printf("Masukan nilai ke 2: ");
scanf("%d",&y);
tukar(&x,&y);
printf ("Setelah ditukarkan Nilai ke 1 %dn",x);
printf ("Setelah ditukarkan Nilai ke 2 %d",y);
getch();
}
void tukar(int *a, int *b)
{
int smt;
smt = *a;
*a = *b;
*b = smt;
}

Contoh 8.4
#include <stdio.h>
#include <conio.h>
main()
{
int number = 0; /* A variable of type int initialized to 0 */
int *pointer = NULL; /* A pointer that can point to type int */
number = 10;
printf("nnumber's address: %p", &number); /* Output the address */
printf("nnumber's value: %dnn", number); /* Output the value */
pointer = &number; /* Store the address of number in pointer */
printf("pointer's address: %p", &pointer); /* Output the address */
printf("npointer's size: %d bytes", sizeof(pointer)); /* Output the size */
printf("npointer's value: %p", pointer); /* Output the value (an address) */
printf("nvalue pointed to: %dn", *pointer); /* Value at the address */
getch();
}

Contoh 8.5
#include <stdio.h>

3
#include <conio.h>
void funct1 (int U, int v); /* function prototype */
void funct2 (int *pu, int *pv); /* function prototype */
main ()
{
int u = 1;
int v = 3;
printf ( "n Before calling functl : u=%d v=%d", u, v);
funct1 (u, v);
printf ( "n After calling functl : u=%d v=%d", u, v);
printf ("nn Before calling funct2: u=%d v=%d", u, v) ;
funct2(&u, &v);
printf ("n After calling funct2: u=%d v=%d", u, v);
getch();
}
void funct1 (int U, int v)
{
U = 0;
v = 0;
printf ( " n Within functl : u=%d v=%d", U, v);
return;
}
void funct2 (int *pu, int *pv)
{
*pu = 0;
*pv = 0;
printf ("n Within funct2: *pu=%d *pv=%d", *pu, *pv) ;
return;
}

Pengayaan
Latihan 8.1
#include <stdio.h>
#include <conio.h>
int hitung(char *s);
main()
{
char kata[80];
printf("Masukan Sebuah Kata : n");
scanf("%s",&kata);
printf("%d",hitung(kata));
getch();
}
int hitung(char *s)

4
{
int i=0;
for (;*s!='0'; *s++)
i++;
return(i);
}
Latihan 8.2
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#define size 10
void push(int i);
int pop(void);
int *tos, *p1, stack[size];
main()
{
int value;
p1 = stack;
tos = stack;
do {
printf("Enter value: ");
scanf("%d", &value);
if(value != 0) push(value);
else {printf("value on top is %dn", pop());
printf("Alamat Memori %pn",(p1+1));}
} while(value != -1);
getch();
}
void push(int i)
{
p1++;
if(p1 == (tos+size))
{
printf("Stack Overflow.n");
exit(1);
}
*p1 = i;
}
int pop(void)
{
if(p1 == tos) {
printf("Stack Underflow. n");
exit(1);
}
p1--;
return *(p1+1);
}

5
BAB IX PEMROGRAMAN STRUKTUR
Pertemuan Minggu XIII
Alokasi Waktu

:

2 Jam Pertemuan

Standar Kompetensi

:

Mahasiswa dapat membuat program komputer sederhana dengan menggunakan bahasa
C

Kompetensi Dasar

:

Memahami program komputer yang menggunakan struktur (struct)

Indikator

:

Mahasiswa dapat memahami struktur program bahasa C yang mengandung struct

:

Mahasiswa dapat membuat program dengan melibatkan struct

Struktur adalah kumpulan dari beberapa variable, mungkin juga dari beberapa tipe data yang berbeda.
Variable-variabel ini dibundle dalam satu kelompok kemudian di berinama varibel alias untuk mewakili
nama dari kelompok tersebut. Struktur digunakan untuk membantu mengelola data yang komplek,
khususnya dalam program yang relative besar. Salah satu contoh dari struktur adalah pencatatan daftar
gaji. Seorang pekerja digambarkan oleg sekumpulan attribute seperti nama, alamat, nomor identitas, dan
gajinya. Contoh lain adalah sebuah titik. Titik mempunyai sepasang koordinat misalnya koordinat titik Y
dan titik X pada system koordinat kartesian.
Sebagai contoh kita akan membuat sebuah struktur untuk menggambarkan sebuah titik dengan pasangan
koordinatnya. Titik tersebut mempunyai nilai koodinat X dan Y yang masing-masing bertipe integer
sebagai contoh titik Z (4,3). Dua koordinat tersebut dapat ditempatkan didalam satu struktur yang
dideklarasikan sebagai berikut
struct titik
{
int x;
int y;
}

Sintaks umum penulisan structure adalah penyertaan keyword struct, terdapat variable anggota yang
diapit dengan tanda kurung kurawal, berikut adalah bentuk umumnya
struct tag
{
member 1;
member 2;
.....
member m;
};

Kata kunci struct merupakan awal dari pendeklarasian sebuah struktur, tag adalah nama dari struct yang
dimaksud. Tag dengan tipe struct tersebut selanjutnya dapat digunakan sebagai tipe data dari suatu
variable. Berikut adalah contoh lain dari pembuatan struct.
Struct account
{
int no_acc;
char nama[80];

1
float balance;
}

Berikut cara menggunakan struct yang telah didefinisikan di atas
struct titik pt;
struct account akun;

Pernyataan diatas merupakan pendefinisian dari sebuah variable dengan nama pt dengan tipe data struct
titik. Program dibawah ini menggabarkan proses pendefinisian variable dan pemasukan data pada variable
anggota dari struct titik.
Contoh 9.1
#include <stdio.h>
#include <conio.h>
struct titik
{
int x;
int y;
};
main()
{
struct titik tk;
int a, b;
tk.x=2;
tk.y=3;
a =4;
b = 5;
printf("%d %d",tk.x,tk.y);
printf("%d %d",a,b);
getch();
}

Contoh 9.1 mendemonstrasikan Operator titik ( . ) yaitu merupakan operator yang digunakan untuk
mengakses variable anggota dari struct sebagai contoh tk.x berarti bahwa variable tk akan mengakses
variable anggota x yang terdapat pada struct titik. Dalam program tersebut juga disertakan cara inisialisasi
yang biasa dilakukan pada variable a dan b yang dideklarasikan pada fungsi main().
Contoh 9.2
#include <stdio.h>
#include <conio.h>
main()
{
struct

2
{
int a;
int b;
} x, y;
x.a = 10;
y = x; /* assign one structure to another */
printf("%d", y.a);
getch();
}
Contoh 9.3
#include <stdio.h>
#include <conio.h>
main()
{
/* Structure declaration */
struct horse
{
int age;
int height;
char name[20];
char father[20];
char mother[20];
};
struct horse My_first_horse; /* Structure variable declaration */
/* Initialize the structure variable from input data */
printf("Enter the name of the horse: " );
scanf("%s", My_first_horse.name ); /* Read the horse's name */
printf("How old is %s? ", My_first_horse.name );
scanf("%d", &My_first_horse.age ); /* Read the horse's age */
printf("How high is %s ( in hands )? ", My_first_horse.name );
scanf("%d", &My_first_horse.height ); /* Read the horse's height */
printf("Who is %s's father? ", My_first_horse.name );
scanf("%s", My_first_horse.father ); /* Get the father's name */
printf("Who is %s's mother? ", My_first_horse.name );
scanf("%s", My_first_horse.mother ); /* Get the mother's name */
/* Now tell them what we know */
printf("n%s is %d years old, %d hands high,",
My_first_horse.name, My_first_horse.age, My_first_horse.height);
printf(" and has %s and %s as parents.n", My_first_horse.father,
My_first_horse.mother );
getch();
}

3

Weitere ähnliche Inhalte

Was ist angesagt? (15)

alpro Chapter04
alpro Chapter04alpro Chapter04
alpro Chapter04
 
Pengenalan pascal asli
Pengenalan pascal asliPengenalan pascal asli
Pengenalan pascal asli
 
C++ lengkap
C++ lengkap C++ lengkap
C++ lengkap
 
Algoritma dan Pemprograman Komputer I
Algoritma dan Pemprograman Komputer IAlgoritma dan Pemprograman Komputer I
Algoritma dan Pemprograman Komputer I
 
Alpro referensi
Alpro referensiAlpro referensi
Alpro referensi
 
2 konsep dasar pascal
2   konsep dasar pascal2   konsep dasar pascal
2 konsep dasar pascal
 
Bahasa fortran dasar
Bahasa fortran dasarBahasa fortran dasar
Bahasa fortran dasar
 
Laporan Praktikum Algoritma Pemrograman Modul II
Laporan Praktikum Algoritma Pemrograman Modul IILaporan Praktikum Algoritma Pemrograman Modul II
Laporan Praktikum Algoritma Pemrograman Modul II
 
pengenalan c+
pengenalan c+pengenalan c+
pengenalan c+
 
Dasar pemrograman basic
Dasar pemrograman basicDasar pemrograman basic
Dasar pemrograman basic
 
Laporan Praktikum Algoritma
Laporan Praktikum AlgoritmaLaporan Praktikum Algoritma
Laporan Praktikum Algoritma
 
Modul 2 variabel, tipe data dan operator
Modul 2   variabel, tipe data dan operatorModul 2   variabel, tipe data dan operator
Modul 2 variabel, tipe data dan operator
 
02 01-elemen
02 01-elemen02 01-elemen
02 01-elemen
 
modul algoritma Bab 4
modul algoritma Bab 4modul algoritma Bab 4
modul algoritma Bab 4
 
Tipe Data pada Bahasa Java
Tipe Data pada Bahasa JavaTipe Data pada Bahasa Java
Tipe Data pada Bahasa Java
 

Ähnlich wie Alpro tutor

90594480 bab-4-larik-array-fotran
90594480 bab-4-larik-array-fotran90594480 bab-4-larik-array-fotran
90594480 bab-4-larik-array-fotran
mocoz
 
Modul2-Tipe-data-identifier-dan-operator-02.pdf
Modul2-Tipe-data-identifier-dan-operator-02.pdfModul2-Tipe-data-identifier-dan-operator-02.pdf
Modul2-Tipe-data-identifier-dan-operator-02.pdf
Valentino Selayan
 
Pengenalan pascal
Pengenalan pascalPengenalan pascal
Pengenalan pascal
fhnx
 
3tipe data
3tipe data3tipe data
3tipe data
fardye
 
Awal dasar belajar c++
Awal dasar belajar c++Awal dasar belajar c++
Awal dasar belajar c++
farizky berian
 
Modul pemrograman pascal toki smansasoo
Modul pemrograman pascal toki smansasooModul pemrograman pascal toki smansasoo
Modul pemrograman pascal toki smansasoo
indahshafira
 
pemrograman-dasar-cpp_02-variabel-tipe-data.pdf
pemrograman-dasar-cpp_02-variabel-tipe-data.pdfpemrograman-dasar-cpp_02-variabel-tipe-data.pdf
pemrograman-dasar-cpp_02-variabel-tipe-data.pdf
FahriAkbar19
 

Ähnlich wie Alpro tutor (20)

Algoritma Pemrograman - Variabel, Konstanta & Tipe Data
Algoritma Pemrograman - Variabel, Konstanta & Tipe DataAlgoritma Pemrograman - Variabel, Konstanta & Tipe Data
Algoritma Pemrograman - Variabel, Konstanta & Tipe Data
 
TIPE DATA PEMROGRAMAN.pptx
TIPE DATA PEMROGRAMAN.pptxTIPE DATA PEMROGRAMAN.pptx
TIPE DATA PEMROGRAMAN.pptx
 
BAB II ISI MAKALAH REPRESENTASI DATA
BAB II ISI MAKALAH REPRESENTASI DATABAB II ISI MAKALAH REPRESENTASI DATA
BAB II ISI MAKALAH REPRESENTASI DATA
 
Modul algoritma dan pemograman
Modul algoritma dan pemogramanModul algoritma dan pemograman
Modul algoritma dan pemograman
 
90594480 bab-4-larik-array-fotran
90594480 bab-4-larik-array-fotran90594480 bab-4-larik-array-fotran
90594480 bab-4-larik-array-fotran
 
Modul2-Tipe-data-identifier-dan-operator-02.pdf
Modul2-Tipe-data-identifier-dan-operator-02.pdfModul2-Tipe-data-identifier-dan-operator-02.pdf
Modul2-Tipe-data-identifier-dan-operator-02.pdf
 
Algoritma dan Pemrograman
Algoritma dan PemrogramanAlgoritma dan Pemrograman
Algoritma dan Pemrograman
 
Bahasa Pemrograman C++
Bahasa Pemrograman C++Bahasa Pemrograman C++
Bahasa Pemrograman C++
 
Pengenalan pascal
Pengenalan pascalPengenalan pascal
Pengenalan pascal
 
m01-struktur-dasar-c.ppt
m01-struktur-dasar-c.pptm01-struktur-dasar-c.ppt
m01-struktur-dasar-c.ppt
 
Minggu 4 - Notasi Pseudocode.pptx
Minggu 4 - Notasi Pseudocode.pptxMinggu 4 - Notasi Pseudocode.pptx
Minggu 4 - Notasi Pseudocode.pptx
 
C++
C++C++
C++
 
Teknik kompilasi
Teknik kompilasiTeknik kompilasi
Teknik kompilasi
 
3tipe data
3tipe data3tipe data
3tipe data
 
Modul08 a
Modul08 aModul08 a
Modul08 a
 
Awal dasar belajar c++
Awal dasar belajar c++Awal dasar belajar c++
Awal dasar belajar c++
 
Resume praktikum 3__pointer
Resume praktikum 3__pointerResume praktikum 3__pointer
Resume praktikum 3__pointer
 
Modul pemrograman pascal toki smansasoo
Modul pemrograman pascal toki smansasooModul pemrograman pascal toki smansasoo
Modul pemrograman pascal toki smansasoo
 
pemrograman-dasar-cpp_02-variabel-tipe-data.pdf
pemrograman-dasar-cpp_02-variabel-tipe-data.pdfpemrograman-dasar-cpp_02-variabel-tipe-data.pdf
pemrograman-dasar-cpp_02-variabel-tipe-data.pdf
 
Materi ap#2
Materi ap#2Materi ap#2
Materi ap#2
 

Mehr von Roziq Bahtiar

7. pemrograman struktur
7. pemrograman struktur7. pemrograman struktur
7. pemrograman struktur
Roziq Bahtiar
 
6. pemrograman pointer
6. pemrograman pointer6. pemrograman pointer
6. pemrograman pointer
Roziq Bahtiar
 
5. pemrograman array dan_string
5. pemrograman array dan_string5. pemrograman array dan_string
5. pemrograman array dan_string
Roziq Bahtiar
 
4. pemrograman fungsi
4. pemrograman fungsi4. pemrograman fungsi
4. pemrograman fungsi
Roziq Bahtiar
 
2. teknik pemilihan dalam_pemrograman
2. teknik pemilihan dalam_pemrograman2. teknik pemilihan dalam_pemrograman
2. teknik pemilihan dalam_pemrograman
Roziq Bahtiar
 
1. variable identifier dan_tipe_data
1. variable identifier dan_tipe_data1. variable identifier dan_tipe_data
1. variable identifier dan_tipe_data
Roziq Bahtiar
 

Mehr von Roziq Bahtiar (20)

Techarea company profile
Techarea company profileTecharea company profile
Techarea company profile
 
static and dynamic routing
static and dynamic routingstatic and dynamic routing
static and dynamic routing
 
Perintah perintah dasar linux Operating Sistem
Perintah perintah dasar linux Operating SistemPerintah perintah dasar linux Operating Sistem
Perintah perintah dasar linux Operating Sistem
 
Pengantar algoritma pemrograman
Pengantar algoritma pemrogramanPengantar algoritma pemrograman
Pengantar algoritma pemrograman
 
Flowchart progrm linear bilangan bulat
Flowchart progrm linear bilangan bulatFlowchart progrm linear bilangan bulat
Flowchart progrm linear bilangan bulat
 
Tarby magazine salafiyah kajen
Tarby magazine  salafiyah kajenTarby magazine  salafiyah kajen
Tarby magazine salafiyah kajen
 
Pcd 10
Pcd 10Pcd 10
Pcd 10
 
Pcd 11
Pcd 11Pcd 11
Pcd 11
 
7. pemrograman struktur
7. pemrograman struktur7. pemrograman struktur
7. pemrograman struktur
 
6. pemrograman pointer
6. pemrograman pointer6. pemrograman pointer
6. pemrograman pointer
 
5. pemrograman array dan_string
5. pemrograman array dan_string5. pemrograman array dan_string
5. pemrograman array dan_string
 
4. pemrograman fungsi
4. pemrograman fungsi4. pemrograman fungsi
4. pemrograman fungsi
 
3. teknik looping dalam_pemrograman
3. teknik looping dalam_pemrograman3. teknik looping dalam_pemrograman
3. teknik looping dalam_pemrograman
 
2. teknik pemilihan dalam_pemrograman
2. teknik pemilihan dalam_pemrograman2. teknik pemilihan dalam_pemrograman
2. teknik pemilihan dalam_pemrograman
 
1. variable identifier dan_tipe_data
1. variable identifier dan_tipe_data1. variable identifier dan_tipe_data
1. variable identifier dan_tipe_data
 
Pcd 7
Pcd 7Pcd 7
Pcd 7
 
Pcd 5
Pcd 5Pcd 5
Pcd 5
 
Pcd 4
Pcd 4Pcd 4
Pcd 4
 
Eigen
EigenEigen
Eigen
 
3 piksel_dan_histogram
 3 piksel_dan_histogram 3 piksel_dan_histogram
3 piksel_dan_histogram
 

Kürzlich hochgeladen

Latsol TWK Nasionalisme untuk masuk CPNS
Latsol TWK Nasionalisme untuk masuk CPNSLatsol TWK Nasionalisme untuk masuk CPNS
Latsol TWK Nasionalisme untuk masuk CPNS
dheaprs
 
Bab 7 - Perilaku Ekonomi dan Kesejahteraan Sosial.pptx
Bab 7 - Perilaku Ekonomi dan Kesejahteraan Sosial.pptxBab 7 - Perilaku Ekonomi dan Kesejahteraan Sosial.pptx
Bab 7 - Perilaku Ekonomi dan Kesejahteraan Sosial.pptx
ssuser35630b
 
aksi nyata penyebaran pemahaman merdeka belajar
aksi nyata penyebaran pemahaman merdeka belajaraksi nyata penyebaran pemahaman merdeka belajar
aksi nyata penyebaran pemahaman merdeka belajar
HafidRanggasi
 

Kürzlich hochgeladen (20)

CAPACITY BUILDING Materi Saat di Lokakarya 7
CAPACITY BUILDING Materi Saat di Lokakarya 7CAPACITY BUILDING Materi Saat di Lokakarya 7
CAPACITY BUILDING Materi Saat di Lokakarya 7
 
vIDEO kelayakan berita untuk mahasiswa.ppsx
vIDEO kelayakan berita untuk mahasiswa.ppsxvIDEO kelayakan berita untuk mahasiswa.ppsx
vIDEO kelayakan berita untuk mahasiswa.ppsx
 
MATEMATIKA EKONOMI MATERI ANUITAS DAN NILAI ANUITAS
MATEMATIKA EKONOMI MATERI ANUITAS DAN NILAI ANUITASMATEMATIKA EKONOMI MATERI ANUITAS DAN NILAI ANUITAS
MATEMATIKA EKONOMI MATERI ANUITAS DAN NILAI ANUITAS
 
POWER POINT MODUL 1 PEBI4223 (PENDIDIKAN LINGKUNGAN HIDUP)
POWER POINT MODUL 1 PEBI4223 (PENDIDIKAN LINGKUNGAN HIDUP)POWER POINT MODUL 1 PEBI4223 (PENDIDIKAN LINGKUNGAN HIDUP)
POWER POINT MODUL 1 PEBI4223 (PENDIDIKAN LINGKUNGAN HIDUP)
 
Latsol TWK Nasionalisme untuk masuk CPNS
Latsol TWK Nasionalisme untuk masuk CPNSLatsol TWK Nasionalisme untuk masuk CPNS
Latsol TWK Nasionalisme untuk masuk CPNS
 
REFLEKSI MANDIRI_Prakarsa Perubahan BAGJA Modul 1.3.pdf
REFLEKSI MANDIRI_Prakarsa Perubahan BAGJA Modul 1.3.pdfREFLEKSI MANDIRI_Prakarsa Perubahan BAGJA Modul 1.3.pdf
REFLEKSI MANDIRI_Prakarsa Perubahan BAGJA Modul 1.3.pdf
 
PEMANASAN GLOBAL - MATERI KELAS X MA.pptx
PEMANASAN GLOBAL - MATERI KELAS X MA.pptxPEMANASAN GLOBAL - MATERI KELAS X MA.pptx
PEMANASAN GLOBAL - MATERI KELAS X MA.pptx
 
(NEW) Template Presentasi UGM 2 (2).pptx
(NEW) Template Presentasi UGM 2 (2).pptx(NEW) Template Presentasi UGM 2 (2).pptx
(NEW) Template Presentasi UGM 2 (2).pptx
 
ppt-modul-6-pend-seni-di sd kelompok 2 ppt
ppt-modul-6-pend-seni-di sd kelompok 2 pptppt-modul-6-pend-seni-di sd kelompok 2 ppt
ppt-modul-6-pend-seni-di sd kelompok 2 ppt
 
Bab 7 - Perilaku Ekonomi dan Kesejahteraan Sosial.pptx
Bab 7 - Perilaku Ekonomi dan Kesejahteraan Sosial.pptxBab 7 - Perilaku Ekonomi dan Kesejahteraan Sosial.pptx
Bab 7 - Perilaku Ekonomi dan Kesejahteraan Sosial.pptx
 
Modul Ajar Pendidikan Pancasila Kelas 5 Fase C
Modul Ajar Pendidikan Pancasila Kelas 5 Fase CModul Ajar Pendidikan Pancasila Kelas 5 Fase C
Modul Ajar Pendidikan Pancasila Kelas 5 Fase C
 
PELAKSANAAN + Link-Link MATERI Training_ "Effective INVENTORY & WAREHOUSING M...
PELAKSANAAN + Link-Link MATERI Training_ "Effective INVENTORY & WAREHOUSING M...PELAKSANAAN + Link-Link MATERI Training_ "Effective INVENTORY & WAREHOUSING M...
PELAKSANAAN + Link-Link MATERI Training_ "Effective INVENTORY & WAREHOUSING M...
 
PPT Penjumlahan Bersusun Kelas 1 Sekolah Dasar
PPT Penjumlahan Bersusun Kelas 1 Sekolah DasarPPT Penjumlahan Bersusun Kelas 1 Sekolah Dasar
PPT Penjumlahan Bersusun Kelas 1 Sekolah Dasar
 
UT PGSD PDGK4103 MODUL 2 STRUKTUR TUBUH Pada Makhluk Hidup
UT PGSD PDGK4103 MODUL 2 STRUKTUR TUBUH Pada Makhluk HidupUT PGSD PDGK4103 MODUL 2 STRUKTUR TUBUH Pada Makhluk Hidup
UT PGSD PDGK4103 MODUL 2 STRUKTUR TUBUH Pada Makhluk Hidup
 
Sosialisasi PPDB SulSel tahun 2024 di Sulawesi Selatan
Sosialisasi PPDB SulSel tahun 2024 di Sulawesi SelatanSosialisasi PPDB SulSel tahun 2024 di Sulawesi Selatan
Sosialisasi PPDB SulSel tahun 2024 di Sulawesi Selatan
 
RENCANA + Link2 Materi Pelatihan/BimTek "PTK 007 Rev-5 Thn 2023 (PENGADAAN) &...
RENCANA + Link2 Materi Pelatihan/BimTek "PTK 007 Rev-5 Thn 2023 (PENGADAAN) &...RENCANA + Link2 Materi Pelatihan/BimTek "PTK 007 Rev-5 Thn 2023 (PENGADAAN) &...
RENCANA + Link2 Materi Pelatihan/BimTek "PTK 007 Rev-5 Thn 2023 (PENGADAAN) &...
 
aksi nyata penyebaran pemahaman merdeka belajar
aksi nyata penyebaran pemahaman merdeka belajaraksi nyata penyebaran pemahaman merdeka belajar
aksi nyata penyebaran pemahaman merdeka belajar
 
MAKALAH KELOMPOK 7 ADMINISTRASI LAYANAN KHUSUS.pdf
MAKALAH KELOMPOK 7 ADMINISTRASI LAYANAN KHUSUS.pdfMAKALAH KELOMPOK 7 ADMINISTRASI LAYANAN KHUSUS.pdf
MAKALAH KELOMPOK 7 ADMINISTRASI LAYANAN KHUSUS.pdf
 
Keterampilan menyimak kelas bawah tugas UT
Keterampilan menyimak kelas bawah tugas UTKeterampilan menyimak kelas bawah tugas UT
Keterampilan menyimak kelas bawah tugas UT
 
PERAN PERAWAT DALAM PEMERIKSAAN PENUNJANG.pptx
PERAN PERAWAT DALAM PEMERIKSAAN PENUNJANG.pptxPERAN PERAWAT DALAM PEMERIKSAAN PENUNJANG.pptx
PERAN PERAWAT DALAM PEMERIKSAAN PENUNJANG.pptx
 

Alpro tutor

  • 1. BAB III VARIABEL, IDENTIFIER DAN TIPE DATA Pertemuan Minggu III Alokasi Waktu : 2 Jam Pertemuan Standar Kompetensi : Mahasiswa dapat membuat program komputer sederhana dengan menggunakan bahasa C Kompetensi Dasar : Memahami penamaan variabel dan macam-macam tipe data, operator dalam bahasa C Indikator : Mahasiswa dapat memahami konsep variabel dalam bahasa C. Mahasiswa memahami berbagai macam tipe data dalam bahasa C 1.1. IDENTIFIER Semua angka dan huruf yang digunakan dalam program komputer disimpan didalam unit memori. Secara konseptual, lokasi memori didalam unit memori dianalogikan seperti kamar-kamar yang terdapat dalam sebuah hotel. Layaknya kamar hotel setiap memori dalam unit memori memiliki nomor kamar yang berbeda antara satu dengan yang lain. Sebelum muculnya bahasa pemrograman tingkat tinggi seperti C, lokasi memori secara individu di ketahui dari alamatnya, sebagai contoh untuk menyimpan nilai integer 10 dan 100 dalam unit memori di simpan dalam alamat memori 1652 dan 2548. dari ilustrasi diatas maka muncul suatu algoritma untuk menginisialiasai nilai tersebut di dalam unit memori sebagai berikut : Letakkan nilai 100 pada lokasi memori 2548 Letakkan nilai 10 pada lokasi memori 1652 10 10 Gambar 3.1 Penempatan Nilai pada Memori Komputer 165 254 Dalam bahasa tingkat tinggi penempatan suatu nilai dalam alamat memori tertentu diwakili oleh sebuah nama yang diambil dari bahasa alami. Penamaan simbol yang mewakili alamat memori disebut sebagai variabel. Menganalogikan dengan sebuah komplek perumahan, konsep variabel ini serupa dengan pemasangan papan nama pemiliki rumah nomor sekian. Dalam kehidupan sehari-hari penunjukan sebuah rumah akan lebih mudah dengan menunjuk nama pemiliknya misalnya rumah Bapak Hadi atau rumah Bapak Eko dari pada menyebutkan nomor rumahnya misalnya rumah nomor 365A atau rumah noor 101B. Dengan menggunakan variabel ini maka proses penyimpanan nilai 10 dan 100 di dalam unit memori menjadi sebagai berikut: N1 = 10 N2 = 100 1
  • 2. N1 dan N2 adalah nama variabel yang diberikan oleh programer untuk menyinpan nilai 10 dan 100 ke dalam memori yang lokasinya berada pada 1652 dan 2548. Dengan konsep penamaan ini maka seorang programer tidak perlu tahu dimana tepatnya nilai-nilai tersebut disimpan, seorang programer hanya perlu untuk mengetahui tentang nama-nama yang sudah di deklarasikan untuk digunakan pada saat pengembangan program selanjutnya. Analogi dalam bahasa matematika seperti x = y + z. x, y, dan z adalah nama-nama yang diberikan untuk mewakili nilai tertentu yang diwakilinya. Identifier (Pengenal) merupakan nama yang biasa digunakan untuk suatu peubah (variable), konstanta, fungsi, atau obyek lain yang didefinisikan oleh pemrogram. Ketika menggunakan identifier dalam program, perlu identifikasi awal untuk masing-masing variabel tersebut. Aturan yang berlaku untuk penamaan identifier adalah:  Pengenal harus diawali dengan huruf (A .. Z, a .. z) atau karakter garis bawah ( _ ).  Selanjutnya dapat berupa huruf, angka (0 .. 9), karakter garis bawah, atau simbol seperti dolar ($), %, dll.  Pengenal tidak boleh mengandung spasi  Panjang pengenal boleh terdiri lebih dari 32 karakter, akan tetapi hanya 32 karakter pertama yang dianggap berarti.  Contoh: Jumlah jumlah nilai2 total_per_bulan harga_jual$ Karakter garis-bawah biasa digunakan untuk memudahkan pembacaan terhadap suatu pengenal, terutama yang terdiri lebih dari satu kata, karena nama suatu pengenal tidak boleh dipisahkan spasi. Untuk menghindari kesalahan, pengenal tidak boleh menggunakan nama yang tergolong sebagai kata kunci (seperti main), dan sebaiknya tidak menggunakan pengenal yang digunakan untuk nama fungsi, konstanta, variabel atau obyek lain yang digunakan oleh pustaka-pustaka bahasa pemrograman. Contoh idenfier yang dijadaikan pustaka oleh bahasa pemrograman C. Tabel 3.1 Contoh pustaka C No Bahasa C 1 Case 2 Enum 3 Class 4 Const 5 Catch 1.2. PEUBAH (VARIABLE) Peubah atau variabel dalam program digunakan untuk menyimpan suatu nilai, dan nilai yang ada padanya dapat diubah-ubah selama eksekusi program berlangsung. Peubah yang akan digunakan dalam program harus dideklarasikan terlebih dahulu. Pengertian deklarasi disini berarti memesan memori dan menentukan jenis data yang dapat disimpan di dalamnya. Bentuk umum pendeklarasian suatu peubah adalah: tipe nama_peubah; 2
  • 3. Pada pendeklarasian peubah, daftar-peubah dapat berupa sebuah peubah atau beberapa peubah yang dipisahkan dengan tanda koma, contoh: int jumlah; float harga_per_satuan, total_harga; Pernyataan deklarasi yang pertama menyatakan bahwa jumlah adalah nama peubah/vaiabel dan tipe dari perubah terseut adaah int (integer = digunakan untuk menyimpan bilangan bulat), sedangkan pernyataan kedua menyatakan bahwa harga_per_satuan dan total_harga adalah nama peubah yang bertipe float (untuk menyimpan bilangan pecahan), tanda koma (,) diperuntukan sebagai pemisah anatar peubah. Pendeklarasian peubah dalam baris ke dua di atas dapat dideklarasikan menjadi sebagai berikut: float harga_per_satuan; float total_harga; 1.3. TIPE DATA Pada umumnya, program komputer bekerja dengan memanipulasi obyek (data di dalam memori. Obyek akan diprogram bermacam-macam jenis atau tipenya, misalnya nilai numeric, karakter, string, dan rekaman (record). Suatu tipe menyatakan pola penyajian data dalam komputer. tipe data dikelompokan menjadi dua macam. Tipe dasar dan tipe bentukan. Tipe dasar adalah tipe yang dapat langsung dipakai, sedangkan tipe bentukan dibentuk dari tipe dasar atau dari tipe bentukan lain yang sudah didefinisikan. (Munir:2001) 1.3.1. Tipe Dasar Dalam dunia pemrograman yang termasuk tipe dasar adalah: bilangan logika, bilangan bulat, bilangan riil, dan karakter. Bilangan Logika Bilangan logika dinyatakan dalam bentuk angka biner yaitu 1 dan 0. bilangan ini kemudian diterjemahkan kedalam bahasa pemrograman 1 jika pernyataan tersebut bernilai benar (true) dan 0 jika pernyataan tersebut bernilai salah (false). Dalam pemrograman tipe untuk menyatakan bilangan logika dinyatakan dengan boolean. Jika a dan b adalah suatu peubah (variabel) yang bertipe boolean, maka hasil operasi a dan b dengan operator boolean tersebut diberikan oleh tabel kebenaran berikut Tabel 3.2. Hasil Operasil dari Tipe Data Bolean No A B A and b A or b 1 True True True True 2 False True False True 3 True False False True 4 False False False False Bilangan Bulat Bilangan bulat adalah bilangan yang tidak mengandung pecahan desimal, seperti 1, 2, 5, 78, 445, -87, dan sebagainya. tipe untuk menyatakan bilangan bulat dinyatakan dengan integer (int). Rentang nilai tipe data integer adalah dari minus tak hingga sampai plus tak hingga. Akan tetapi dalam implementasinya tipe ini mempunyai keterbatasan digit bilangan. Ketika suatu data diimplementasikan bertipe integer maka data tersebut tidak boleh mengandung bilangan pecahan. 3
  • 4. Pada kompilator Turbo Pascal tipe integer dapat direpresentasian ke dalam 4 macam tipe, yaitu byte, shortint, word, integer, dan longint. Tabel 3.3. Daftar variasi tipe bilangan bulat (integer) No Tipe Rentang Nilai Format 1 Byte 0 . . . 255 Unsigned 8 bit 2 Shortint -128 . . . 127 Signed 8 bit 3 Word 0 . . . 65535 Unsigned 16 bit 4 Integer -23768 . . . 32767 Signed 16 bit 5 Longint -2147483648 . . . 2147483647 Signed 32 bit Sebagai contoh, dua buah peubah X dan Y masing-masing didefinisikan bertipe byte dan integer dalam Pascal. Var X : byte Y : integer Sebagai konsekuensi pendifinisian tipe X dan Y, maka peubah X tidak dapat dioperasikan untuk nilainilai diatas 255 atau dibawah 0. begitu juga peubah Y tidak dapat bekerja pada nilai-nilai diatas 32767. Bilangan Riil Bilangan riil adalah bilangan yang mengandung nlai pecahan, misalnya 3,56 , 100,6 , 100 E-6 dan sebagainya. Tipe untuk menyatakan bilangan riil dinyatakan dengan real untuk bahasa pascal dan float untuk bahasa C. Sebagai contoh pada kompilator turbo pascal bilangan riil direpresentasikan dengan 4 macam tipe yaitu real, single, double, dan extended. Tabel 3.4. Daftar variasi tipe bilangan floating point (float) No Tipe 1 Real 2 Single 3 Double 4 Extended Rentang Nilai Format 18 6 byte 1.5 x 10-45 . . . 3.4 x 1038 4 byte 2.9 x 10 5.0 x 10 -39 . . . 1.7 x 10 -324 308 . . . 1.7 x 10 3.4 x 10-4932... 1.1 x 104932 8 byte 10 byte Karakter Karakter adalah huruf alfabet, tanda baca, simbol, dan angka. Tipe untuk menyatakan karakter dengan char. Tetapan untuk data bertipe karakter harus diapit oleh tanda petik tunggal contoh, ’h’, ’Y’, dan sebagainya, ’9’ adalah karakter akan tetapi 9 adalah bertipe integer atau riil. 1.3.2. Tipe Bentukan Tipe bentukan adalah tipe yang didefinisikan sendiri oleh programmer. Tipe bentukan disusun oleh satu oleh lebih tipe dasar. Tipe bentukan diantaranya String dan Rekaman (record) String String adalah deretan karakter dengan panjang deretan yang tertentu jumlahnya. Contohnya ’Jurusan Teknik Elektro’, ’G 2345 HB’. Tipe untuk menyatakan string adalah string atau char [ .. .]. 4
  • 5. Rekaman Rekaman disusun oleh satu atau lebih field. Tiap field menyimpan data dari tipe dasar tertentu atau dari tipe bentukan lain yang sudah didefinisikan sebelumnya. Nama rekaman idefinisika oleh programmer sendiri. Tipe untuk menyatakan rekaman adalah record atau typedef. Contoh pendefinisian rekaman dalam bahasa pascal Type matakuliah : record < Kode_MK : string, Nama_MK : string, Nilai : char > Contoh pendefinisian rekaman dalam bahasa C Typedef struct { int NIM; char nama[25]; int Nilai; } Mahasiswa; Penggunaan berbagai macam tipe data Contoh 3.1 #include <stdio.h> #include <conio.h> main( ) { int a = 3; int b = 3; int c = a + b; printf (“Hasil dari penjumlahan antara a dan b adalah : %d”,c); } Pada program 3.1 semua data direpresentasikan dengan tipe integer. Variable yang bertipe integer hanya dapat menampung data dalam bentuk bilangan bulat, jika variable tersebut di berikan nilai 3.5 maka nilai decimal dibelangan angka 3 yaitu 0.5 tidak akan pernah diperhitungkan. Coba saja???. Contoh 3.2 #include <stdio.h> #include <conio.h> main( ) { float n1 = 2.5; int n2 = 2; float n3 = n1 * n2; printf (“Hasil dari perkalian antara n1 dan n2 adalah : %f”,n3); } Pada program 3.2 variabel – variablenya menggunakan tipe data integer dan float. N1 bertipe float, dengan tipe data ini maka varibel tersebut dapat menampung nilai decimal. N3 juga bernilai float, dengan memberikan tipe data float pada n3 maka hasil perkalian antara n1 dan n2 dapat menghasilkan nilai yang tepat, jika n3 diberi tipe integer kira-kira apa yang dihasilkan???. Contoh 3.3 #include <stdio.h> #include <conio.h> main( ) { 5
  • 6. printf(“Nama siswa : %sn, “Feddy”); printf(“NIM : %dn”, 10029); printf(“Nilai : %f Predikat : %cn”, 86.6, ‘A’); } Program 3.3 mendemonstrasikan penggunaan berbagai macam tipe data yang digunakan secara bersamaan dalam sebuah program, perlu dijadikan perhatian khusus setiap tipe data mempunyai symbol masing-masing dimana data tersebut akan ditampilkan sesuai dengan tipe datanya. Int (integer)  %d Float (floating point)  %f Char (character)  %c dsb…….. 1.4. OPERATOR DAN FUNGSI MATEMATIKA Mengenal operator dan fungsi matematika dalam memahami konsep pemrograman terstruktur merupakan hal mendasar dalam memahami konsep pemrograman secara keseluruhan. Beberapa buku pemrograman akan mengawali contoh programnya dengan membuat program Hello World atau dengan program aritmatika sederhana. Berikut daftar operator aritmatika yang digunakan dalam pemrograman bahasa C Tabel 3.5. Simbol Operator Aritmatika dalam C Simbol Arti + Penambahan - Pengurangan * Perkalian / Pembagian % Sisa Hasil Bagi (Modulus) ++ Increment -- Decrement Beberapa operasi matematika yang agak komplek oleh C dibuatkan beberapa fungsi sehingga pengguna tinggal memanfaatkan fungsi tersebut dalam pemerograman, beberapa fungsi matematika yang disediakan oleh C : Tabel 3.6 Fungsi matematika yang disediakan C Fungsi Arti Pow() Fungsi untuk kuadrat Abs() Fungsi untuk mendapatkan nilai absolut Log() Fungsi untuk mendapatkan nilai logaritma Sqrt() Fungsi untuk mendapatkan nilai akar kuadrat Sin() Fungsi untuk mendapatkan nilai Sinus Cos() Fungsi untuk mendapatkan nilai Cosinus 6
  • 7. Fungsi untuk mendapatkan nilai tangen Tan() Bentuk operator lain yang dikenal dalam pemrograman C adalah operator relasional dan operator logika. Operator relasional melambangkan hubungan antara dua entitas, Entitas tersebut bisa berupa variabel, konstanta maupun fungsi, Nilai dari kedua hubungan tersebut hanya bernilai dua yaitu TRUE atau FALSE. Adapun Operator operasional dalam pemrograman berbentuk sebagai berikut : Tabel 3.7. Simbol Operator Relasional yang digunakan dalam C Operator Arti > Lebih Besar >= Lebih Besar atau Sama Dengan < Lebih Kecil <= Lebih Kecil atau Sama Dengan == Sama Dengan != Tidak Sama Dengan Operator tersebut akan mempunyai dua nilai True atau False jika digunakan dalam operasi matematika, sebagai contoh 3 > 1 : True , 5 < 8 : True , 3==5 : False , 3!=5 : True Operator logika juga merupakan operator yang menyatakan kondisi True atau False dengan kondisi logika tertentu. Adapun operator lagika dalam pemrograman berbentuk sebagai berikut : Tabel 3.8. Simbol Operator Logika dalam C Operator Arti && Logika AND || Logika OR ! Logika NOT Pengayaan Latihan 3.1 #include <stdio.h> #include <conio.h> main() { int roti = 5; int kalori = 125; /* Calories per cookie */ int total_dimakan = 0; /* Total cookies eaten */ int dimakan = 2; /* Number to be eaten */ roti = roti - dimakan; /* Subtract number eaten from cookies */ total_dimakan = total_dimakan + dimakan; printf("nSay telah memakan %d roti. Terdapat %d roti yang tersisa",dimakan, roti); dimakan = 3; /* New value for cookies to be eaten */ roti = roti - dimakan; /* Subtract number eaten from cookies */ total_dimakan = total_dimakan + dimakan; printf("nSaya telah memakan %d. Sekarang terdapat %d roti yang tersisan",dimakan, roti); printf("nTotal energy yang dikonsusi adalah %d calories.n",total_dimakan*kalori); 7
  • 8. } Latihan 3.2 #include <stdio.h> #include <conio.h> main( ) { /* Menghitung volume silender */ float radius, height, volume; radius 2.5; height 16.0; volume 3.1416 * radius * radius * height; printf("n Volume silender tersebut adalah %f", volume); getch(); } Latihan 3.3 #include <stdio.h> main( { int sum; sum = 25; printf("nThe number stored in sum is %d.",sum); sum = sum + 10; printf (" nThe number now stored in sum is %d.", sum) ; getch(); } Latihan 3.4 #include <stdio.h> #include <conio.h> main( ) { clrscr(); printf(“ 3 < 5 bernilai : %dn”, 3 < 5); printf(“15 >= 3 * 5 bernilai : %dn”, 15 >= 3 * 5); printf(“ 8 = = 7bernilai : %dn”, 8= =7); printf(“11<=5+4 bernilai : %dn”, 11<=5+4); getch(); } Latihan 3.5 #include <stdio.h> #include <conio.h> main( ) { int x, y; x = 5; y = 2; printf("%d ", x/y); /* akan menampilkan angka 2 */ printf(''%d ", x%y); /* akan menampilkan angka 1, 1 adalah sisa dari hasil bagi*/ } 8
  • 9. Latihan 3.6 #include <stdio.h> #include <conio.h> main() { puts("LOGIKA AND"); printf("hasil AND dari 1 AND 1 = %dn",1 && 1); printf("hasil AND dari 1 AND 0 = %dn",1 && 0); printf("hasil AND dari 0 AND 1 = %dn",0 && 1); printf("hasil AND dari 0 AND 0 = %dn",0 && 0); printf("nn"); puts("LOGIKA OR"); printf("hasil OR dari 1 OR 1 = %dn",1 || 1); printf("hasil OR dari 1 OR 0 = %dn",1 || 0); printf("hasil OR dari 0 OR 1 = %dn",0 || 1); printf("hasil OR dari 0 OR 0 = %dn",0 || 0); getch(); } Latihan 3.7 #include <stdio.h> #include <conio.h> main(void) { float x, y, kuadrat, akar; x = 10; y = 9; kuadrat=pow(x); akar=sqrt(y); printf(“Hasil kuadrat dari 10 = %f”,kuadrat); printf(“Hasil akar kuadrat dari 9 = %f,akar); } 9
  • 10. BAB IV PROSES PEMILIHAN DALAM PEMROGRAMAN Pertemuan Minggu IV Alokasi Waktu : 4 Jam Pertemuan Standar Kompetensi : Mahasiswa dapat membuat program komputer sederhana dengan menggunakan bahasa C Kompetensi Dasar : Memahami program komputer yang mengandung unsur Pemilihan Indikator : Mahasiswa dapat memahami struktur pemrograman if, if else, nested if, swith case. : Mahasiswa dapat membuat program dengan melibatkan struktur pemilihan 1.1. STRUKTUR IF - ELSE Penyeleksian kondisi digunakan untuk mengarahkan perjalanan suatu proses. Penyeleksian kondisi dapat diibaratkan sebagai katup atau kran yang mengatur jalannya air. Bila katup terbuka maka air akan mengalir dan sebaliknya bila katup tertutup air tidak akan mengalir atau akan mengalir melalui tempat lain. Fungsi penyeleksian kondisi penting artinya dalam penyusunan bahasa C, terutama untuk program yang kompleks (Achmad Solichin) C menyediakan kata kunci if else untuk menyeleksi kondisi pernyataan, jika pernyataan tersebut bernilai benar atau sesuai dengan kondisi yang dinginkan maka pernyataan tersebut akan dijalankan. Sebaliknya jika penyataan yang di periksa tidak sesuai dengan kondisi maka pernyataan tersebut tidak dijalankan atau menjalankan penyataan yang lain. Hari ini Hujan? Gambar 4.1 Ya Diagram Alir Struktur Pemilihan Suatu Kondisi Tidak Pernyataan 1 Pernyataan 2 1. Pernyataan 1 : Membawa Payung 2. Pernyataan 2 : Berangkat Sekolah Pada gambar di atas peryataan tersbut mengisyaratkan bahwa Jika hari ini Hujan maka, Saya akan membawa payung dan akan berangkat sekolah Jika hari ini tidak hujan maka saya berangkat sekolah. Pernyataan tersebut mengisyaratkan ada sebuah kondisi yang harus di periksa sebelum melakukan aktivitas selanjutnya. Contoh lain dalam kehidupan sehari-hari dimana kita diharuskan memeriksa suatu kondisi tertentu unutk membuat keputusan selanjutnya. 1. Jika Andi mendapatkan nilai >= 70 maka Andi Lulus 1
  • 11. 2. Jika Andi mendapatkan nilai < 70 maka Andi tidak lulus Pernyataan tersebut di atas jika diterjemahkan dalam algoritma pemrograman menjadi If Nilai >= 70 --------- >(Ekspresi) Lulus ---------- >(Pernyataan 1) Else Tidak Lulus ---- >(Pernyataan 2) Dalam hal ini ekspresi yang pertama yaitu Apakah Nilai yang di periksa >= 70, jika Nilai yang di periksa semisal 80 maka pernyataan tersebut benar adanya maka pernyataan LULUS akan dieksekusi. Jika nilai yang diperiksa semisal 65 maka pernyataan Tidak Lulus akan dieksekusi. Pada contoh diatas blok program dari if else hanya di isi oleh masing-masing satu peryataan. Berikut merupakan struktur if else dengan pernyataan yang lebih dari satu If (Kondisi Pemilihan) --------- > (Ekspresi) { (Blok Pernyataan 1) } Else { (Blok Pernyataan 2) } Berikut adalah contoh algortima dengan melibatkan lebih dari satu pernyataan untuk tiap bloknya If Nilai >= 85 --------- >(Ekspresi) { Lulus ------ > (Blok Pernyataan 1) Dengan predikat sangat memuaskan } Else { Tidak Lulus ------ > (Blok Pernyataan 2) Mengulang Semester Depan } Program yang melibatkan suatu kondisi pemilihan juga dapat dibuat secara bertingkat, pemeriksaan kondisi bertingkat juga dapat dilakukan dengan melibatkan operator logika seperti operator AND (&&) dan operator OR ( | | ), sebagai contoh perhatikan pernyataan dibawah ini Jika Mahasiwa mempunyai nilai lebih dari atau sama dengan 85 Maka Mahasiswa tersebut mendapat nilai A Jika Mahasiswa mempunyai nilai antara 70 sampai 85 Maka Mahasiswa tersebut mendapat nilai B Jika Mahasiswa mempunyai nilai antara 60 sampai 70 Maka Mahasiswa tersebut mendapat nilai C Jika diperhatikan ada beberapa rentang nilai seperti 70 sampai 85, 60 sampai 70 yang harus di periksa untuk mendapatkan kesimpulan yang benar, berikut adalah algoritma untuk mengevaluasi pernyataan diatas if (nilai >= 85 ) { Nilai A } if else ( (nilai >= 70 ) && (nilai < 85) ) { Nilai B 2
  • 12. } if else ( (nilai >= 60 ) && (nilai < 07) ) { Nilai C } Contoh 4.1 #include <stdio.h> #include <conio.h> main() { int nilai; printf("Masukan Nilai Anda : "); scanf("%d",&nilai); if (nilai < 70) printf("Tidak Lulus"); else printf("Lulus"); getch(); } Pada contoh 4.1 memperlihatkan suatu pemilihan kondisi sederhana, yaitu hanya tersedia dua pilihan “Jika tidak ini maka itu”. Program pada contoh 4.1 akan menguji angka yang dimasukan oleh pengguna, masukan tersebut ditampung di dalam variable nilai. Pada tahap selanjutnya program akan menguji variable nilai, jika nilai mempunyai harga dibawah 70 maka dilayar computer akan muncul pernyataan “tidak lulus” akan tetapi jika anda memasukan angka diatas 70 maka dilayar computer akan muncul pernyataan “lulus”. Contoh 4.2 #include <stdio.h> #include <conio.h> main() { int hari; printf("Masukan Angka Untuk Mewakili Hari : "); scanf("%d",&hari); if (hari==1) { printf("Senin"); } if (hari==2) { printf("Selasa"); } if (hari==3) { printf("Rabu"); 3
  • 13. } if (hari==4) { printf("Kamis"); } getch(); } Pada contoh 4.2 program menyatakan struktur setiap if yang mempunyai blok program, setiap struktur if dipisahkan oleh pasangan tanda kurung kurawal. Program ini akan menyeleksi setiap angka yang pengguna masukan, ketika angka yang dimasukan sesuai dengan salah satu kondisi yang ada maka tulisan Senin, Selasa, dst akan ditampilkan pada layar computer. 1.2. STRUKTUR SWITCH - CASE Bahasa C juga menyediakan keyword Switch – Case untuk menyederhanakan pemrograman if else. Keyword ini menjadikan struktur pemrograman if – else menjadi lebih mudah dalam melakukan pemilihan suatu kondisi. Berikut adalah bentuk umum dari sikntaks switch case switch (menu) { case 1: Anda Memilih menu Pertama Break case 2 : Anda Memilih menu kedua break case 3 : Anda Memilih menu ketiga break default : Pilihan Anda Salah } Pada pemrograman diatas keyword Switch Case mempunyai struktur pemilihan yang berpedoman pada jumlah case yang menjadi pemilihan. Berikut adalah contoh penggunaan dari switch case untuk melakukan proses pemilihan Contoh 4.3 #include <stdio.h> #include <conio.h> main() { int menu; clrscr(); puts("Menu Menghitung Luas Bangunn"); puts("1. Luas Bangun Persegi Panjangn"); puts("2. Luas Bangun Lingkarann"); puts("3. Luas Bangun Segitigan"); puts("4. Keluar Program.....n"); printf("Masukan Angka (1-3) untuk memilih menu : "); scanf("%d", &menu); 4
  • 14. switch (menu) { case 1: printf("Program untuk break; case 2: printf("Program untuk break; case 3: printf("Program untuk break; case 4: printf("Keluar Program"); break; menghitung luas Persegi Panjang"); menghitung luas Lingkaran"); menghitung luas Lingkaran"); } getch(); } Program yang melibatkan suatu kondisi pemilihan juga dapat dibuat secara bertingkat atau yang lebih dikenal dengan istilah if else bersarang (nested). Gambar dibwah ini menunjukan diagram alir proses pengeksekusian blok pernyataan yang menggunakan if else bersarang. if(i) { if(j) Pernyataan_1(); if(k) Pernyataan_2(); else Pernyataan_3(); /* Kondisi else yang berhubungan dengan if(k) */ } else Pernyataan_4(); /* associated with if(i) */ Pemilihan_1? Tidak Ya Pernyataan 1 Gambar 4.2 Diagram Alir Struktur Pemilihan Suatu Kondisi Bersarang Ya Pemilihan_2? Pernyataan 4 Tidak Pernyataan 3 Pernyataan 2 Diagram Alir pemilihan kondisi bersarang tersebut menunjukan bahwa suatu kondisi mula-mula akan diperiksa pada pemilihan_1 jika bernilai benar maka pernyataan 1 akan dieksekusi, akan tetapi jika salah pernyataan 2 yang akan dieksekusi. Jika pemeriksaan pada kondisi pemilihan 1 bernilai benar maka kondisi tersebut juga akan diperiksa pada pemilihan 2, jika kondisi yang dipriksa bernilai benar maka 5
  • 15. pernyataan 3 akan dieksekusi apabila kondisi yang diperiksa bernilai salah maka penrnyataan 4 yang akan dieksekusi. Contoh 4.4 #include <stdio.h> #include <conio.h> main() { int nilai=75; if (nilai>=80) { printf("Lulusn"); if (nilai >=95) { printf("Anak Jenius"); } else { printf("Anak Pandai"); } } else { printf("Belum Lulusn"); printf("Mengulang Tahun depan"); } getch(); } Pengayaan Latihan 4.1 #include <stdio.h> #include <conio.h> main() { int mi, pasta, sikat, jml1, jml2, jml3, total; float bayar; puts("Harga Mi Instran Persatuan Rp. 800"); puts("Harga Pasta Gigi Persatuan Rp. 1000"); puts("Harga Sikat Gigi Persatuan Rp. 1500"); puts("Masukan jumlah yang barang yang ingin Anda beli"); puts("Bila tidak ingin membeli masukan angka nol (0)"); printf("Berapa jumlah Mi Instan Yang ingin Anda Beli : "); scanf("%d",&mi); printf("Berapa jumlah Pasta Gigi Yang ingin Anda Beli : "); scanf("%d",&pasta); printf("Berapa jumlah Sikat Gigi Yang ingin Anda Beli : "); scanf("%d",&sikat); jml1 = 800 * mi; 6
  • 16. jml2 = 1000 * pasta; jml3 = 1500 * sikat; total = jml1 + jml2 + jml3; if (total > 10000) { bayar = 0.9 * total; printf("Total Bayar = %.0f",bayar); } if (mi > 5) { bayar = total - 800; printf("Total Bayar = %.0f",bayar); } if (total > 10000) && (mi > 5) { bayar = (0.9 * total) - 800; printf("Total Bayar = %.0f",bayar); } getch(); } Latihan 4.2 #include <stdio.h> #include <conio.h> main() { int angka; printf("Masukan Sembarang Angka untuk di uji: "); scanf("%d",&angka); if(angka%2 == 0) { printf("nBilangan Yang Anda Masukan Angka Genap"); if((angka/2)%2 == 0) { printf("nHasil Bagi Dua dari bilangan tersebut juga Genap"); } else { printf("nHasil Bagi Dua dari bilangan tersebut Angka Ganjil"); } } else { printf("Bilangan Yang Anda Masukan Angka Ganjil"); } getch(); } Latihan 4.3 7
  • 17. #include <stdio.h> #include <conio.h> int main(void) { char letter = 0; /* Stores a character */ printf("Enter an uppercase letter:"); /* Prompt for input */ scanf("%c", &letter); /* Read a character */ if(letter >= 'A') /* Is it A or greater? */ if(letter <= 'Z') /* and is it Z or lower? */ { /* Jika yang Anda Masukan Huruf Besar */ letter = letter - 'A'+ 'a'; /* Convert from upper- to lowercase */ printf("You entered an uppercase %cn", letter); } else /* Jika yang Anda Masukan Huruf Kecil*/ printf("Try using the shift key, Bud! I want a capital letter.n"); getch(); } 8
  • 18. BAB V PROSES PENGULANGAN DALAM PEMROGRAMAN Pertemuan Minggu V dan VI Alokasi Waktu : 4 Jam Pertemuan Standar Kompetensi : Mahasiswa dapat membuat program komputer sederhana dengan menggunakan bahasa C Kompetensi Dasar : Memahami program komputer yang mengandung unsur Pengulangan (looping) Indikator : Mahasiswa dapat memahami struktur program bahasa C yang mengandung unsur do while, while do, for : Mahasiswa dapat membuat program dengan melibatkan struktur pengulangan Proses pengulangan pada suatu program merupakan salah satu kekuatan yang dimiliki ketika kita mengembangan suatu program komputer. Proses pengulangan merupakan suatu proses yang dilakukan oleh komputer secara berulang-ulang hingga kondisi yang diinginkan terpenuhi. Dalam beberapa buku proses pengulangan diistilahkan sebagai proses looping atau kalang. Bahasa C mempunyai tiga struktur untuk melakukan proses pengulangan yaitu struktur while do, do while, dan for. Pernyataan 1 Periksa Logika? Tidak Gambar 5.1 Diagram Alir Struktur Pengulangan (looping) Umum Ya Pernyataan 2 Tambahkan angka 1 untuk looping Pernyataan 3 Sebelum membahas lebih jauh tentang proses looping, terlebih dahulu akan dibahas mengenai operator decrement (--) dan operator increment (++). Operator decrement adalah operator dimana variabel yang dirujuk akan melakukan pengurangan secara otomatis satu angka untuk seitap kali proses looping. Operator increment adalah sebaliknya akan menambah angka satu pada variable yang dirujuk setiap kali proses looping. Pada pemakaiannya operator ini dapat dituliskan dibelakang ataupun di depan sebuah variabel yang dirujuk sebagai contoh Int i; i ++ , i-- penulisan setelah variabel ++ i , -- I penulisan sebelum variabel 1
  • 19. Penerapan kedua operator diatas akan dibahas lebih lanjut dalam penggunaannya dalam proses pengembagan program dengan melibatkan proses looping. Tiga struktur ini mempunyai karakteristik masing-masing, untuk struktur for dan while do proses pengulangan mengisyaratkan untuk mengevaluasi kondisi masukan terlebih dahulu kemudian baru menjalankan pernyataan yang sesuai dengan kondisi yang terpenuhi. Berikut adalah struktur umum dari for 1.1. LOOPING DENGAN MENGGUNAKAN STRUKTUR FOR for (batas awal ; batas akhir ; increment/decrement) { } Batas awal mengisyaratkan bahwa proses pengulangan dimulai pada angka 1, 2,atau 3, batas akhir mengisyaratkan batas atas dari suatu kondisi dimana proses pengulangan harus berhenti. increment/decrement adalah proses untuk melakukan penambahan/pengurangan satu demi satu saat melakukan proses pengulangan. Berikut adalah contoh penggunaan stuktur for dalam pemrograman Contoh 5.1. #include <stdio.h> #include <conio.h> main() { int digit; for (digit=1; digit<=10; digit++) { printf(“%d”n,digit); printf(“nSelesain”); } getch(); } Program diatas akan mengeluarkan output program sebagai berikut: 1 2 3 4 5 6 7 8 9 10 Selesai Looping for mengisyaratkan bahwa program akan menampilkan angka di layar monitor dengan dimulai dengan angka 1 melaui perintah digit=1, kemudian digit akan berangsur – angsur meningkat setiap kelipatan 1 melalui perintah digit++, sedangkan perintah digit<= 10 mengisyratkan kapan berakhirnya proses looping, dalam hal ini dinyatakan proses looping berhenti pada angka 10, karena angka yang lebih dari 10 yaitu 11 keatas mempunyai logika yang salah dari pernyataan digit <= 10. Kata Selesai akan di cetak pada layar 2
  • 20. monitor ketika logika program digit < = 10 bernilai salah yang berarti akan keluar dari proses looping. Kemdian program akan berlanjut secara sequence mengerjakan instruksi berikutnya yang dalam hal ini adalah intruksi printf(“nSelesain”), dimana perintah tersebut memerintahkan program untuk menampilkan kata Selesai dilayar monitor. Berikut adalah diagram alir dari contoh program diatas digit = 1 Digit <= 10 Tidak Ya Gambar 5.2 Diagram Alir Struktur Program Penulisan Angka 1 – 10 (looping) printf(“%d”n,digit); Tambahkan angka 1 ke variable digit untuk looping printf(“nSelesain”) ; Contoh 5.2. #include <stdio.h> #include <conio.h> main() { int jumlah, counter, i; jumlah = 0; printf("Masukan angka yang akan anda hitung jumlah deretnya : "); scanf("%d",&counter); for (i=1; i<=counter; i++) jumlah = jumlah + i; printf("Total Jumlah Deret = %d",jumlah); getch(); } Pada contoh 2 diatas program akan menghitung jumlah deret dari nilai yang dimasukan, semisal nilai yang dimasukan adalah 10 maka program akan melakukan proses penjumlahan yang berulang sebagai berikut; bertama variable jumlah bernilai 0, pada instruksi jumlah = jumlah + I menyatakan proses perhitungan sebagai berikut jumlah = 0 + 1 untuk proses looping yang pertama. Hasil dari perhitungan tersebut di simpan dalam variable jumlah, sehingga variable jumlah yang semula 0 sekarang bernilai 1. Program berlanjut untuk looping yang kedua, instruksi jumlah = jumlah + I sekarang menyatakan proses perhitungan jumlah = 1 + 2, varibel jumlah dari proses looping yang bertama mengakibatkan variable tersebut menyimpan angka 1 dan i pada proses looping yang kedua bernilai 2. Proses looping yang kedua akan disimpan dalam variable jumlah sehingga yang tadinya bernilai 1 pada proses looping yang kedua 3
  • 21. akan bernilai 3. Demikian proses looping terus berlanjut hingga kondisi i <= 10 terpenuhi sebagai akhir dari looping. 1.2. LOOPING DENGAN MENGGUNAKAN STRUKTUR WHILE– DO Pernyataan while do pada C umumnya di ekspresikan dalam bentuk umum sebagai berikut : while (ekspresi) pernyataan ; ekpresi yang dikandung di dalam tanda kurung akan di uji seperti halnya ekpresi pada struktur pemrograman if – else. Jika ekepresi tersebut bernilai benar maka pernyataan di bawah struktur while akan dijalankan, jika sebaliknya maka pernyataan tersebut tidak akan pernah dijalankan. Berikut adalah proses yang dijalankan oleh computer ketika untuk menguji while do statement. Uji ekspresi yang diberikan Jika ekspresi bernilai benar / true /1 maka a. Jalankan pernyataan b. kembali ke langkah 1 untuk kembali menguji eksprsi setelah menjalankan pernyataan else (jika ekspresi yang diuji bernilai salah / false / 0 maka keluar dari proses looping while do statement Diagram alir struktur while do adalah sebagi berikut: Pernyataan 1 Periksa Logika? Gambar 5.3 Diagram Alir while – do Struktur looping Tidak Ya Pernyataan 2 Tambahkan angka 1 untuk looping Pernyataan 3 Diagram Alir untuk teknik looping dengan menggunakan struktur while – do sama dengan pola yang digunakan pada teknik looping dengan struktur for. Kedua pola looping ini akan menguji kondisi pengulangan terlebih dahulu sebelum mengekeskusi pernyataan yang terdapat dalam looping, lainnya halnya denga teknik looping dengan struktur do – while. Contoh 5.3. #include <stdio.h> #include <conio.h> main() { 4
  • 22. int jumlah, counter, i; jumlah = 0; i = 1; printf("Masukan angka yang akan anda hitung jumlah deretnya : "); scanf("%d",&counter); while (i <= counter) { jumlah = jumlah + i; i++; } printf("Total Jumlah Deret = %d",jumlah); getch(); } Pada program contoh 5.3 program terlebih dahulu akan menginisialiasi variable jumlah = 0, dan i = 1, program akan menampilkan perintah pada layar monitor kepada pengguna untuk memasukan angka yang akan dihitung jumlah deretnya, angka yang dimasukan oleh pengguna akan ditangkap oleh variable counter. Pada instruksi selanjutnya program akan menguji dengan struktur pengulangan while do. Pernyataan while (i <= counter) mengisyaratkan pengecekan apakah I yang bernilai 1 yang diketahui pada saat inisialisasi awal akan dibandingkan dengan nilai yang tertera pada variable counter. Sebagai contoh pengguna memasukan angka 10, melalui pernyataan while akan diuji apakah 1 <= 10. Ketika logika dalam pernyataan tersebut bernilai benar maka instruksi jumlah = jumlah + i akan dijalankan, dari insruksi ini akan didapatkan hasil penjumlahan dari deret angka 1 sampai 10. Instruksi i++ mengisyaratkan varibel i melakukan proses increment dengan menambahkan nilai 1 setiap loopingnya. Sebagai contoh pada proses looping ke dua i akan bernilai 2, nilai ini kemudian akan dimasukan dalam pernyataan while (i <= counter) yang selanjutnya akan diuji apakah 2 <= 10, logika pernyataan tersebut masih bernilai benar maka program akan menjalankan instruksi dibawahnya. Instruksi i++ akan menyebabkan i bertambah dari 2 menjadi 3, nilai 3 tersebut kemudian diperiksa lagi dalam pernyataan while (i <= counter), demikian seterusnya hingga logika while (i <= counter) bernilai salah, sebagai contoh 11 <= 10. Ketika logika pernyataan bernilai salah maka proses loopig akan berakhir dan program akan mengeksekusi instruksi printf("Total Jumlah Deret = %d",jumlah). 1.3. LOOPING DENGAN MENGGUNAKAN STRUKTUR DO-WHILE Teknik pemrograman yang dijelaskan diatas yaitu while do dan for, keduanya akan memeriksa suatu kondisi pengulangan di awal program, for (ekspresi) ….. …… …….. while (ekspresi) ….. …… …….. Sedangkan struktur do while akan memeriksa kondisi pengulangan pada akhir program, do ………. ………. ………. While (ekspresi) Struktur ini akan memungkinkan program untuk di jalankan minimal sekali sebelum pernyataan dari program tersebut di periksa oleh kondisi while, jika kondisi yang diperiksa bernilai benar maka pernyataan diatas while akan di jalankan kembali hingga kondisi salah tercapai. Diagram alir struktur do while adalah sebagi berikut: Pernyataan 1 Pernyataan 2 Tambahkan angka 1 untuk looping 5
  • 23. Gambar 5.4 Diagram Alir Struktur looping do – while Contoh 5.4 #include <stdio.h> #include <conio.h> main() { int counter, jumlah, i; jumlah = 0; i = 1; printf("Masukan angka: "); scanf("%d",&counter); do { jumlah = jumlah + i; printf("n%d",jumlah); i++; } while (i <= counter); getch(); } Contoh 5.5 #include <stdio.h> #include <conio.h> main() { int counter,i; i = 1; printf("Masukan Angka : "); scanf("%d",&counter); while(i <= counter) { printf("nBelajar Pemrograman"); i++; 6
  • 24. } getch(); } Contoh 5.6 #include <stdio.h> #include <conio.h> main() { int counter,i; i = 1; printf("Masukan Angka : "); scanf("%d",&counter); do { printf("nBelajar Pemrograman"); i++; } while(i <= counter); getch(); } Program contoh 5.5. dan 5.6 memperlihatkan perbedaan penggunaan teknik pengulangan while do dan do while. Dua program tersebut akan mengeluarkan hasil yang sama ketika kita memasukan angka lebih dari 0, akan tetapi ketika kita berikan angka 0 baru terlihat perbedaan yang mencolok tentang penggunaan kedua teknik looping tersebut. Pengayaan Latihan 5.1 #include <stdio.h> #include <conio.h> main() { int n, count = 1; float x, average, sum = 0; printf("Berapa Angka yang Akan di hitung? " ) ; scanf ("%d", &n) ; while (count <= n) { printf (" x = "); scanf("%f", &x); sum += x; ++count; } average = sum/n; printf("nRata-ratanya adalah %fn", average); 7
  • 25. getch(); } Latihan 5.2 #include <stdio.h> #include <conio.h> main() { int n, count, loops, loopcount; float x, average, sum; /* read i n the number of l i s t s */ printf ("How many lists ? " ); scanf ("%d", &loops); /* outer loop (process each l i s t of numbers */ for (loopcount = 1; loopcount <= loops; ++loopcount) { /* initialize and read in a value for n */ sum = 0; printf ( " n List number %dnHow many numbers? ", loopcount); scanf ("%d", &n) ; /* read i n the numbers */ for (count = 1; count <= n; ++count) { printf ( " x = " ); scanf ( "%f", &x); sum += x; } /* end inner loop */ /* calculate the average and display the answer */ average = sum/n; printf ("nThe average i s %fn", average) ; } /* end outer loop */ getch(); } 8
  • 26. BAB VI PEMROGRAMAN FUNGSI Pertemuan Minggu VII dan VIII Alokasi Waktu : 4 Jam Pertemuan Standar Kompetensi : Mahasiswa dapat membuat program komputer sederhana dengan menggunakan bahasa C Kompetensi Dasar : Memahami program komputer yang mengandung unsur procedure dan fungsi Indikator : Mahasiswa dapat memahami struktur program bahasa C yang mengandung unsur procedure dan fungsi : Mahasiswa dapat membuat program dengan melibatkan struktur procedure dan fungsi Dalam topic-topik sebelumnya kita telah memanfaatkan fungsi yang telah didefinisikan oleh C didalam Pustaka (library) C itu sendiri, seprti sqrt (), pow (), dsb. Salah satu keunngulan pemrograman bahasa C adalah bahwa seorang programmer dapat membuat Fungsi sendiri sesuai dengan kebutuhan program aplikasi yang akan dikebangkan. Analogi fungsi adalah seperti halya kita …… Suatu fungsi dapat diakses atau dipanggil dengan menuliskan nama fungsinya pada main program (fungsi main ( ) ). Gambar dibawah ini mengilustrasikan program yang terdiri dari beberapa fungsi yang terkait antara satu dengan yang lain. Gambar 6.1 Diagram fungsi Struktur pemanggilan main() { function1(); …… fungtion2(); function1() { …… return; } function3() { function3(); …… function4(); ………. return; } } function2() { } …… return; function4() { …… return; } Di beberapa literature ada yang membedakan antara pengertian fungsi dan procedure. Procedure diartikan sebagai suatu bagian program yang menjalankan tugas tertentu yang kemudian dipanggil oleh fungsi utama. Fungsi juga merupakan bagian dari program yang menjalankan tugas tertentu akan tetapi fungsi mempunyai nilai yang akan di kembalikan ke fungsi utama ketika di panggil. Secara umum struktur penamaan sebuah procedure dan fungsi adalah sebagai berikut: void Nama_prosedure (void) : struktur umum penamaan prosedure int nama_fungsi (tipe_data parameter) : struktur umum penamaan fungsi 1
  • 27. proses pendeklarasian fungsi ini biasanya terletak setelah penulisan library program, dibawah ini merupakan salah satu cara pendeklarasian fungsi atau procedure #include <conio.h> #include <math.h> #include <stdio.h> ……… int fungsi1 (int a, int b) Void prosedure1 (void) …….. Main() { ……………….. ……………….. } 6.1. PROSEDURE Procedure lebih merupakan sebuah fungsi yang tidak memiliki parameter keluaran. Procedure hanya digunakan untuk memecah program sehingga lebih mudah dalam pengelolaan dan pengembangan selanjutnya. Procedure lebih ditekankan pada pemecahan tugas yang lebih spesifik untuk menyederhanakan program dan mempermudah penanganan saat terjadi kesalahan. Contoh dibawah ini akan menjelaskan penerapan procedure dalam suatu program yang bertujuan untuk mempermudah pengelolaan program. Contoh 6.1 #include <stdio.h> #include <conio.h> void luas(void); void keliling(void); main() { printf("Program Bangun Persegi Panjang"); luas(); keliling(); getch(); } void luas(void) { int luasan, lebar, panjang; lebar = 3; panjang = 4; luasan = panjang * lebar; printf("nLuas nya adalah : %d",luasan); } void keliling(void) { int kelilingan, lebar, panjang; 2
  • 28. lebar = 3; panjang = 4; kelilingan = (2*panjang) + (2*lebar); printf("nKelilingnya adalah : %d",kelilingan); } Pada contoh 1.6 diatas bahwa program perhitungan persegi panjang yang menentukan luas dan keliling dibagi menjadi tiga bagian program, bagian pertama adalah fungsi utama yaitu fungsi main(), bagian kedua adalah procedure luas yang didefinisikan sebagai void luas (void), bagian ketiga adalah prosudure keliling yang didefinisikan sebagai void keliling (void). Pada contoh 6.1 jika kita akan menambahkan suatu proses perhitungan lain terkait dengan persegi panjang semisal menghitung sisi diagonal persegi panjang, kita hanya perlu menambahkan deklarasi baru dibawah deklarasi procedure yang sudah ada, selanjutnya tinggal mendeskripsikan prosedure tersebut seperti pada deskripsi procedure luas dan keliling yang sudah ada. Contoh 6.2 #include <stdio.h> #include <conio.h> void luas(void); void keliling(void); void diagonal(void); main() { printf("Program Bangun Persegi Panjang"); luas(); keliling(); diagonal(); getch(); } void luas(void) { int luasan, lebar, panjang; lebar = 3; panjang = 4; luasan = panjang * lebar; printf("nLuas nya adalah : %d",luasan); } void keliling(void) { int kelilingan, lebar, panjang; lebar = 3; panjang = 4; kelilingan = (2*panjang) + (2*lebar); 3
  • 29. printf("nKelilingnya adalah : %d",kelilingan); } void diagonal(void) { int lebar, panjang, diagonal lebar = 3; panjang = 4; diagonal = sqrt( (lebar*lebar) + (panjang*panjang) ); printf(“nPanjang diagonal adalah : %d”,diagonal); } 6.2. FUNGSI Procedure yang kita dipelajari di atas adalah bentuk paling sederhana dari sebuah fungsi. Fungsi biasanya mempunyai parameter masukan atau keluaran yang nantinya akan dikeluarkan pada saat fungsi tersebut di panggil, masih dengan program yang telah dikembangkan pada contoh 6.1, pada contoh dibawah ini program tersebut akan dimodifikasi dengan menggunakan fungsi. Contoh 6.2 #include <stdio.h> #include <conio.h> int luas(int x, int y); main() { int panjang, lebar, luasan; printf("Program Bangun Persegi Panjang"); printf("nMasukan Panjangnya : "); scanf("%d",&panjang); printf("nMasukan Lebarnya : "); scanf("%d",&lebar); luasan = luas(panjang,lebar); printf("nLuas Persegi Panjang : %d",luasan); getch(); } int luas(int x, int y) { int hit_luas; hit_luas = x * y; return(hit_luas); } Pada program contoh 6.2 jika diperhatikan ada penulisan tipe data dan parameter yang digunakan dalam pendeklarasian fungsinya. Fungsi dideklarasikan didahului dengan tipe data yang akan dikembalikan kemudian didalam tanda kurung juga berisi variable dan tipe data yang akan diproses pada saat pemanggilan fungsi : int luas(int x, int y). 4
  • 30. Pada pendeskrisian fungsi luas diatas lebih ditekankan pada proses bagaimana menghitung luas dengan melibatkan parameter yang ada, pada contoh diatas juga didapatkan keyword return yang menyatakan pengembalian dari suatu proses ketika fungsi tersebut di panggil pada fungsi yang lain. Jika ingin menambahkan suatu fungsi lagi terkait dengan perhitungan persegi panjang adalah sebagai berikut Contoh 6.3 #include <stdio.h> #include <conio.h> int luas(int x, int y); int keliling(int x, int y); main() { int panjang, lebar, luasan, kel; printf("Program Bangun Persegi Panjang"); printf("nMasukan Panjangnya : "); scanf("%d",&panjang); printf("nMasukan Lebarnya : "); scanf("%d",&lebar); luasan = luas(panjang,lebar); kel = keliling(panjang,lebar); printf("nLuas Persegi Panjang : %d",luasan); printf("nKeliling Persegi Panjang : %d",kel); getch(); } int luas(int x, int y) { int hit_luas; hit_luas = x * y; return(hit_luas); } int keliling(int x, int y) { int hit_keliling; hit_keliling = (2*x) + (2*y); return(hit_keliling); } Pada contoh 6.3 terlihat ketika ingin menambahkan suatu fungsi, kita tinggal nenambahkan deklarasi fungsi dibawah deklarasi fungsi yang terdahulu, selanjutnya dideskripsikan dibawah deskripsi fungsi yang sudah ada dalam hal ini deskripsi fungsi untuk menghitung luas. Pengayaan Latihan 6.1 5
  • 31. #include <stdio.h> #include <conio.h> int kabisat(int th); main() { int tahun; printf("Masukan Tahun : "); scanf("%d",&tahun); kabisat(tahun); getch(); } int kabisat(int th) { if(th%4==0) printf("Kabisat"); else printf("Bukan Kabisat"); return(th); } Latihan 6.2 #include <stdio.h> #include <conio.h> int fak(int fk); main() { int nilai,ft; printf("Masukan Nilai: "); scanf("%d",&nilai) printf("Nilai Faktorial dari %d adalah %d",nilai,fak(nilai)); getch(); } int fak(int fk) { int i,f; if(fk==0) { f=1; } if(fk > 0) { f=1; for (i=1; i<=fk; i++) { f=f*i; 6
  • 33. BAB VII PEMROGRAMAN ARRAY DAN STRING Pertemuan Minggu IX dan X Alokasi Waktu : 4 Jam Pertemuan Standar Kompetensi : Mahasiswa dapat membuat program komputer sederhana dengan menggunakan bahasa C Kompetensi Dasar : Memahami program komputer yang menggunakan struktur Larik (Array) Indikator : Mahasiswa dapat memahami struktur program bahasa C yang mengandung Array : Mahasiswa dapat membuat program dengan melibatkan struktur Array Pada pemrograman yang sesungguhnya terkada kita membutuhkan suatu blok data yang mempunyai karakteristik yang sama. Seperti di ilustrasikan tentang konsep variable dengan menganalogikan penamaan alamat pada sebuah kamar hotel, array di analogikan pada aktifitas pemesanan beberapa kamar hotel yang akan kita isi sesuai dengan kebutuhan si pemesan. Pada konsep pemrograman bahasa C array didefinisikan sebagai berikut: Tipe data nama_array [panjang_array] Tipe data merupakan batasan dari variable tentang format data apa yang dapat dimanipulasi untuk variable tersebut, nama_array merupakan nama variable yang dijadikan sebagai bentuk array, dan panjang_array adalah jumlah maksimum data yang dapat di tamping dalam variable array tersebut. Berikut adalah contoh format penulisan variable array int nim [10] char nama [30] Pada contoh int nim [10] diartikan sebagai sebuah variable dengan nama nim yang bertipe integer dengan kemampuan maksimum data yang dapat ditampung sebesar 10 digit. Demikian juga untuk contoh char nama [30] mengindikasikan bahwa variable array nama bertipe char yang mampu menampung data sebanyak 30 character (huruf). Hal yang perlu diperhatikan bahwa penulisan batas maksimum daya tamping sebuah array di tulis dengan tanda kurung kotak [ ]. Pemrograman Array dibagi menjadi dua kelempok besar yaitu array satu dimensi dan array multi dimensi. Pada pembahasan kali ini hanya akan di dibahas lebih mendalam tentang array 1 dimensi dan array 2 dimensi. 7.1. ARRAY 1 DIMENSI Seperti dicontohkan pada penulisan variable array diatas, contoh tersebut mengacu pada sintak atau aturan penulisan untuk array 1 dimensi. Dimana array tersebut hanya berbentuk 1 kolom atau pun baris. Berikut adalah ilustrasi dari penerapan array 1 dimensi Contoh 7.1 #include <stdio.h> #include <conio.h> /* Program menghitung nilai rata-rata */ main() { 1
  • 34. int n1, n2, n3, n4, n5; float rata; printf("Masukan nilai untuk n1, n2, n3, n4 dan n5n"); scanf("%d %d %d %d %d", &n1, &n2, &n3, &n4, &n5); rata = (n1+n2+n3+n4+n5) / 5; printf("Nilai rata-ratanya = %f ",rata); getch(); } Pada program contoh 7.1 diatas mengilustrasikan bahwa untuk dapat membuat rata-rata nilai dari sekian data kita harus menyiapkan sekian variable sesuai dengan jumlah data yang akan kita kalkulasi, tentu hal ini tidak akan menjadi masalah jika data yang akan kita hitung dalam rentang satuan, bagaimana jika data yang akan kita kalkulasi sebanyak 100 bahkan 1000 buah data, tentu saja program pada contoh 7.1 menjadi tidak sangat efektif. Array salah satunya digunakan untuk mengelola blok data sehingga lebih mudah dalam memanfaatkannya. Contoh 7.2 berikut akan mengilustrasikan manfaat penggunaan array untuk memperbaiki efektifitas dari program contoh 7.1 Contoh 7.2 #include <stdio.h> #include <conio.h> /* Program menghitung nilai rata-rata dengan array*/ main() { int n[10]; int data, i,sum; float rata; printf("Berapa data yang akan Anda hitung "); scanf("%d",&data); sum =0; for (i=0; i<data; i++) { printf("data ke-%d ",i+1); scanf("%d",&n[i]); sum = sum + n[i]; } rata = sum/data; printf("Nilai rata-ratanya = %.2f",rata); getch(); } Pada contoh 7.2 terlihat bahwa pemrograman array terkait erat dengan teknik pemrograman looping. Penggunaan Teknik looping disini diperuntukan untuk menjalankan proses pemasukan (inisialisasi) data secara otomatis terkait dengan jumlah data yang aka dikalkulasi secara dinamis. Pada contoh 7.2 Teknik looping yang digunakan adalah dengan menggunakan struktur for akan tetapi pada dasarnya bisa diganti dengan teknik looping yang lain. Cara kerja Struktur array adalah sebagai berikut: 1. Ketika pengguna memasukan angka kedalam program, angka tersebut ditangkap oleh variable data yang bertipe integer. 2. Kemudian program berlanjut mengesekusi baris berikutnya yaitu menginisialisasi (pemberian nilai awal) pada variable sum dengan nilai nol (0). 2
  • 35. 3. Program berlanjut ke struktur looping dimana proses looping akan dimulai dari angka ke 0 dan berakhir pada nilai yang dikandung pada variable data dengan proses penambahan angka 1 setiap perputaran looping yang ditandai dengan pernyataan i++. Proses looping akan berhenti ketika nilai yang terkadung dalam variable i sudah lebih besar atau sama dengan nilai yang terkandung dalam variable data. 7.2. ARRAY 2 DIMENSI Struktur array 2 dimensi mengisyaratkan bahwa susunan data yang dibentuk menyerupai table yaitu akan terdiri dari baris dan kolom. Pada konsep pemrograman bahasa C array 2 dimensi didefinisikan sebagai berikut: Tipe data nama_array [panjang_baris] [panjang_kolom] Array 2 dimensi termasuk dalam kategori array multidimensi, lebih jauh tentang array multidimensi pada penjabarannya kita dapat membuat array 3 dimensi, 4 dimensi dst, array multidimensi didefinisikan sebagai berikut: Tipe data nama_array [dimensi 1] [dimensi 2][dimensi 3] array 3 dimesi Tipe data nama_array [dimensi 1] [dimensi 2][dimensi 3][dimensi 4] array 4 dimesi Pada pokok bahasan ini akan lebih ditekankan pada array dua dimensi yang akan diilustrasikan dengan pemrograman matrik. Contoh program dibawah ini akan menampilkan susunan angka yang berbentuk baris dan kolom. Contoh 7.3 #include <stdio.h> #include <conio.h> main(void) { int t, i, num[3][4]; for(t=0; t<3; ++t) for(i=0; i<4; ++i) num[t][i] = (t*4)+i+1; /* now print them out */ for(t=0; t<3; ++t) { for(i=0; i<4; ++i) printf("%3d", num[t][i]); printf("n"); } getch(); } Ketika di jalankan maka output dari program adalah sebagai berikut: Gambar 7.1 Output program array 2 dimensi 3
  • 36. Pada gambar 7.1 menampilkan susunan angka yang berpola, dalam gambar tersebut dapat terlihat susunan table yang terdiri dari bari dan kolom. Berikut adalah ilustrasi dari hasil keluaran program diatas 1 2 3 4 Baris 1 5 6 7 8 Baris 2 9 10 11 12 Baris 3 Kol 1 Kol 2 Kol 3 Kol 4 Program contoh 7.3 mengilustrasikan pembuatan table yang terdiri dari 3 baris dan 4 kolom. Pendeklarasian variable num[3][4] mengyatakan bahwa keluaran akan dibentuk kedalam table 3 x 4. Sebagai catatan bahwa array 2 dimensi mempunyai default nilai koordinat untuk kiri atas adalah (0,0) yang berarti bahwa table dimulau dari baris ke 0 dan kolom ke 0. Proses pembentukan tampilan adalah sebagai berikut: 1. Looping dimulai pada baris ke 0 yang dinyatakan dengan nilai t=0, dalam ini terjadi proses looping dimulai pada loop terluar yaitu pada loop for(t=0; t<3; ++t). 2. Program secara sequence mengeksekusi baris berikutnya yaitu pernyataan for(i=0; i<4; ++i). pada loop kedua ini I dimulai dengan angka 0 yang menyatakan kolom ke 0. Sampai pada tahap ini program sudah memegang nilai indeks yaitu di 0,0. 3. Program secara sequence mengeksekusi baris berikutnya yaitu pernyataan printf("%3d", num[t][i]). Pernyataan tersebut merupakan sutau perintah untuk menampilkan angka sesuai dengan hasil perhitungan pada pernyataan num[t][i] = (t*4)+i+1. num[t][i] adalah variable bertipe array 2 dimensi yang akan menampatkan angka dari hasil perhitungan susai dengan nomor indeksnya. Pada perhitungan awal variable num[t][i] bernilai 1 (satu) yang mempunyai indeks di (0,0) (lihat gambar 7.1). posisi tersebut menyatakan bahwa nilai 1 berada pada baris ke 0 dan kolom ke 0. 4. Setelah mencetak angka 1 program masih berjalan pada proses loop ke 2 yaitu pada posisi loop for(i=0; i<4; ++i). pada loop ini variable i mengalami proses increament dari i= 0 menjadi i=1. Proses looping yang kedua ini akan merubah harga indeks dari posisi elemen menjadi (0,1), sehingga nilai 2 hasil dari perhitungan (t*4)+i+1 yang ditampung pada variable num[t][i] akan ditempatkan pada posisi baris ke nol dan kolom 1. 5. Setelah mencetak angka 2 program masih berjalan pada proses loop ke 2 yaitu pada posisi loop for(i=0; i<4; ++i). pada loop ini variable i mengalami proses increament dari i= 1 menjadi i=2. Proses looping yang kedua ini akan merubah harga indeks dari posisi elemen menjadi (0,2), sehingga nilai 3 hasil dari perhitungan (t*4)+i+1 yang ditampung pada variable num[t][i] akan ditempatkan pada posisi baris ke nol dan kolom 2. Proses looping pada baris ke 0 akan berakhir setelah i bernilai 3 atau dari logika loop yang dimaksud jika I < 4 maka loop akan berakhir 6. Setelah baris pertama terpenuhi yaitu baris ke 0, maka proses looping akan melompat ke loop yang terluar yaitu loop for(t=0; t<3; ++t). pada bagian ini proses looping akan berlanjut pada variable t (lihat keterangan no 1), variable t yang semula bernilai 0 akan berubah menjadi 1 melalui proses increament ++t. pada proses ini pengeksekusian program hanya melakukan proses increament nilai t selajutnya program secara sequence mengeksekusi baris berikutnya yaitu pada loop for(i=0; i<4; ++i). 7. Pada tahap ini proses looping akan terjadi pada loop for(i=0; i<4; ++i), pada tahap kedua ini variable I akan mengalai proses dari awal dengan I bernilai 0. Hanya saja pada tahap ini program memegang 4
  • 37. indeks dengan nilai (1,0), yang merujuk pada t=1 yang menyatakan baris ke 1, dan I=0 yang menyatakan kolom ke 0. 8. Program secara sequence mengeksekusi baris berikutnya yaitu pernyataan printf("%3d", num[t][i]) (lihat keterangan no 3). Pada perhitungan ini variable num[t][i] bernilai 5 (lima) yang mempunyai indeks di (1,0) (lihat gambar 7.1). posisi tersebut menyatakan bahwa nilai 5 berada pada baris ke 1 dan kolom ke 0. 9. Setelah mencetak angka 5 program masih berjalan pada proses loop ke 2 yaitu pada posisi loop for(i=0; i<4; ++i). pada loop ini variable i mengalami proses increament dari i= 0 menjadi i=1. Proses looping yang kedua ini akan merubah harga indeks dari posisi elemen menjadi (1,1), sehingga nilai 6 hasil dari perhitungan (t*4)+i+1 yang ditampung pada variable num[t][i] akan ditempatkan pada posisi baris ke 1 dan kolom ke 1. Proses looping pada baris ke 1 akan berakhir setelah i bernilai 3 atau dari logika loop yang dimaksud jika I < 4 maka loop akan berakhir 10. Proses akan kembali seperti pada keterangan no. 6 yang akan merubah harga t dari 1 menjadi 2. Proses di looping terluar akan berakhir ketiga harga berlogika kurang dari 3 (t<3) atau t bernilai 2. 7.3. STRING String merupakan tipe data bentukan dari tipe data dasar yaitu char. Tipe char hanya mengijinkan untuk pembacaan 1 huruf (character), dengan memanfaatkan array maka kita dapat menampung beberapa karakter yang membentuk suatu kesatuan kata atau bahkan kalimat dengan menggunakan tipe data char, berikut sintaks penulisan tipe bentukan string dalam bahasa C. char nama[20]; char alamat[50]; dalam pembuatan variable string aturan umum dalam pembuatan variable yaitu mencantumkan tipe data di depan variable masih tetap berlaku, hanya saja setelah nama variable harus diikuti tanda kurung kotak dengan disertai angka didalamnya. Sebagai contoh dua varibel diatas mengandung arti bahwa variable nama dengan tipe char dapat menampung character/huruf sebanyak 20, demikian juga dengan variable alamat yang mempunyai tipe char dengan huruf maksimal yang dapat ditampung sebanyak 50 huruf. Terdapat Beberapa aturan yang perlu dicermati dalam melakukan inisialisasi awal pada variable string, aturan dalam melakukan inisialisasi awal tersebut diantaranya sebagai berikut: char saying[ ] = "This is a string." 2. char str[40] = "Feddy Setio Pribadi" 1. Inisialisasi dengan kurung kotak kosong Inisialisasi dengan kurung kotak terdifinisi Contoh 7.4. #include <stdio.h> #include <conio.h> int main(void) { char nama[80], alamat[80]; puts("Ketikan Nama Anda Lalu Tekan Enter"); puts("nLalu Ketikan Alamat Anda kemudian tekan Enter"); gets(nama); gets(alamat); printf("nNama Anda %s dengan Alamat %s",nama,alamat); 5
  • 38. getch(); } String mempunyai kajian tersendiri dalam pemrograman, C menyediakan library (string.h) yang berisi tentang fungsi-fungsi untuk melakukan manipulasi terhadap string. Berikut adalah contoh program yang menyajikan proses manipulasi yang dapat dilakukan pada string Contoh 7.5. #include <stdio.h> #include <string.h> #include <conio.h> main() { char s1[80], s2[80]; puts("Ketikan Sebuah Kata Lalu Tekan Enter"); puts("nKetikan Sebuah Kata kemudian tekan Enter"); gets(s1); gets(s2); printf("lengths: %d %dn", strlen(s1), strlen(s2)); if(!strcmp(s1, s2)) printf("The strings are equaln"); strcat(s1, s2); printf ("%sn", s1); strcpy(s1, "This is a test.n"); printf(s1); if(strchr("hello", 'e')) printf("e is in hellon"); if(strstr("hi there", "hi")) printf("found hi"); getch(); } Pada contoh 7.5 perhatikan sintaks program pada bagian include, fungsi-fungsi manipulasi string seperti strlen, strcmp, strcpy, strcat, dll terkandung dalam library <string.h>, oleh karena itu ketika kita akan melakukan manipulasi string dengan fungsi-fungsi tersebut maka terlebih dahulu kita harus menyertakan #include <string.h> pada bagain deklarsai library. Pengayaan Latihan 7.1 #include <stdio.h> #include <conio.h> main() { char str1[] = "To be or not to be"; char str2[] = ",that is the question"; 6
  • 39. int count = 0; /* Stores the string length */ while (str1[count] != '0') /* Increment count till we reach the string */ count++; /* terminating character. */ printf("nThe length of the string "%s" is %d characters.", str1, count); count = 0; /* Reset to zero for next string */ while (str2[count] != '0') /* Count characters in second string */ count++; printf("nThe length of the string "%s" is %d characters.n", str2, count); getch(); } Latihan 7.2 #include <conio.h> #include <stdio.h> void misteri(char *s); main() { char string[] ="naufal"; printf("Sebelum proses %sn",string); misteri(string); printf("Setelah proses %s",string); getch(); } void misteri(char *s) { while (*s != '0') { if (*s >= 'a' && *s <= 'z') *s -=32; s++; } } 7
  • 40. BAB VIII PEMROGRAMAN POINTER Pertemuan Minggu XI dan XII Alokasi Waktu : 4 Jam Pertemuan Standar Kompetensi : Mahasiswa dapat membuat program komputer sederhana dengan menggunakan bahasa C Kompetensi Dasar : Memahami program komputer yang menggunakan struktur Pointer Indikator : Mahasiswa dapat memahami struktur program bahasa C yang mengandung Pointer : Mahasiswa dapat membuat program dengan melibatkan Pointer pointer adalah variabel yang menyimpan alamat memori. Alamat ini adalah lokasi obyek lain (biasanya variabel lain) di memori. Misalnya, jika satu variabel berisi alamat dari variabel lain, variabel pertama dikatakan menunjuk ke variable kedua. Analogy konsep pointer adalah ketika kita ingin berkenalan dengan seseoarang akan tetapi kita tidak dapat menyapanya secara langsung maka biasanya kita akan bertanya kepada teman atau sahabatnya yang kebetulan kita kenal. Orang yang kita tanya perihal seseorang yang ingin kita ketahui identitasnya adalah seorang Pointer (Penunjuk). Analogy yang lain ketika kita ingin berkunjung ke suatu alamat akan tetapi kita tidak tahu di daerah mana alamat tersebut berada maka kita akan bertanya kepada orang yang kita anggap tahu tentag alamat tersebut, orang yang memberikan penjelasan tentang perihal alamat yang kita tanyakan itulah yang kita sebuat dengan Pointer. Poiter adalah variabel yang berisi alamat memori variabel lain dan secara tidak langsung menunjuk ke variabel tersebut. Sebagai contoh Andi berteman dengan Budi, lalu anda ingin mengetahui jumlah keluarga Budi untuk keperluan sensus penduduk. Anda tidak mengetahui alamat Budi, tetapi anda mengenal Andi. Untuk mencari jumlah keluarga Budi, maka pertama-tama anda pergi ke rumah Andi, misalnya di rumah No. 8321. Sesampai di Andi, Andi membaritahukan kepada anda bahwa alamat Budi ada pada alamat 9821. Kemudian anda pergi ke rumah Budi lalu mencatat jumlah keluarga yang dimiliki Budi yaitu lima orang (misalkan). Dalam contoh di atas, Andi bertindak sebagai pointer. Andi tidak memberitahukan jumlah keluarga Budi, tetapi Andi memberitahu alamat Budi, di alamat 9821 (alamat Budi) itulah Anda mengetahui jumlah keluarga Budi. Jika alamat dari ditunjukkan dengan simbol & dan isi dari ditunjukkan dengan symbol *, maka hubungan analogi di atas adalah: Jika variabel akan menjadi penunjuk, itu harus dinyatakan sebagai demikian. Sebuah deklarasi pointer terdiri dari jenis dasar, *, dan nama variabel. Bentuk umum untuk mendeklarasikan variabel pointer Tipe *nama_variabel ketika Anda menyatakan pointer brtipe int *, maka compiler mengasumsikan bahwa semua alamat yang akan ditunjuk oleh varibel pointer tersebut menunjuk ke sebuah variable yang betipe integer. 1
  • 41. Contoh 8.1 #include <stdio.h> #include <conio.h> main() { int x = 99; int *p1, *p2; p1 = &x; p2 = p1; /* print the value of x twice */ printf("Values at p1 and p2: %d % dn", *p1, *p2); /* print the address of x twice */ printf("Addresses pointed to by p1 and p2: %p %p", p1, p2); getch(); } Contoh 8.2 #include <stdio.h> #include <conio.h> main() { int U = 3; int v; int *pu; /* pointer t o an integer */ int *pv; /* pointer t o an integer */ pu = &U; /* assign address of U t o pu */ v = *pu; /* assign value of U t o v */ pv = &v; /* assign address of v t o pv */ printf("nu=%d &u=%X pu=%X *pu=%d", U, &U, pu, *pu); printf("nnv=%d &v=%X pv=%x *pv=%d", v, &v, pv, *pv); getch(); } Pada program diatas menyatakan pointer *s digunakan sebagai penunjuk variable kata yang berbentuk array dan bertipe char. Pointer *s ini digunakan sebagai argument fungsi hitung yang akan mengembalikan nilai integer apabila fungsi hitung tersebut dipanggil. Dengan kata lain fungsi hitung akan memberikan nilai berupa angka dari suatu masukan yang diberikan pada variable kata yang berupa sederet char (string). Contoh 8.3 2
  • 42. #include <stdio.h> #include <conio.h> void tukar(int *a, int *b); main() { int x,y; printf("Masukan nilai ke 1: "); scanf("%d",&x); printf("Masukan nilai ke 2: "); scanf("%d",&y); tukar(&x,&y); printf ("Setelah ditukarkan Nilai ke 1 %dn",x); printf ("Setelah ditukarkan Nilai ke 2 %d",y); getch(); } void tukar(int *a, int *b) { int smt; smt = *a; *a = *b; *b = smt; } Contoh 8.4 #include <stdio.h> #include <conio.h> main() { int number = 0; /* A variable of type int initialized to 0 */ int *pointer = NULL; /* A pointer that can point to type int */ number = 10; printf("nnumber's address: %p", &number); /* Output the address */ printf("nnumber's value: %dnn", number); /* Output the value */ pointer = &number; /* Store the address of number in pointer */ printf("pointer's address: %p", &pointer); /* Output the address */ printf("npointer's size: %d bytes", sizeof(pointer)); /* Output the size */ printf("npointer's value: %p", pointer); /* Output the value (an address) */ printf("nvalue pointed to: %dn", *pointer); /* Value at the address */ getch(); } Contoh 8.5 #include <stdio.h> 3
  • 43. #include <conio.h> void funct1 (int U, int v); /* function prototype */ void funct2 (int *pu, int *pv); /* function prototype */ main () { int u = 1; int v = 3; printf ( "n Before calling functl : u=%d v=%d", u, v); funct1 (u, v); printf ( "n After calling functl : u=%d v=%d", u, v); printf ("nn Before calling funct2: u=%d v=%d", u, v) ; funct2(&u, &v); printf ("n After calling funct2: u=%d v=%d", u, v); getch(); } void funct1 (int U, int v) { U = 0; v = 0; printf ( " n Within functl : u=%d v=%d", U, v); return; } void funct2 (int *pu, int *pv) { *pu = 0; *pv = 0; printf ("n Within funct2: *pu=%d *pv=%d", *pu, *pv) ; return; } Pengayaan Latihan 8.1 #include <stdio.h> #include <conio.h> int hitung(char *s); main() { char kata[80]; printf("Masukan Sebuah Kata : n"); scanf("%s",&kata); printf("%d",hitung(kata)); getch(); } int hitung(char *s) 4
  • 44. { int i=0; for (;*s!='0'; *s++) i++; return(i); } Latihan 8.2 #include <conio.h> #include <stdio.h> #include <stdlib.h> #define size 10 void push(int i); int pop(void); int *tos, *p1, stack[size]; main() { int value; p1 = stack; tos = stack; do { printf("Enter value: "); scanf("%d", &value); if(value != 0) push(value); else {printf("value on top is %dn", pop()); printf("Alamat Memori %pn",(p1+1));} } while(value != -1); getch(); } void push(int i) { p1++; if(p1 == (tos+size)) { printf("Stack Overflow.n"); exit(1); } *p1 = i; } int pop(void) { if(p1 == tos) { printf("Stack Underflow. n"); exit(1); } p1--; return *(p1+1); } 5
  • 45. BAB IX PEMROGRAMAN STRUKTUR Pertemuan Minggu XIII Alokasi Waktu : 2 Jam Pertemuan Standar Kompetensi : Mahasiswa dapat membuat program komputer sederhana dengan menggunakan bahasa C Kompetensi Dasar : Memahami program komputer yang menggunakan struktur (struct) Indikator : Mahasiswa dapat memahami struktur program bahasa C yang mengandung struct : Mahasiswa dapat membuat program dengan melibatkan struct Struktur adalah kumpulan dari beberapa variable, mungkin juga dari beberapa tipe data yang berbeda. Variable-variabel ini dibundle dalam satu kelompok kemudian di berinama varibel alias untuk mewakili nama dari kelompok tersebut. Struktur digunakan untuk membantu mengelola data yang komplek, khususnya dalam program yang relative besar. Salah satu contoh dari struktur adalah pencatatan daftar gaji. Seorang pekerja digambarkan oleg sekumpulan attribute seperti nama, alamat, nomor identitas, dan gajinya. Contoh lain adalah sebuah titik. Titik mempunyai sepasang koordinat misalnya koordinat titik Y dan titik X pada system koordinat kartesian. Sebagai contoh kita akan membuat sebuah struktur untuk menggambarkan sebuah titik dengan pasangan koordinatnya. Titik tersebut mempunyai nilai koodinat X dan Y yang masing-masing bertipe integer sebagai contoh titik Z (4,3). Dua koordinat tersebut dapat ditempatkan didalam satu struktur yang dideklarasikan sebagai berikut struct titik { int x; int y; } Sintaks umum penulisan structure adalah penyertaan keyword struct, terdapat variable anggota yang diapit dengan tanda kurung kurawal, berikut adalah bentuk umumnya struct tag { member 1; member 2; ..... member m; }; Kata kunci struct merupakan awal dari pendeklarasian sebuah struktur, tag adalah nama dari struct yang dimaksud. Tag dengan tipe struct tersebut selanjutnya dapat digunakan sebagai tipe data dari suatu variable. Berikut adalah contoh lain dari pembuatan struct. Struct account { int no_acc; char nama[80]; 1
  • 46. float balance; } Berikut cara menggunakan struct yang telah didefinisikan di atas struct titik pt; struct account akun; Pernyataan diatas merupakan pendefinisian dari sebuah variable dengan nama pt dengan tipe data struct titik. Program dibawah ini menggabarkan proses pendefinisian variable dan pemasukan data pada variable anggota dari struct titik. Contoh 9.1 #include <stdio.h> #include <conio.h> struct titik { int x; int y; }; main() { struct titik tk; int a, b; tk.x=2; tk.y=3; a =4; b = 5; printf("%d %d",tk.x,tk.y); printf("%d %d",a,b); getch(); } Contoh 9.1 mendemonstrasikan Operator titik ( . ) yaitu merupakan operator yang digunakan untuk mengakses variable anggota dari struct sebagai contoh tk.x berarti bahwa variable tk akan mengakses variable anggota x yang terdapat pada struct titik. Dalam program tersebut juga disertakan cara inisialisasi yang biasa dilakukan pada variable a dan b yang dideklarasikan pada fungsi main(). Contoh 9.2 #include <stdio.h> #include <conio.h> main() { struct 2
  • 47. { int a; int b; } x, y; x.a = 10; y = x; /* assign one structure to another */ printf("%d", y.a); getch(); } Contoh 9.3 #include <stdio.h> #include <conio.h> main() { /* Structure declaration */ struct horse { int age; int height; char name[20]; char father[20]; char mother[20]; }; struct horse My_first_horse; /* Structure variable declaration */ /* Initialize the structure variable from input data */ printf("Enter the name of the horse: " ); scanf("%s", My_first_horse.name ); /* Read the horse's name */ printf("How old is %s? ", My_first_horse.name ); scanf("%d", &My_first_horse.age ); /* Read the horse's age */ printf("How high is %s ( in hands )? ", My_first_horse.name ); scanf("%d", &My_first_horse.height ); /* Read the horse's height */ printf("Who is %s's father? ", My_first_horse.name ); scanf("%s", My_first_horse.father ); /* Get the father's name */ printf("Who is %s's mother? ", My_first_horse.name ); scanf("%s", My_first_horse.mother ); /* Get the mother's name */ /* Now tell them what we know */ printf("n%s is %d years old, %d hands high,", My_first_horse.name, My_first_horse.age, My_first_horse.height); printf(" and has %s and %s as parents.n", My_first_horse.father, My_first_horse.mother ); getch(); } 3