Modul Algoritma Dan Pemrograman I Dengan Bahasa C
Modul Algoritma Dan Pemrograman I Dengan Bahasa C
Bahasa
: C++
Software : Turbo C++ 4.5
LABORATORIUM KOMPUTER
PROGRAM TEKNIK INFORMATIKA
UNIVERSITAS TEKNOLOGI YOGYAKARTA
2009
1.
PENDAHULUAN
Istilah-Istilah Umum
Sebelum mempelajari lebih lanjut, perlu diketahui beberapa istilah umum yang sering
digunakan dalam hubungannya dengan Algoritma dan pemrograman.
Program, merupakan kata, ekspresi, pernyataan atau kombinasinya yang disusun dan
dirangkai menjadi satu kesatuan prosedur yang berisi urutan langkah untuk
menyelesaikan masalah yang diimplementasikan dengan menggunakan bahasa
pemrograman, sehingga dapat dieksekusi oleh komputer. Pemrograman
Bahasa Pemrograman, merupakan prosedur/tata cara penulisan program. Pada
bahasa pemrograman, terdapat 2 hal penting, yaitu sintax dan sematik. Sintax
merupakan aturan aturan gramatikal yang mengatur tata cara penulisan kata, ekpresi
dan pernyataan. Sematik merupakan anturan untuk menyatakan suatu arti.
Pemrograman merupakan suatu proses mengimplementasikan urutan langkah untuk
menyelesaikan suatu masalah dengan menggunakan bahasa pemrrograman.
Beberapa Standar dalam penulisan program yang baik:
a. Kebenaran logika dan penulisan
b. Waktu minimum untuk penulisan program
c. Kecepatan maksimum untuk mengeksekusi program
d. Ekpresi penggunaan memori yang sesuai
e. Kemudahan merawat dan mengembangkan program
f. User friendly
g. Portabilias Program, bisa berjalan di berbagai sistem operasi
h. Pemrograman Modular/Pemecahan program dalam beberapa modul
Selain standar penulisan program, terdapat pula Standar perawatan dan
pengembangan program, sebagai berikut:
a. Dokumentasi yang baik
b. Penlisan Intruksi
- Penulisan progrm yang baik/teratur
Contoh penulisan yang kurang baik:
{
printf(Terima kasih\n);Tekan enter);}
- Pemisahan antar modul dengan spasi
Penggunaan hurus besar dan huruf kecil dalam penulisan variabel dan
komentar
- Pemberian tabulasi yang berbeda dalam penulisan program
c. Penggunaan prosedur-prosedur standar yang sudah dikenal oleh umum.
Algoritma merupakan suatu metode khusus yang tepat dan terdiri dari sereangkaian
langkah yang terstruktur dan ditulis secara sistematis, yang akan dikerjakan untuk
menyelesaikan suatu masalah. Proses dari maslaah hingga menjadi suatu algoritma
disebut dengan tahap pemecahan masalah, sedangkan tahap dari algoritma hingga
menjadi sautu program yang siap diimplementasi disebut dengan tahap implementasi.
masalah
Tahap pemecahan
masalah
algoritma
Tahap
implementasi
solusi
Terdapat 2 gelas, A dan B. Gelas A diisi dengan Air Teh. Sedangkan gelas B diisi
dengan Air Kopi. Bagimana cara menukar, sehingga hasil akhirnya Gelas A menjadi
berisi Air Kopi dan gelas B berisi Air Teh?
Mungkin sebagian kita membuat langkah-langkah (Algoritma) sebagai berikut:
1. Masukkan air Teh dari Gelas A ke Gelas B
2. Masukkan air Kopi dari Gelas B ke Gelas A
Algoritma dan Pemrograman I dengan bahasa C++
Universitas Teknologi Yogyakarta
Tetapi perlu diperhatikan, bahwa Algoritma di atas merupakan sebuah algoritma yang
tidak logis. Bagaimana mungkin Air Teh dari gelas A dimasukkan ke gelas B
sementara gelas B masih ada isinya?
Agar dapat melakukan pertukaran dengan benar, tentunya diperlukan satu buah gelas
kosong, sebagai perantara. Anggap saja Gelas C., sehingga Algoritmanya adalah:
1. Sediakan Gelas C
2. Masukkan air Teh dari Gelas A ke Gelas C
3. Masukkan air Kopi dari Gelas B ke Gelas A
4. Masukkan air Teh dari Gelas C ke Gelas B
dll
Pemrogram atau Programmer adalah orang yang bekerja menyusun sautu program.
Untuk menghasilkan program yang baik dibutuhkan pemrogram yang baik dan
berkualitas. Adapun beberapa cirinya adalah:
-
File HEADER
Merupakan file-file teks yang berisi fungsi-fungsi khusus yang digabungkan dengan
program dengan perintah include. File-file header biasanya berektensi .h.
Contoh : stdio.h dan conio.h
File LIBRARY
Merupakan file-file yang di dalamnya terdapat fungsi-fungsi dasar dari Turbo C yang
digabungkan dengan program utama dengan perintah link. File-file library ini bertipe
.lib
MATH Library
File ini digunakan untuk hal-hal yang berhubungan dengan operasi bilangan. File yang
kegunaannya hampir sama dengan file ini adalah emu.lib
Kebanyakan versi C yang beredar adalah kompiler. Proses Kompilasi Linking dari program
C dapat digambarkan sebagai berikut :
Editor
Editor
File Include
(File Judul)
File Program
Sumber
Kompiler
File Pustaka
File Obyek
Linker
File Executable
Algoritma dan Pemrograman I dengan bahasa C++
Universitas Teknologi Yogyakarta
Software Pembantu
Turbo C merupakan salah satu kompiler C yang sangat terkenal. Kompiler ini juga
menyediakanlingkungan program terpadu yang disebut IDE (Integrated Development
Environment) yang bisa dipakai untuk :
Menulis program
Mengkompilasi program
Melakukan pencarian kesalahan (debugging)
Mengkaitkan berbagai objek dan pustaka (linking)
Menjalankan program
PENGENALAN C++
Pada umumnya, program C++ mempunyai susunan umum sbb:
#preprocessor directive
void main()
{
//isi program
}
Keterangan:
1. Preprocessor directive yang tersedia paa bahasa C++ akan dijalankan terlebih
dahulu sebelum program utama c dijalankan. bentuk umum penulisan
preprocessor directive:
2. #include <nama_file>
beberapa file preprocessor yang sering digunakan di antaranya adalah:
iostream.h
conio.h
math.h
graphic.h
Praktikum 1:
Latihan 1a:
Ketiklah program berikut:
#include <stdio.h>
#include <conio.h>
void main()
{
printf("ALGORITMA DAN PEMROGRAMAN");
printf("MENGGUNAKAN BAHASA C/C++\n");
getch();
}
Simpanlah di folder Anda masing-masing dengan nama yang sesuai dengan cara
memilih menu File>>save.
Untuk mengecek program apakah berjalan atau tidak, pilih menu Debug>>run
Jika ada kesalahan, maka program akan langsung menunjuk pada baris mana
kesalahan tersebut. perbaiki dan jalankan
Contoh:
Perintah
printf("ALGORITMA DAN PEMROGRAMAN");
Dapat diganti menjadi
printf("%s DAN %s", ALGORITMA,PEMROGRAMAN);
%s merupakan penentu format untuk data bertipe string. Tentang penentu format
dibahas dalam bab tersendiri.
Ubahlah baris:
printf("ALGORITMA DAN PEMROGRAMAN");
menjadi
printf("ALGORITMA DAN PEMROGRAMAN\n");
kemudian coba jalankan (Debug>>Run)
Latihan 1b.
Buatlah file baru. Buatpula kode programnya jika diinginkan hasil tampilan saat di
jalankan sbb:
============================================
=
LATIHAN 1.B
=
=
ALGORITMA DAN PEMROGRAMAN II
=
=
OLEH: UM412 (ISI NAMA ANDA)
=
=
FAKULTAS TEKNOLOGI INFORMASI
=
=
TULIS NAMA UNIVERSITAS ANDA
=
============================================
Nb:
Dilarang copy-paste dari latihan sebelumnya
Latihan 1c.
Buatlah file baru. Buatpula kode programnya dengan tampilan bebas.
2.
VARIABEL, CONSTANTA, TIPE DATA &
OPERATOR
Variabel & Constanta
Variabel adalah tempat penampung data. Variabel berada di memory komputer. Isi variabel
dapat berubah-ubah. Biasanya setiap variabel mempunyai tipe. Kita dapat memilih sendiri
nama variabel yang disesuaikan dengan tujuan.
TOTAL BIT
8
16
KAWASAN
-128 .. 127
-32768 .. 32767
KETERANGAN
Karakter
Bilangan Integer
TIPE
float
double
void
TOTAL BIT
32
64
0
KAWASAN
3.4E-38 .. 3.4E+38
1.7E-308 .. 1.7E+308
Tidak bernilai
KETERANGAN
Bilangan Real presisi-tunggal
Bilangan Real presisi-ganda
Tak-bertipe
Variabel digunakan dalam program untuk menyimpan suatu nilai dan nilai yang ada padanya
dapat diubah-ubah selama eksekusi program berlangsung. Variabel yang digunakan dalam
program haruslah dideklarasikan terlebih untuk dengan tujuan memesan memori dan
menentukan jenis data yang bisa disimpan di dalamnya.
Contoh :
Pendefinisian variable
int jumlahsiswa;
float potongan_harga, hargaKotor, harga;
char jawaban
Pemberian nilai variabel:
jumlahsiswa = 10;
potongan_harga= 0.20;
hargaKotor= jumlah * harga;
jawaban=y;
Penentu Format
Penentu format untuk data tipe lain dapat dilihat pada tabel berikut :
Tipe Data
Penentu
Format
Integer
%d
Floating Point
Bentuk Desimal
%f
Bentuk Berpangkat
%e
Double Precision
%lf
Character
%c
String
%s
Unsigned Integer
%u
Long Integer
%ld
Long Unsigned Integer
%lu
Unsigned Hexadec. Int.
%x
Unsigned Octal Int.
%o
Mendefinisikan Konstanta
Berbeda dengan variabel, yang mana isi bisa berubah/diubah sesuai keinginan, konstanta
merupakan tempat penyimpanan suatu nilai dalam memory yang mana nilai tersebut tidak
akan diubah-ubah/bersifat konstant/tetap. Pendefinisiannya dilakukan dengan menggunakan
pengarah praprocessor #define atau dengan const.
Contoh:
const pi=3.142
#define pi=3.142
Operator
Operator merupakan simbol atau karakter yang biasa dilibatkan dalam program untuk
melakukan suatu operasi atau manipulasi seperti penjumlahan, memberikan nilai,
membandingkan kesamaan dan sebagainya.
Operator yang dikenakan terhadap dua buah nilai (operand) disebut unary, misalnya a + b.
Sedangkan operator yang hanya memiliki sebuah operand disebut unary, misalnya c.
1. Operator Aritmatika
BINARY
*
Perkalian
/
Pembagian
%
Sisa pembagian
+
Penjumlahan
Pengurangan atau negasi
UNARY
+
Tanda minus
Tanda plus
2. Operator Penurunan dan Penaikan
++
--
Operator penaikan
Operator penurunan
Contoh :
x = x + 1 ; dapat ditulis ++x; atau x++ ;
y = y 1 ; dapat ditulis - -y; atau y - - ;
3. Operator Hubungan
>
Lebih besar
<
Lebih kecil
>=
Lebih besar atau samadengan
<=
tidak sama dengan
!=
sama dengan (bukan untuk
==
assignmen/pengisian)
4. Operator bitwise
&
|
!
And
Or
not
++ -- (unary minus)
* / %
+-
Contoh:
x=4+2-5;
x=4-2+5;
x=4-4/2;
//hasil: x=1
//hasil: x=7
//hasil: x=2
{,}
luas
float
*,=
Praktikum 2:
Latihan 2a:
Ketiklah program berikut:
#include <stdio.h>
#include <conio.h>
void main()
{
int panjang,lebar;
float luas;
printf("\n");
printf("====================================\n");
printf("PROGRAM PENCARI LUAS PERSEGI PANJANG\n");
printf("====================================\n");
printf("Masukkan panjang :");scanf("%d",&panjang);
printf("Masukkan lebar
:");scanf("%d",&lebar);
luas=panjang*lebar;
printf("====================================\n");
printf("Luasnya adalah : %7.2f\n",luas);
printf("====================================\n");
getch();
}
-
Latihan 2b. jika sudah berhasil, buatlah sebuah file baru yang dapat digunakan untuk
mencari luas dari persegi panjang jika tampilan yang di inginkan seperti berikut:
Latihan 2c. simpan hasil yang sudah dibuat sebelumnya. perbaiki program yang yang
sudah dibuat, sehinggap program dapat digunakan untuk mencari garis miring dan
keliling segitiga siku dengan tampilan seperti berikut:
Catatan:
- Untuk menghitung garis miring dihitung dengan rumus
gm=sqrt(alas*alas+tinggi*tinggi)
- untuk dapat menggunakan fungsi sqrt, diperlukan header math.h (tambahan
perintah #include <math.h>)
-
3.
FUNGSI-FUNGSI UMUM
Terdapat beberapa perintah/fungsi yang sering digunakan dalam bahasa c++, di antaranya
adalah :
- fungsi untuk menampilkan : printf,puts, putchar, dll
- fungsi untuk memasukkan: scanf, getch, getche, dll
- fungsi numeric: sqrt, pow, tan, div, ceil, floor, exp, max, min dll.
- fungsi string: strcpy,strcat,strupr,strlwr dll
PRINTF()
Merupakan fungsi yang paling umum digunakan dalam menampilkan data. Berbagai jenis
data dapat ditampilkan ke layar dengan fungsi ini.
Bentuk penulisan :
printf(string kontrol, argumen1, argumen2, );
String kontrol dapat berupa keterangan yang akan ditampilkan pada layar beserta penentu
format seperti %d, %f. Penentu format dipakai untuk memberi tahu kompiler mengenai
jenis data yang akan ditampilkan
Argumen adalah data yang akan ditampilkan ke layar. Argumen ini dapatr berupa
variabel, konstanta atau ungkapan
PUTS()
Fungsi ini digunakan khusus untuk menampilkan data string ke layar. Sifat fungsi ini, string
yang ditampilkan secara otomatis akan diakhiri dengan \n (pindah baris). Dibandingkan
dengan printf(), perintah ini mempunyai kode mesin yang lebih pendek.
PUTCHAR()
Digunakan khusus untuk menampilkan sebuah karakter ke layar. Penampilan karakter tidak
diakhiri dengan perpindahan baris, misalnya :
putchar(A); sama dengan printf(%c, A);
Contoh :
#include <stdio.h>
#include <conio.h>
void main()
{
char A;
int nilai1=20;
float nilai2=2000.0;
clrscr();
printf("Angka %d dapat ditampilkan dalam format %3d \n", nilai1, nilai1);
printf("Angka %f dapat ditampilkan dalam format %8.3f,nilai2,nilai2);
SCANF()
Merupakan fungsi yang dapat digunakan untuk memasukkan berbagai jenis data. Bentuk
scanf() sesungguhnya menyerupai fungsi printf() yang melibatkan penentu format. Bentuk
penulisan : scanf(string kontrol, daftar argumen);
contoh:
scanf("%f",&gaji);
scanf("%d-%d-%d",&bil1,&bil2,&bil3);
Hal-hal yang perlu diperhatikan dalam pemakaian scanf yaitu :
1. scanf memberi pergantian baris secara otomatis, artinya Anda tidak perlu memberi \n
untuk berpindah ke baris berikutnya.
2. scanf memakai penentu format, tetapi tidak memerlukan penentu lebar field. Contoh
yang salah : scanf(10.2f,&gaji);
3. Variabel yang dipakai di dalam scanf harus didahului dengan operator alamat (&).
4. jika diinginkan memasukkan lebih dari 1 data, maka dapat dilakukan dengan
memasukkan data-data dalam 1 baris dengan pemisah koma(,), garis hubung (-), titik
koma (,) atau spasi ( )
GETCH() dan GETCHE()
Dipakai untuk membaca sebuah karakter dengan sifat karakter yang dimasukkan tidak perlu
diakhiri dengan enter. Fungsi getch() merupakan singkatan dari get character artinya baca
karakter tetapi isian data yang dimasukkan tidak akan ditampilkan di layar. Fungsi getche()
sebenarnya adalah singkatan dari get character and echo, artinya baca karakter lalu
tampilkan di layar
Contoh :
getch();
karakter=getch();
getche();
Catatan :
Program yang menggunakan printf(), putchar(), scanf() dan puts() mengandung baris
yang berisi #include <stdio.h>
Program yang melibatkan getche() atau getch() mengandung baris yang berisi
#include <conio.h>
Fungsi Matematika
Include
: #include<stdlib.h>
Beberapa fungsi matematika yang sering digunakan adalah :
Fungsi Keterangan
Contoh
sqrt
Menghitung akar positif dari sebuah sqrt(x);
bilangan bulat
pow
Menghitung xy
z = pow(10,2);
tan
Menghitung nilai tangent dari sebuah sudut
sin
Menghitung nilai sinus dari sebuah sudut
cos
Menghitung nilai cos dari sebuah sudut
acos
Menghitung nilai arctan dari sebuah sudut
asin
Menghitung nilai arcsin dari sebuah sudut
atan
Menghitung nilai arctan dari sebuah sudut
ceill
membulatkan ke atas
floor
membuatkan ke bawah
exp
mencari nilai exponensial ex
fmod
mencari sisa pembagian
fmod(9,2)
Hasil
Fungsi String
String merupakan bentuk data yang biasa dipakai dalam bahasa pemrograman untuk
keperluan menampung dan memanipulasi data teks
Catatan:
- Variabel string adalah variabel yang dipakai untuk menyimpan string, misalnya : char
nama[20];
- Merupakan instruksi untuk mendeklarasikan variabel string dengan panjang maksimal
mengandung 20 karakter (termasuk karakter NULL).
- Pemasukan data string ke dalam suatu variabel biasa dilakukan dengan memakai gets().
- Bentuk penulisan : gets(nama variabel);
Jika memakai scanf() instruksinya menjadi scanf(%s, nama variabel);
Didepan nama variabel tidak perlu menggunakan operator &
Data string yang dimasukkan tidak dapat mengandung spasi
Prototipe gets() ada pada file stdio.h
Untuk menampilkan isi variabel string, pernyataan yang dapat digunakan berupa :
puts(variabel string);
printf(%s, variabel string);
printf(variabel string);
Fungsi
strlen
strlwr
strupr
Keterangan
Contoh
Menghitung panjang string
strlen(Turbo C);
mengubah string menjadi huruf strwr(Turbo C);
kecil
mengubah string menjadi huruf
besar
Hasil
3
turbo c
strcpy
strcat
atof
strcpy(a,b);
srcat(a,b);
atof(100 orang);
atof(1e3);
ab
100.0
1000
Praktikum 3:
Latihan 3.a:
Ketiklah program berikut:
#include <stdio.h>
#include <conio.h>
void main()
{
char A;
int nilai1=20;
float nilai2=2000.0;
clrscr();
printf("Angka %d dapat ditampilkan dalam format %3d \n", nilai1,
nilai1);
printf("Angka %f dapat ditampilkan dalam format
%8.3f",nilai2,nilai2);
printf(" dan %-8.0f\n", nilai2);
putchar('T');
puts("ekan sembarang tombol untuk melanjutkan");
getch();
}
Latihan 3.b
Jika sudah berhasil, buatlah sebuahfile baru, dan ketikkan kode berikut:
#include
#include
#include
#include
<stdio.h>
<conio.h>
<math.h>
<string.h>
void main()
{
char A;
int angka1,angka2;
float angka3;
char nama[20];
clrscr();
printf("Masukkan Nama Anda :");
scanf("%s",&nama);
printf("Masukkan 2 angka secara berturut-turut dengan
jarak spasi :");
scanf("%d %d",&angka1, &angka2);
printf("TERIMA KASIH %s \n",strupr(nama));
angka3=sin(angka1);
printf("Nilai sinus dari %d adalah %4.2f\n",angka1,angka3
);
printf("Nilai
cos
dari
%d
adalah
%4.2f\n",angka2,cos(angka2));
getch();
}
Simpan dan jalankan
Latihan 3.c
Buatlah sebuah program jika diiginkan tampilan tampak seperti berikut:
4.
STRUKTUR PERCABANGAN
Pernyataan if
Pernyataan if-else
Pernyataan switch
Pernyataan IF
bentuk umum :
if (kondisi)
Pernyataan
Contoh :
Jika pembelian lebih besar dari 500000, maka diskonnya 5% dari pembelian
if (beli >= 500000)
diskon=0.05*beli;
Jika if diikuti oleh pernyataan majemuk, maka diperlukan tanda awal blok dan akhir blogk
berupa kurung kurawal ({ })
Contoh :
Jika pembelian lebih besar dari 500000, maka disktonnya 5% dari pembelian dan
masih ditambah voucher senilai 50000
if (beli >= 500000)
{
diskon=0.05*beli;
bonus=voucher belanja senilai 50000;
}
if (nilai>=60)
keterangan=lulus
else
keterangan=uji ulang
Tangga if-else dapat dipakai untuk menguji beberapa syarat. Cara lain untuk menyatakan
bebrapa syatat dapat juga dilakukan dengan perintah switch.
Di dalam pernyataan switch, sebuah variabel secara berturut-turut diuji oleh daftar konstanta
bilangan bulat atau konstanta karakter. Jika sesuai dengan sebuah konstanta, pernyataan yang
mengikuti konstanta akan dikerjakan. jika tidak terdapat konstanta yang sesuai, pernyataan
default akan dikerjakan
Bentuk Umum :
switch (variabel)
{
case konstanta1:
{
pernyataan;
break;
}
case konstanta2:
{
pernyataan;
break;
}
default
{
pernyataan;
}
}
contoh:
jika kategori=A, maka keterangan =Istimewa
jika kategori=B, maka keterangan =Baik
jika kategori=C, maka keterangan =Cukup
switch (kategori[0])
{
case A:
{
printf(Istimewa);
break;
}
case B:
{
printf(Istimewa);
break;
}
case C:
{
printf(Istimewa);
break;
}
default
{
printf(Maaf, kategori tidak dikenal);
break;
}
}
Catatan:
1. Switch hanya dapat memeriksa persamaan dengan sebuah konstanta, sedangkan
IF dapat memeriksa syarat-syarat lain (>,<, >=,<=,!= dan sebagainya). contoh:
pernyataan jika nilai >= 85 tidak bisa dilakukan dengan menggunakan
pernyataan switch.
2. Tidak ada dua konstanta yang sama didalam sebuah switch
Praktikum 4:
Latihan 4.a:
Ketikkan perintah berikut:
#include <conio.h>
#include <stdio.h>
int main()
{
char nama[20],
char kategori;
int nilai;
keterangan[30];
printf("\nSelamat..., %s",&nama);
printf("\nSelangkah lagi... Anda layak dapat
bintang...!");
kategori[0] =B;
}
else
{
printf("\nMaaf..., %s",&nama);
printf("\nSebaiknya Anda belajar lagi...!");
kategori[0] =C;
}
printf("\nKategori : %s",&kategori[0] );
getch();
return 0;
}
Latihan 4.b:
Buat program untuk menentukan suatu bilangan GENAP atau GANJIL jika
diinginkan
Input :
Masukkan sebuah bilangan bulat : 6
Output :
Nilai 6 habis dibagi 2
Sehingga termasuk sebagai bilangan GENAP
Latihan 4.c:
Buatlah program dengan tampilan seperti berikut:
Output 1 :
=============================
LATIHAN 4.C
MENCARI LUAS
=============================
1. Luas Persegi Panjang
2. Luas Segi tiga
3. Luas Lingkaran
=============================
Pilihan Anda : 1
=============================
Output 2: jika yang dipilih 1 :
Terima kasih, menu yang anda pilih nomor 1
Masukkan Panjang : 20
Masukkan Lebar
: 10
Luasnya Adalah
: 200
5.
STRUKTUR PERULANGAN
for
while
do while
Perulangan FOR
Bentuk umum Loop For :
for (inisialisasi; syarat; penambahan)
pernyataan;
Keterangan :
Inisialisasi adalah pernyataan untuk menyatakan keadaan awal dari variabel kontrol.
Syarat adalah ekspresi relasional yang menyatakan berhentinya pengulangan.
Penambahan menyatakan perubahan variabel kontrol setiap terjadi pengulangan. Setiap
bagian harus dipisahkan oleh tanda titik koma.
Contoh :
int i;
for (i=1; i <=5 ; i++)
printf("%d \n",i);
contoh :
int x,y;
for (x=0,y=0; x+y<=20; x++,y++) printf("%5d %5d %5d\n",x,y,x*y);
Hasil:
Variasi lain adalah dengan menghilangkan salah satu bagian dari perintah perulangan
contoh :
#include <stdio.h>
#include <conio.h>
void main()
{
char ulang;
clrscr();
for (ulang=' '; ulang!='t'; )
{
printf("Belajar perulangan Variasi For: \n");
printf("Mengulang lagi? (t untuk menghentikan) : \n");
ulang=getche();
}
}
Jika program di atas dijalankan, maka komputer akan meminta pengguna untuk memasukkan
karakter, dan akan dihentikan jika pengguna memasukkan huruf t
Pengurangan elemen loop dapat juga digunakan pada perlulangan tanpa batas (Loop tak
terhingga)
contoh :
char ch;
for (ch=' '; ; ) ch=getche();
Perulangan lain, juga terkadang digunakan untuk mementukan waktu tunggu.
Contoh:
int t,x;
x=100;
for (t=0 ; t<x ; t++ ) ;
dalam contoh di atas, lama perlulangan tergantung besar angka yang ada pada variabel x.
Perulangan WHILE
Bentuk umum :
while (syarat) pernyataan;
Pernyataan pada loop while dapat berupa sebuah pernyataan atau blok pernyataan atau
pernyataan kosong. Pernyataan akan diulang selama syarat benar,
contoh :
int i=1;
while (i <= 5)
{
printf("ALGORITMA\n");
i=i++;
}
Hasil :
Loop while menyatakan bahwa pengulangan akan dilakukan terus selama syarat terpenuhi.
Perulangan DO WHILE
Bentuk umum :
do
{
pernyataan;
pernyataan;
} while (syarat)
Berbeda dengan perlulangan while, Perulangan menggunakan do while syarat akan dicek
setelah pernyataan dijalankan 1x. jika memenuhi syarat, maka akan mengulang lagi.
contoh :
int pilih;
do
{
printf("=============\n");
printf("1. Kelas Reguler \n");
printf("2. Kelas Intensif\n");
printf("=============\n");
printf("Pilihan Anda:");
scanf("%d",&pilih);
} while ( (pilih!=1) && (pilih!=2));
Jika program di atas dijalankan, komputer akan meminta pengguna untuk memasukkan
pilihan. jika yang dipilih tidak sama dengan 1 dan 2, maka komputer akan mengulang.
Praktikum 5:
Latihan 5.a.
Ketiklah program berikut:
#include <math.h>
#include <stdio.h>
#include <conio.h>
void main()
{
int i, pangkat2, jumlah;
float akar;
char garis[40] = "===============================";
clrscr();
printf("Tabel Kuadrat dan Akar Kuadrat \n");
printf("%s\n",garis);
printf("Bilangan Kuadrat Akar Kuadrat\n");
printf("%s\n",garis);
for (i=1; i<=10; i++)
{
pangkat2 = i * i;
akar = sqrt(i);
printf(" %2d
%3d
%6.4f \n",i,pangkat2,akar);
}
printf("%s\n",garis);
getch();
}
Latihan 5b
Ubahlah program yang sudah dibuat, sehingga menjadi seperti berikut:
#include <math.h>
#include <stdio.h>
#include <conio.h>
main()
{
int i, pangkat2, jumlah;
float akar;
char garis[50] = "========================================";
float jumlah1,jumlah2,jumlah3;
jumlah1=0;jumlah2=0;jumlah3=0;
clrscr();
printf("Tabel Kuadrat dan Akar Kuadrat \n");
printf("%s\n",garis);
printf("Bilangan Kuadrat Akar Kuadrat\n");
printf("%s\n",garis);
for (i=1; i<=10; i++)
{
pangkat2 = i * i;
akar = sqrt(i);
jumlah1+=i;
jumlah2+=pangkat2;
jumlah3+=akar;
printf(" %8d %8d %8.2f \n",i,pangkat2,akar);
}
printf("%s\n",garis);
printf("Jumlah%4.0f %8.0f %8.2f \n",jumlah1,jumlah2,jumlah3);
printf("%s\n",garis);
getch();
}
Keterangan:
- Jumlah 55, merupakan jumlah dari variabel i setelah diulang-ulang sampai 10X
jumlah1+=1, bisa juga ditulis jumlah1=jumlah1+i; yang artinya nilai jumlah yang
baru adalah nilai jumlah sebelumnya ditambah dengan i, sehingga:
Saat
Saat
Saat
Saat
dst
i=1,
i=2,
i=3,
i=4,
maka
maka
maka
maka
jumlah1=jumlah1+i
jumlah1=0+1= 1, dimana
jumlah1=1+2= 3, dimana
jumlah1=3+3= 6, dimana
jumlah1=6+4= 10, dimana
jumlah1
jumlah1
jumlah1
jumlah1
Latihan 5d.
Buatlah program untuk menghitung suatu faktorial
contoh:
5!=5*4*3*2*1 =120
Jika diinginkan tampilan hasinya:
Latihan 5e.
Jika sudah berhasil, simpan dengan nama lain.
sebelumya=0
sebelumya=1
sebelumya=3
sebelumya=6
dan
dan
dan
dan
i=1;
i=2;
i=3;
i=4;
Latihan 5f.
Jika sudah berhasil, simpan dengan nama lain.
Buatlah sebuah program jika diinginkan tampil seperti berikut
Latihan 5g.
Jika sudah berhasil, simpan dengan nama lain.
Buatlah sebuah program jika diinginkan menampilkan angka:
012345432101234543210
Latihan 5h.
Jika sudah berhasil, simpan dengan nama lain.
Buatlah sebuah program jika diinginkan menampilkan angka:
1
2
3
4
5
9
8
7
6
5
Latihan 5i.
Jika sudah berhasil, simpan dengan nama lain.
Buatlah sebuah program jika diinginkan menampilkan angka:
1
12
123
1234
12345
Latihan 5j.
Jika sudah berhasil, simpan dengan nama lain.
Buatlah sebuah program jika diinginkan menampilkan angka:
1
121
12321
1234321
123454321
Latihan 5k.
Jika sudah berhasil, simpan dengan nama lain.
Buatlah sebuah program yang dapat digunakan untuk menampilkan bilangan prima
dari 2 sampai n, dimana n diinputkan oleh user.
6.
ARRAY
Array merupakan deretan variabel yang berjenis sama dan mempunyai nama sama. Pada
bahasa C, array mempunyai lokasi yang bersebelahan. Alamat terkecil menunjuk ke elemen
pertama dan alamat terbesar menunjuk ke alamat terakhir. Sebuah elemen pada array diakses
melalui indeksnya.
Array 1 dimensi
Bentuk umum:
tipe_array nama_array[ukuran];
//array 1 dimensi
Contoh :
int nilai[5];
nilai[0]=90;
nilai[1]=80;
Bentuk umum:
tipe_array nama_array[ukuran1][ukuran2];
tipe_array nama_array[ukuran1][ukuran2][ukuran3];
dst.
//array 2 dimensi
//array 3 dimensi
Contoh:
int matrix1[2][2];
char nama[10][20];
Bentuk umum :
tipe nama_array [ukuran1, ukuran2, , ukuran n] = {daftar nilai};
Daftar nilai berisi konstanta yang sesuai dengan tipe array. Setiap konstanta dipisahkan oleh
tanda koma. Konstanta pertama akan mengisi elemen pertama, konstanta kedua untuk elemen
kedua dan seterusnya.
contoh:
int nilai[5] = {90,85,75,99,100};
hal ini menunjukkan bahwa
nilai[0]=90, nilai[1]=80 dan seterusnya.
Pointer
Pointer adalah sebuah variabel yang berisi alamat memori komputer di mana suatu variabel
diletakkan.
Perhatikan contoh penggunaan memori di bawah ini:
nilai variable
alamat memori
...
...
varA
255
1456
varB
700
1457
...
...
...
variabel varA di simpan di memori komputer pada alamant 1456 dan , variabel varB
diletakkan di 1457
varA berisi angka 255 dan varB berisi angka 700
Operator Pointer
Ada 2 operator pointer :
1. Operator &
Bersifat unary (hanya memerlukan satu operan). Operator ini menghasilkan alamat dan
operannya. Contoh : x = &a, jika kita mengacu pada gambar di atas, maka isi variabel x
adalah 1004.
2. Operator *
Operator * dan operator & bersifat saling komplemen. Operator * juga bersifat unary dan
menghasilkan nilai yang berada pada sebuah alamat..
Contoh:
int varA, *alamat1, varB;
varA=5;
alamat1=&varA;
varB=*alamat1;
printf("\n Isi variabel varA adalah %4d", varA);
printf("\n Isi variabel alamat1 adalah %4u", alamat1);
printf("\n Isi variabel varB adalah %4d", varB);
printf("\n Isi variabel alamat1 sekarang adalah %4u",
alamat1++);
Keterangan:
variabel alamat1 berisi alamat memory dari variabel varA.
pada contoh di atas, 8808 merupakan tempat di mana data variabel a di simpan di
memory komputer pada saat program dijalankan. angka tidak mutlak, bisa berubah setiap
saat jika program ini di jalankan di lain waktu.
variabel alamat1 harus bertipe sama dengan varA, yaitu integer.
*x menghasilkan isi dari alamat yang dituju X, sehingah asil dari varB=5, karena alamat
yang dituju alamat1 adalah variabel A.
Alamat dapat dicetak dengan format %u sebab alamat adalah bilangan bulat tanpa tanda
(unsigned integer)
nilai increment alamat1 adalah sama dengan jumlah memory yang digunakan oleh
variabel int (variabel yang dituju), yaitu 2, sehingga ++alamat1 menghasilkan nilai
8808+2=8810;
Contoh 2:
int nilai[5],*alamat1;
int hasil;
nilai[0]=95;
nilai[1]=90;
nilai[2]=80;
nilai[3]=75;
alamat1=&nilai[1];
hasil=*(alamat1+2);
//sama dengan hasil=nilai[1+2]
printf("\n Isi variabel nilai[1] adalah %4d", nilai[1]);
printf("\n Isi variabel alamat1 adalah %4u", alamat1);
printf("\n Isi variabel nilai[3] adalah %4d", nilai[3]);
printf("\n Isi variabel Hasil adalah %4u", hasil);
Hasilnya:
Keterangan:
hasil=*(alamat1+2); sama halnya dengan hasil= nilai[3],
yaitu nilai[1+2]
Array dapat ditunjuk dengan index-nya dan dengan alamat. Penunjukan dengan alamat akan
lebih cepat daripada penunjukan dengan index-nya.
Contoh 1:
/* menggunakan index array */
#include <stdio.h>
#include <ctype.h>
#include <conio.h>
void main()
{
char kata[80];
int i;
printf("Masukkan kalimat(huruf besar):\n");gets(kata);
printf("huruf kecilnya adalah : ");
for(i=0; kata[i]; i++) printf("%c",tolower(kata[i]));
getch();
}
/* menggunakan pointer */
#include <stdio.h>
#include <ctype.h>
#include <conio.h>
void main()
{
char kata[80], *p;
clrscr();
printf("Masukkan kalimat(huruf besar):\n"); gets(kata);
printf("huruf kecilnya adalah:\n");
p=kata;
while (*p) printf("%c",tolower(*p++));
getch();
}
Hasil:
Contoh 2:
#include <stdio.h>
#include <conio.h>
void main()
{
char kata[80];
char *p;
int i;
clrscr();
printf("Masukkan 2 kalimat: "); gets(kata);
for (i=0; kata[i] && kata[i] != '.'; i++);
p=&kata[i+1];
printf("Kalimat ke-2 adalah : \n");
printf(p);
getch();
}
Hasil:
Contoh3:
Penggunaan Array dalam Pengurutan Data:
#include<stdio.h>
#include<conio.h>
void InputData(int z[],int x);
void BubbleSort(int z[],int x);
void SelectionSort(int z[],int x);
void Tampil(int z[],int x);
main()
{
int N,data[100];
int ch;
printf("Masukkan banyak data : ");
scanf("%d",&N);
InputData(data,N);
printf("Menu Utama");
printf("Jenis-jenis metode pengurutan \n");
printf("1. Bubble Sort\n");
printf("2. Selection Sort\n");
printf("\nMasukkan jenis pengurutan (1-2) : ");
scanf("%d",&ch);
switch(ch) {
case 1 : BubbleSort(data,N);break;
case 2 : SelectionSort(data,N);break;
}
printf("\n\nData yang telah terurut : \n");
Tampil(data,N);
getch();
}
void InputData(int z[],int x)
{
int i;
for(i=0;i<x;i++)
{
printf("Data ke %d : ",i+1);
scanf("%d",&z[i]);
}
}
void BubbleSort(int z[],int x)
{
int i,j,tmp;
for(i=0;i<x;i++)
for(j=0;j<x;j++)
if(z[i]<z[j]) {
tmp=z[i];
z[i]=z[j];
z[j]=tmp;
}
}
void SelectionSort(int z[],int x)
{
int i,j,tmp;
for(i=0;i<x-1;i++)
{
int min=i;
for(j=i;j<x+1;j++)
if(z[min]>z[j]) min=j;
tmp=z[i];
z[i]=z[min];
z[min]=tmp;
}
}
void Tampil(int z[],int x)
{
for(int i=0;i<x;i++)
printf("%d ",z[i]);
}
Hasil:
Array Pointer
Seperti halnya variabel lain, Array pointer bisa juga digunakan.
bentuk umum:
tipe *nama_variable_pointer[ukuran]
contoh
char *y[10]
array pointer ini sering digunakan dalam berbagai operasi string.
Contoh dalam aplikasi:
#include <stdio.h>
#include <ctype.h>
#include <conio.h>
void main()
{
char *jurusan[] = {
"Jogja-Semarang",
"Jogja-Solo",
"Jogja-Surabaya",
"Jogja-Malang"
};
int pilih;
clrscr();
printf("Masukkan Pilihan Anda(1-4):"); scanf("%d",&pilih);
printf("\nAngkutan yang Anda pilih adalah : \n");
printf("%s",jurusan[pilih-1]);
getch();
}
Hasil:
Contoh 2:
#include <stdio.h>;
#include <conio.h>;
void main()
{
char *nama1 = "SEBENING EMBUN PAGI";
char *nama2 = "SEJERNIH MATA AIR";
char *nama3;
clrscr();
puts("Awal :");
printf("Nama-1 : %s", nama1);
printf("\nNama-2 : %s", nama2);
nama3=nama1;
nama1=nama2;
nama2=nama3;
puts("\n\nSetelah ditukar :");
printf("Nama-1 : %s", nama1);
Pointer banyak dilibatkan dalam program C, misalnya untuk melewatkan string dari
suatu fungsi ke fungsi yang lain. Penerapan pointer yang paling umum yaitu untuk
menciptakan variabel dinamis yang memungkinkan untuk memakai memori bebas
(memori yang belum dipakai) selama eksekusi program.
Agar suatu pointer menunjujk ke variabel lain, mula-mula pointer harus diisi dengan
alamat dari variabel yang akan ditunjuk. Untuk menyatakan alamat dari suatu
variabel, operator & (operator alamat, yang bersifat unary) bisa digunakan dengan
cara menempatkan operator di depan nama variabel.
Jika suatu variabel sudah ditunjuk pointer, variabel tersebut dapat diakses melalui
variabel itu sendiri (dikatakan sebagai pengaksesan langsung) ataupun melalui
pointer (dikatakan sebagai pengaksesan tidak langsung). Pengaksesan tak langsung
dilakukan dengan menggunakan operator indirection berupa simbol * (bersifat
unary).
Praktikum 6:
Latihan6.a
Ketiklah program di bawah ini:
/* memasukkan data nilai*/
#include <stdio.h>
#include <ctype.h>
#include <conio.h>
void main()
{
char nama[10] [25];
float nilai[10], jumlah, rata;
int jumlahAnak,i;
char garis[40]="\n==================================";
clrscr();
printf("Banyaknya Anak : "); scanf("%d",&jumlahAnak);
jumlah=0;
for (i=1; i<=jumlahAnak; i++)
{
printf("Nama Mahasiswa : "); scanf("%s",&nama[i]);
printf("Nilai : "); scanf("%f",&nilai[i]);
jumlah += nilai[i];
}
clrscr();
printf(garis);
printf("\nDaftar Nilai Ujian Bahasa C");
printf("\nNama Mahasiswa
Nilai");
printf(garis);
for (i=1; i<=jumlahAnak; i++)
printf("\n %-25s
%5.1f", nama[i], nilai[i]);
printf(garis);
rata= jumlah / jumlahAnak;
printf("\nRata-rata adalah %5.2f ", rata);
getch();
}
Simpan dan jalankan
Latihan 6.b
Buatlah program berikut:
/* menghitung penjumlahan matrix */
#include <stdio.h>
#include <ctype.h>
#include <conio.h>
void main()
{
int matrix1[5][5], matrix2[5][5], matrix3[5][5];
int baris,kolom,i,j;
int jumlah;
char garis[40]="==================================\n";
clrscr();
printf("%s",garis);
printf("Jumlah baris matrix: "); scanf("%d",&baris);
printf("Jumlah kolom matrix: "); scanf("%d",&kolom);
printf("%s",garis);
printf("Matrix 1:\n");
for (i=1; i<=baris; i++)
for (j=1; j<=kolom; j++)
{
printf("matrix1[%d,%d]:",i,j);
scanf("%d",&matrix1[i][j]);
}
printf("%s",garis);
printf("Matrix 2:\n");
for (i=1; i<=baris; i++)
for (j=1; j<=kolom; j++)
{
printf("matrix2[%d,%d]:",i,j);
scanf("%d",&matrix2[i][j]);
}
//menghitung jumlah matrix1 +matrix2
for (i=1; i<=baris; i++)
for (j=1; j<=kolom; j++)
matrix3[i][j]=matrix1[i][j]+ matrix2[i][j];
//menampilkan hasil
printf("%s",garis);
printf("Hasil :\n");
for (i=1; i<=baris; i++)
{
printf("|");
for (j=1; j<=kolom; j++)
printf("%8d
",matrix3[i][j]);
printf(" |\n");
}
printf("%s",garis);
getch();
}
Simpan dan jalankan. jika berhasil, maka akan tampak seperti berikut:
Latihan 6.c
Buatlah program untuk menghitung perkalian matrix di bawah ini:
8 2
1
X
7 4
12
=
15
Latihan 6.d
Buatlah program untuk mengurutkan data dengan metode selection sort.
7.
FUNGSI
Fungsi merupakan sub program. fungsi yang pasti ada di dalam program adalah fungsi main()
seperti program-program yang sudah dibuat sebelumnya.
Contoh fungsi yang sering digunakan: clrsrc(); merupakan fungsi yang digunakan untuk
membersihkan layar. fungsi clrscr ini terdapat dalam file header conio.h. sehingga untuk
memanggil perintah clrscr() sebelumnya harus mengikutkan file conio.h dengan perintah
#include <conio.h>. karena fungsi untuk membersihkan layar sudah dibuatkan oleh C dalam
file conio.h, maka pemrogram tidak perlu susah-susah membuat sebuah fungsi sendiri. fungsi
lain adalah printf(), puts(), gets() dan lain-lain.
adapun fungsi-fungsi yang tidak dibuatkan oleh C, maka pemrogram bisa membuat sendiri
fungsi-fungsi sesuai dengan keinginan pemrogram
beberapat tujuan dibuatnya fungsi:
- agar perintah lebih terstruktur
- mengurangi banyaknya perintah akibat perintah yang sama di ulang-ulang
- efektifitas memori dll
Bentuk umum :
tipe_fungsi nama_fungsi (deklarasi parameter)
{
pernyataan;
pernyataan;
return var
}
cara pemanggilan fungsi
var=namafungsi(parameter);
Keterangan:
- tipe_fungsi merupakan tipe dari hasil kembalian yang diinginkan. adapun nilai yang akan
dikembalikan digunakan perintah return var. jika tidak menginginkan kembalian, cukup
diberikan perintar return; dan tipe_fungsi diisi dengan void.
- perintah return berfungsi untuk mengembalikan nilai, keluar dari fungsi dan kembali ke
program yang memanggil.
- deklarasi parameter merupakan parameter-parameter yang dilewatkan. jika tidak
memerlukan parameter, maka cukup dikosongkan
tipe_fungsi nama_fungsi ()
Contoh 1:
//Menggunakan fungsi
#include <math.h>
#include <stdio.h>
#include <conio.h>
void tampilkanGaris()
{
printf("========================================\n");
}
void main()
{
tampilkanGaris();
printf("Belajar Fungsi\n");
tampilkanGaris();
getch();
}
hasil:
Keterangan:
- Pada contoh1 di atas, fungsi tampilkanGaris berisi perintah untuk menampilkan tanda =
berulang kali.
- karena fungsi tampilkanGaris tidak mengembalikan nilai, maka dibeikan tipe void dan
perintah return tidak harus dituliskan
- fungsi tampilkanGaris dipanggil 2 kali, sehingga tampak hasil garis sebanyak 2 kali pula.
Contoh 2:
//Penggunaan fungsi dan parameter
#include <stdio.h>
#include <conio.h>
void tampilkanGaris(int panjang)
{
int i;
for (i=1;i<=panjang;i++) printf("=");
printf("\n");
}
void main()
{
tampilkanGaris(20);
printf("Belajar Fungsi\n");
tampilkanGaris(30);
getch();
}
Hasil:
Contoh 3a:
//penggunaan fungsi, parameter dan return
#include <stdio.h>
#include <conio.h>
void tambah1(int angka1,int angka2)
{
int hasil;
hasil=angka1+angka2;
printf("%d ditambah %d sama dengan %d\n", angka1, angka2,
hasil);
}
int tambah2(int angka1,int angka2)
{
int hasil;
hasil=angka1+angka2;
return hasil;
}
void main()
{
int h;
tambah1(2,3);
h=tambah2(33,20);
printf("Hasil 33 ditambah 20 sama dengan %d\n",h);
getch();
}
hasil:
2 ditambah 3 sama dengan 5
Hasil 33 ditambah 20 sama dengan 53
Keterangan:
- Pada contoh 3 di atas, fungsi tambah1 tidak mengembalikan nilai, meskipun bisa
menampilkan hasil, sehingga menggunakan tipe void
- fungsi tambah2 mengembalikan nilai bertipe integer yang dimasukkan dalam variabel
hasil. karena nilai yang dikembalikan bertipe integer, maka fungsi yang dipanggil pun
harus pertipe integer, yaitu: int tambah2(...)
- untuk memanggil fungsi tambah1, cukup dengan perintah tambah1(2,3) di mana angka 2
bertipe integer dan angka 3 juga bertipe integer. angka 2 dan tidak bisa diganti-ganti
sesuai dengan keinginan.
- untuk memanggil fungsi tambah2 menggunakan h=tambah2(33,20); yang mana variabel
h harus bertipe integer, sesuai dengan tipe dari fungsi tambah2.
Contoh 3b:
//penggabungan fungsi dan pointer
#include <stdio.h>
#include <string.h>
#include <conio.h>
void bulan(int bl)
{
static char *namaBulan[]=
{ "-", "Januari", "Feburari", "Maret",
"April", "Mei", "Juni", "Juli", "Agustus", "September",
"Oktober", "November", "Desember" };
printf("%s", namaBulan[bl]);
}
void main()
{
printf("Bulan ke-1 adalah bulan ");bulan(1);
};
Hasil:
Bulan ke-1 adalah bulan Januari
Scope Variabel
Jika diperhatikan, dari contoh 3 di atas, terdapat 2 kali inisial variabel hasil, pada fungsi
tambah1 dan pada fungsi tambah2.
Pada fungsi tambah1 terdapat inisial variabel int hasil;
Pada fungsi tambah2 juga terdapat inisial variabel int hasil;
Hal ini menunjukkan bahwa inisial variabel pada suatu fungsi tidak dikenali di fungsi yang
lain. Variabel ini disebut dengan variabel local. Adapun variabel jenis lain adalah variabel
public, dimana semua fungsi mengenali variabel tersebut. Variabel public ini biasanya
diinisialisasi pada sebelum penulisan fungsi-fungsi. Ruang lingkup variabel ini disebut
dengan scope variabel
.
Perhatikan contoh di bawah ini:
Contoh 4a:
//penggunaan fungsi, parameter dan return
#include <stdio.h>
#include <conio.h>
void tambah1(int angka1,int angka2)
{
int hasil;
hasil=angka1+angka2;
printf("%d ditambah %d sama dengan %d\n", angka1, angka2,
hasil);
}
int tambah2(int angka1,int angka2)
{
int hasil;
hasil=angka1+angka2;
return hasil;
}
void main()
{
int h;
tambah1(2,3);
h=tambah2(33,20);
printf("Hasil 33 ditambah 20 sama dengan %d\n",h);
getch();
}
Variabel hasil masih bersifat local. Agar menjadi variabel yang bersifat public, maka
program dapat diubah menjadi:
//penggunaan fungsi, parameter dan return
#include <stdio.h>
#include <conio.h>
int hasil;
void tambah1(int angka1,int angka2)
{
hasil=angka1+angka2;
printf("%d ditambah %d sama dengan %d\n", angka1, angka2,
hasil);
}
int tambah2(int angka1,int angka2)
{
hasil=angka1+angka2;
return hasil;
}
void main()
{
int h;
tambah1(2,3);
h=tambah2(33,20);
printf("Hasil 33 ditambah 20 sama dengan %d\n",h);
getch();
}
Variabel yang sudah diinisialisasi secara public, tidak perlu diinsialisasikan di dalam fungsi
lagi. Sehingga inisial int hasil pada fungsi tambah1 dan tambah2 dihilangkan dan
dipindahkan ke luar fungsi.
Contoh 5:
//penggunaan fungsi,variabel local dan variable public
#include <stdio.h>
#include <conio.h>
#include <math.h>
int angka1;
void test1()
{
angka1=100;
}
void test2()
{
int angka1;
angka1=200;
}
void main()
{
clrscr();
angka1=25;
Keterangan:
terdapat 2 kali inisialisais variabel angka1 (int angka1), inisial variabel angka1 yang
diletakkan di luar fungsi bersifat public, tetapi inisial variabel yang diletakkan pada
fungsi test2 bersifat local. Karena variabel angka1 yang ada di fungsi test2 bersifat
local, maka pengubahan nilai variabel angka1 yang ada fungsi tersebut tidak mengubah
nilai yang ada pada variabel nilai1 yang bersifat public. Pada fungsi main, angka1
diberi nilai 25, sehingga saat ditampilkan, bernilai 25. setelah menjalankan fungsi test1,
nilai angka1 berubah menjadi 100. hal ini dikarenakan pada fungsi test1 terdapat
perintah mengubah angka1 (angka1=100), yang mana pada fungsi test1 tidak terdapat
inisialisasi variabel angka1 yang menunjukkan bahwa angka1 yang diubah adalah
angka1 yang bersifat public. Setelah menjalankan fungsi test2, angka1 tidak berubah.
Padahal pada fungsi test2 terdapat pengubahan angka1 (angka1=200). Hal ini
dikarenakan variabel angka1 yang diubah oleh test2 adalah variabel angka1 local.
Fungsi Recursi
Fungsi recursi merupakan sebuah fungsi yang di dalamnya terdapat perintah untuk
memanggil fungsi itu sendiri.
Contoh 1:
//fungsi recursi
#include <stdio.h>
#include <conio.h>
int validasi(int x)
{
if (x>=100)
{
scanf("%d",&x);
validasi(x);
}
else
return x;
}
void main()
{
clrscr();
int y=125;
printf("\nMasukkan angka kurang dari 100 :");
validasi(y);
printf("\nTerima kasih");
getch();
}
Hasil:
Masukkan angka kurang dari 100: 252
254
25
Terima kasih
Keterangan:
Pada fungsi validasi di atas, terdapat perintah untuk memanggil diri sendiri, yaitu
perintah validasi(x). perintah ini akan dijalankan jika nilai x yang sebelumnya kurang
dari 100. jika nilai lebih dari 100, maka akan langsung dikembalikan dengan perintah
return x.
Contoh 2:
//fungsi faktorial dengan menggunakan recursi
#include <stdio.h>
#include <conio.h>
int faktorial(int x)
{
int hasil;
if ((x==0) || (x==1))
{
return 1;
}
else
return x*faktorial(x-1);
}
void main()
{
clrscr();
int y,z;
printf("\nMasukkan angka : ");scanf("%d",&y);
z=faktorial(y);
printf("\n%d! adalah %d",y,z);
getch();
}
Hasil:
Masukkan angka: 5
5! adalah 120
Contoh 3:
//fungsi ini akan diulang sampai ditekan tombol y
#include <iostream.h>
#include <conio.h>
char tunggusampaiditekantombol(char tb)
{
char t=getch();
if (tb==t)
return '0';
else
return tunggusampaiditekantombol(tb);
}
main()
{
cout<<"tekan huruf y ya..";
tunggusampaiditekantombol('y');
cout<<"\nterima kasih";
}
Hasil:
tekan huruf y ya..
terima kasih
Praktikum 7
Latihan 7.a
Ketiklah program berikut:
#include <conio.h>
#include <math.h>
float akar(float r)
{
float s;
if (r>=0)
{
s=sqrt(r);
return s;
}
else
{
printf("\nMaaf, Anda memasukkan data yang salah");
return 0;
}
}
void main()
{
float a,b;
clrscr();
printf("Masukkan bilangan >= 0 : "); scanf("%f",&a);
b=akar(a);
printf("\nAkar dari %8.2f adalah %8.2f",a,b);
getch();
}
Latihan 7.b
CV TRUST merupakan sebuah lembaga yang bergerak dalam bidang IT. Untuk menghitung
gaji karyawan menggunakan sistem perjam dan per golongan dengan ketentuan sebagai
berikut:
Golongan
1
2
3
Jika Lembur, maka gaji perjamnya adalah gaji perjam normal ditambah 5000.
Buatlah programnya jika diinginkan:
Input: nama, jumlah jam kerja normal,golongan, jumlah jam kerja lembur
Fungsi yang digunakan:
- fungsi hitunggaji dengan parameter:gol,jamnormal,jamlembur bertipe float
output: total gaji yang diterima
contoh kerangka program:
#.include ..
float hitunggaji(int gol, int jamlembur, int jamlembur)
{
.
}
void main()
{
.
}
contoh hasil yang diinginkan:
Latihan 7.c
Dari soal 7b,
- tambahkan input untuk jumlah karyawan
- gunakan perulangan untuk memasukkan data-data karyawan
- buatlah fungsi tersendiri untuk memasukkan data karyawan,
contoh pemanggilan: inputKaryawan(x) dimana x adalan nomor karyawan
- buat pula fungsi tersendiri untuk menampilkan hasilnya
contoh: tampilkanHasil;
Contoh kerangka program:
float hitunggaji(int gol, int jamlembur, int jamlembur)
{
.
}
void inputKaryawan(int x)
{
}
void tampilkanHasil()
{
}
void main()
{
.
For (x=1;x<=jlhkaryawan;x++) inputKaryawan(x);
tampilkanHasil();
}
8.
STRUKTUR
Struktur adalah koleksi dari variabel yang dinyatakan dengan sebuah nama dengan sifat
setiap variabel dapat memiliki tipe yang berlainan. Struktur biasa dipakai untuk
mengelompokkan beberapa informasi yang berkaitan menjadi sebuah kesatuan. Struktur ini
sering digunakan untum mencatat berkas data, seperti database mahasiswa, database
penjualan dll.
bentuk umum:
struct nama_tipe_struktur
{ tipe field-1;
tipe field-2;
tipe field-n;
} var_struk1, var_struk2,..., var_strukn;
atau
struct nama_tipe_struktur
{ tipe field-1;
tipe field-2;
tipe field-n;
}
nama_tipe_struk var_struk1, var_struk2,..., var_strukn;
contoh :
struct dataMahasiswa
{ char nama[30];
char kelas[10];
int nilai;
};
dataMahasiswa mahasiswa1;
atau
struct dataMahasiswa
{ char nama[30];
int nilai;
} mahasiswa1;
untuk mengisi atau mengambil suatu nilai field yang ada di dalam struk digunakan
var_struk1.nama_field
contoh:
mahasiswa1.nilai=90;
gets(mahasiswa1.nama);
Struk bertingkat
Dalam prakteknya, suatu struk bisa di definisikan ke dalam struk lain.
contoh:
struct tanggal
{ int tanggal;
int bulan;
int tahun;
};
struct dataMahasiswa
{
char nama[30];
int nilai;
struct tanggal tgl_lahir;
} mahasiwa1;
jika diinginkan mengisi data bulan, maka dapat dilakukan dengan cara:
mahasiswa1.tgl_lahir.bulan=9
sedangkan untuk mengambil data nama atau data nilai,
puts(mahasiswa1.nama);
n=mahasiswa1.nilai;
Contoh:
#include <stdio.h>
#include <string.h>
#include <conio.h>
void main()
{
struct tanggal
{ int tanggal;
int bulan;
int tahun;
};
struct dataMahasiswa
{
char nama[30];
struct tanggal tgl_lahir;
};
struct dataMahasiswa dataku;
char tombol;
int i, jumlah = 0;
puts("DATA MAHASISWA : \n");
clrscr();
printf("Nama : "); gets(dataku.nama);
printf("Tanggal Lahir (tgl-bulan-tahun) : ");
scanf("%d-%d-%d", &dataku.tgl_lahir.tanggal,
&dataku.tgl_lahir.bulan,
&dataku.tgl_lahir.tahun);
printf("\nData MAHASISWA\n");
printf("NAMA
TANGGAL LAHIR");
printf("\n%-21s %d-%d-%d", dataku.nama,
dataku.tgl_lahir.tanggal, dataku.tgl_lahir.bulan,
dataku.tgl_lahir.tahun);
getch();
}
Hasil:
Array Struktur
Penggabungan struktur dengan array sering kali dilakukan.
Contoh :
#include <stdio.h>
#include <string.h>
#include <ctype.h>
#include <conio.h>
#define maks 20
void main()
{
struct tanggal
{ int tanggal;
int bulan;
int tahun;
};
struct dataMahasiswa
{
char nama[30];
struct tanggal tgl_lahir;
};
struct dataMahasiswa dataku[maks];
char tombol;
int i, jumlah = 0;
puts("DATA MAHASISWA : \n");
clrscr();
do
{
printf("Nama : "); gets(dataku[jumlah].nama);
printf("Tanggal Lahir (tgl-bulan-tahun) : ");
scanf("%d-%d-%d",
&dataku[jumlah].tgl_lahir.tanggal,
&dataku[jumlah].tgl_lahir.bulan,
&dataku[jumlah].tgl_lahir.tahun);
fflush(stdin); //hapus sisa data dalam penampung
keyboard
jumlah ++;
printf("\nMasih ada data lagi [y/t] ? ");
tombol = toupper(getch());
while ( !(tombol == 'T' || tombol == 'Y'))
tombol = toupper(getch());
printf("%c\n\n", tombol);
}
while (tombol== 'Y');
printf("\nData MAHASISWA\n");
printf("NAMA
TANGGAL LAHIR");
for(i=0; i<jumlah; i++)
printf("\n%-21s %d-%d-%d", dataku[i].nama,
dataku[i].tgl_lahir.tanggal,
dataku[i].tgl_lahir.bulan,
dataku[i].tgl_lahir.tahun);
getch();
}
Hasil :
Praktikum 8
Latihan 8.a
Buatlah sebuah program dengan menggunakan tipe struk untuk memasukkan data
buku perpustakaan, jika diketahui field-field bukunya: judul,penerbit,pengarang,tahun
terbit.
Algoritma dan Pemrograman II dengan bahasa C++
Universitas Teknologi Yogyakarta
Umar, S.Kom
um412(c)III-2009
Referensi
Sutejo Budi S, Algoritma & Teknik Pemrograman, Andi Offset, 2004
Munir Rinaldi, Algoritma dan Pemrograman Dalam Bahasa Pascal dan C
Edisi 3, Penerbit Informatika, 2005
http://stimkijakarta.ac.id