SlideShare a Scribd company logo
1 of 38
Download to read offline
1
MODUL
PRAKTIKUM BAHASA
PEMROGRAMAN C++
LABORATORIUM DASAR PEMROGAMAN
FAKULTAS TEKNIK INDUSTRI
INSTITUT TEKNOLOGI NASIONAL MALANG
2
MODUL I
PENDAHULUAN
1.1 Tujuan
Praktikum Algoritma dan Pemrograman bertujuan untuk :
• Memberikan pengetahuan kepada praktikan tahapan-tahapan dalam pembuatan
algoritma.
• Praktikan bisa membuat algoritma untuk memecahkan suatu masalah secara logis.
• Praktikan bisa membuat program dari suatu algoritma.
• Praktikan bisa membiasakan diri untuk menyelesaikan program secara terstruktur
dengan menggunakan algoritma.
• Praktikan bisa menerapkan algoritma pada suatu kasus tertentu yang diberikan.
• Praktikan dapat membuat algoritma yang diperlukan dalam membuat suatu program
• Menunjang mata kuliah Algoritma dan Pemrograman
• Memberikan wawasan kepada praktikan untuk menghadapi mata kuliah Struktur Data,
Pemrograman Berbasis Objek, Tugas Besar Proyek I dan II, Kerja Praktek dan Tugas Akhir.
• Membiasakan praktikan untuk menyelesaikan tugas/pekerjaan tepat waktu sesuai yang telah
dijadwalkan.
1.2 Teori
1.2.1 Definisi Algoritma
“Algoritma adalah urutan langkah-langkah logis penyelesaian masalah yang disusun secara
sistematis”.
Kata Logis merupakan kata kunci dalam Algoritma. Langkah-langkah dalam Algoritma
harus logis dan harus dapat ditentukan bernilai salah atau benar. Notasi Algoritma dapat
diterjemahkan ke dalam berbagai bahasa pemrograman.
Suatu rancangan ilmiah biasanya memiliki kaidah-kaidah tertentu serta notasi-notasi yang
bersifat baku, demikian juga algoritma. Notasi algoritma sering juga disebut pseudocode.
Pseudocode pada dasarnya mengandung kata-kata kunci serta frasa bahasa inggris yang
dimaksudkan untuk mengendalikan aliran kendali
pada komputer.
3
Struktur Dasar Algoritma
1.2.2 Bahasa C
Struktur dari program C dapat dilihat sebagai kumpulan dari sebuah atau
lebih fungsi-fungsi. Fungsi pertama yang harus ada di program C adalah main().
Suatu fungsi di program C dibuka dengan kurung kurawal ({) dan ditutup dengan
kurung kurawal tutup (}). Di antara kurung kurawal dapat dituliskan statemen
program C. Berikut ini adalah struktur dari program C:
Bahasa C dikatakan sebagai bahasa pemrograman terstruktur karena strukturnya
menggunakan fungsi-fungsi sebagai program-program bagian (subroutine). Fungsi-fungsi selain
fungsi utama merupakan program-program bagian. Fungsi-fungsi ini dapat ditulis setelah fungsi
utama atau diletakan di file pustaka (library). Jika fungsi-fungsi ini diletakkan di file pustaka dan
akan dipakai di suatu program, maka nama file judulnya (header file) harus dilihatkan di dalam
program yang menggunakannya dengan prepocessor directive #include.
4
Memecah Baris Statemen
Suatu statemen di program C yang panjang dapat ditulis dalam beberapa baris penulisan.
Akhir dari suatu baris yang menggunakan tanda ’’ menunjukkan bahwa baris berikutnya adalah
baris sambungannya.
Contoh: Printf(”ini adalah bentuk string yang panjang yang ditulis 
dalam dua baris penulisan n”);
Contoh Algoritma 1:
Program Algoritma 1:
//Menuliskan Nilai A pada layar monitor
#include<stdio.h>
main() {
//Deklarasi
char Nama[20];
int A,B;
A=25;
B=100;
A=B;
//Deskripsi
printf("Masukkan Nama : "); scanf("%s",Nama);
printf("%s ",Nama);
printf("Mendapatkan Nilai : %dn",A);
}
5
1.2.3 Elemen Dasar Yang Diperlukan Dalam C
1. Komentar
Komentar program didefinisikan sebagai bagian dari sintaks program yang
tidak ikut dibaca pada saat proses kompilasi.
a. Menggunakan Tanda //, tanda ini digunakan untuk menuliskan komentar
yang banyaknya hanya satu baris
b. Menggunakan Tanda /*…*/, tanda ini digunakan untuk menuliskan
komentar yang banyaknya satu baris atau lebih.
2. Identifier
Identifier adalah suatu pengenal atau pengidentifikasi yang kita deklarasikan
agar kompiler dapat mengenalinya. Identifier sendiri dapat berupa nama
variable, konstanta, dan fungsi.
Identifier yang berperan sebagai variabel dan konstanta berfungsi untuk
menampung sebuah nilai yang digunakan dalam program. Contoh program
dari algoritma 1 di atas, maka a,b, dan nama merupakan identifier. Dalam
menentukan atau membuat identifier dalam program, kita harus
memperhatikan hal-hal berikut:
a. Bahasa C bersifat case sensitive, artinya bahasa C membedakan variable yang ditulis
dengan huruf kapital dan huruf kecil.
b. Identifier tidak boleh berupa angka atau diawali dengan karakter yangberupa angka.
Contoh: int 2x (salah), int 1000 (salah), int x2 (benar).
c. Identifier tidak boleh mengandung spasi. Contoh: int bilangan bulat;(salah), int
bilangan_bulat; (benar), int _bilanganbulat (benar).
d. Identifier tidak boleh menggunakan karakter-karakter simbol (#, $, %, dll).
e. Identifier tidak boleh menggunakan kata kunci (keyword) yang terdapat pada C. Contoh:
int break; (salah).
f. Nama identifier sebaiknya disesuaikan dengan kebutuhannya, artinya jangan sampai
orang lain bingung hanya karena salah dalam penamaan identifier.
g. Sebisa mungkin hindarilah penggunaan nama identifier yang sama dengan identifier yang
digunakan oleh C. Identifier sendiri dibagi menjadi 2 (dua) yaitu:
1. Konstanta
Konstanta adalah jenis identifier yang bersifat konstan atau tetap. Suatu konstanta harus
didefinisikan terlebih dahulu di awal program. Konstanta dapat bernilai integer, pecahan,
karakter dan string, contoh: 20; 3.14; 2.50005; ‘X’; ‘Bahasa C’.
Contoh : #define PHI 3.14
#define nim "1043304"
#define nama "Tasya Tembem"
6
2. Variabel
• Variabel adalah sebuah identifier yang mempunyai nilai dinamis. Artinya bahwa nilai
variabel tersebut dapat diubah sesuai kebutuhan dalam program. Contoh penamaan variabel:
Variabel Global
Program dalam bahasa C selalu terdapat fungsi utama dengan nama main(). Jika kita
mendeklarasikan sebuah variabel di luar fungsi, maka dengan sendirinya komputer akan
menganggap variabel tersebut sebagai variable global.
Variabel Lokal
Variabel lokal adalah variabel yang hanya dikenali oleh suatu fungsi saja, artinya tidak
dikenal oleh lingkungan luar di dalam program yang kita buat.Contoh variabel global dan lokal:
Contoh Algoritma 2:
7
Program Algoritma 2:
//Menghitung Keliling Persegi Panjang
#include<stdio.h>
main() {
int P,L,Keliling;
P=25;
L=10;
Keliling=2*(P+L);
printf("Keliling : %dn",Keliling);
}
Contoh Algoritma 3:
8
Program Algoritma 3:
// Menghitung Nilai Akhir
#include<stdio.h>
main()
{
//Deklarasi*/
char Nama[20];
int Tugas,UTS,UAS;
float Nilai_Akhir;
//Deskripsi
printf("Nama : "); scanf("%s",&Nama);
printf("Tugas : "); scanf("%d",&Tugas);
printf("UTS : "); scanf("%d",&UTS);
printf("UAS : "); scanf("%d",&UAS);
Nilai_Akhir=0.2*Tugas+0.3*UTS+0.5*UAS;
printf("nNama : %sn",Nama);
printf("Nilai Akhirnya adalah %f",Nilai_Akhir);
}
Contoh Algoritma 4:
9
Program Algoritma 4:
// Menghitung Jarak (Berupa Panjang garis) antera 2 titik
#include<stdio.h>
#include<math.h>
main(){
//Deklarasi
typedef struct {
int X;
int Y;
} Titik;
Titik Titik1, Titik2;
float Jarak;
//Deskripsi
printf("Titik1 X : "); scanf("%d",&Titik1.X);
printf("Titik2 X : "); scanf("%d",&Titik2.X);
printf("Titik1 Y : "); scanf("%d",&Titik1.Y);
printf("Titik2 Y : "); scanf("%d",&Titik2.Y);
Jarak=pow((Titik1.X-Titik2.X),2)+pow((Titik1.Y-Titik2.Y),2);
Jarak=sqrt(Jarak);
printf("n Jarak = %.2fn",Jarak);
printf("Jaraknya Adalah %.2f",Jarak);
}
10
MODUL II
PERCABANGAN & PERULANGAN (LOOP)
2.1 PERCABANGAN
Statement if - else
Bentuk dasar perintah if – else adalah sebagai berikut :
if (expression)
Statement1;
else
Statement2;
StatementBerikutnya;
#include <stdio.h>
#include <conio.h>
main()
{
int Nilai;
printf("Nilai : ");scanf("%i",&Nilai);
if(Nilai>=50)
printf("Selamat Anda Lulus. ");
else
printf("Maaf. Anda Tidak Lulus. ");
getch();
return 0;
}
11
Perintah di atas hanya mempunyai 2 kemungkinan yaitu keterangan “Selamat Anda
Lulus” jika nilai lebih besar dari atau sama dengan 50 dan keterangan “Maaf. Anda
Tidak Lulus”, ketika nilai lebih kecil dari 50. Jika perintah yang akan dieksekusi ketika
kondisi tercapai lebih dari 1 perintah, maka perintah-perintah tersebut harus diblok dengan
tanda kurawal {}.Perhatikan program di bawah ini yang merupakan perubahan dari program di
atas
#include <stdio.h>
#include <conio.h>
main()
{
int Nilai;
printf("Nilai : ");scanf("%i",&Nilai);
if(Nilai>=50)
{
printf("Anda Hebat!n");
printf("Selamat Anda Lulus. ");
}
else
{
printf("Maaf. Anda Tidak Lulus. ");
printf("Perbaiki semester depan yah!. ");
}
getch();
return 0;
}
#include <stdio.h>
#include <conio.h>
main()
{
int a,b;
printf("Masukan A : ");scanf("%i",&a);
printf("Masukan B : ");scanf("%i",&b);
if(a==b)
printf("Isi Variabel A Sama Dengan B");
else
if(a>b)
printf("Isi Variabel A lebih besar dari B");
else
if(a<b)
printf("Isi Variabel A lebih kecil dari B");
getch();
return 0;
}
12
Program di atas akan meminta anda untuk memasukan nilai variabel A dan B, kemudian
program akan memeriksa apakah variabel A sama dengan B, atau A lebih besar dari B, dan A
lebih kecil dari B.
Perintah switch – case - default
Selain if-else, perintah yang digunakan untuk percabangan adalah switch – case. Bentuk dasar
dari perintah tersebut adalah :
switch(ekspresi)
{
case kondisi1:perintah1;break;
case kondisi2:perintah2:break;
default : perintah3;
}
Cara kerja perintah di atas adalah : “Jika ekspresi sama dengan kondisi1, maka perintah1 akan
dieksekusi dan kemudian keluar dari switch, dan jika ekspresi sama dengan kondisi2
maka perintah 2 yang akan dieksekusi dan kemudian keluar dari switch, dan jika tidak
1 kondisi pun yang sama dengan ekspresi maka perintah3 (perintah default) yang akan
dieksekusi. Perintah default kalau tidak diperlukan bisa dihilangkan.
Untuk lebih jelas, perhatikan perintah di bawah ini.
switch (index)
{
case 'A':printf("Keterangan : Bagus Sekalin");break;
case 'B':printf("Keterangan : Bagusn");break;
case 'C':printf("Keterangan : Cukupn");break;
case 'D':printf("Keterangan : Kurangn");break;
case 'E':printf("Keterangan : Kurang Sekalin");break;
default :printf("Keterangan : Index Tak Diketahuin");
}
Keterangan program di atas adalah jika index=’A’ maka keterangan Bagus Sekali, jika
index=’B’ maka keterangan Bagus, jika index=’C’ maka keterangan Cukup, jika index=’D’
maka keterangan Kurang, jika index=’E’ maka keterangan Kurang Sekali, dan jika index bukan
A – E, maka keterangan adalah Index Tidak Diketahui
13
Perintah if else dengan banyak kondisi
Jika kondisi yang harus diperiksa lebih dari 1 kondisi, maka hanya if-else lah yang bisa dipakai.
Operator-operator logika yang dipakai adalah operator && (and), dan operator || (or).
Untuk lebih jelas, perhatikan perintah di bawah ini:
if((index=='A')||(index=='B')||(index=='C'))
printf("Selamat Anda Lulus");
else
if((index=='D')||(index=='E'))
printf("Anda Tidak Lulus. Lebih giat lagi belajar!");
Perintah di atas akan menampilkan string “Selamat Anda Lulus” ketika index berisi A,
B atau C, dan akan menampilkan keterangan “Anda Tidak Lulus. Lebih giat lagi belajar!” ketika
index berisi D atau E.
Buatlah program dengan data yang dimasukan adalah jenis kelas, tujuan dan banyak tiket yang
dibeli. Data yang ingin ditampilkan adalah harga tiket dan total tiket, diskon dan besar
pembayaran.
Contoh :
Pilih Jurusan :
1. Jakarta
2. Yogya
3. Surabaya
Jurusan yang anda pilih : 2 [input]
Pilih Kelas :
1. Eksekutif
2. Bisnis
3. Ekonomi
Kelas yang anda pilih : 3 [input]
Banyak Tiket : 5 [input]
Harga Tiket : Rp. 20000 [output]
Total Tiket : Rp. 100000 [output]
Diskon : Rp. 10000 [output]
Bayar : Rp. 90000 [output]
14
Program untuk kasus di atas :
#include <stdio.h>
#include <conio.h>
main()
{
int kodejurusan,kodekelas,banyaktiket;
long int hargatiket,total;
float diskon,bayar;
printf("Pilih Jurusan :n");
printf("---------------n");
printf("1. Jakartan2. Yogyan3. Surabayan");
printf("---------------n");
printf("Jurusan yang dipilih : ");scanf("%i",&kodejurusan);
printf("Pilih Kelas :n");
printf("---------------n");
printf("1. Eksekutifn2. Bisnisn3. Ekonomin");
printf("---------------n");
printf("Kelas yang dipilih : ");scanf("%i",&kodekelas);
printf("Banyak Tiket : ");scanf("%i",&banyaktiket);
if((kodejurusan==1)&&(kodekelas==1))
hargatiket=70000;
else
if((kodejurusan==1)&&(kodekelas==2))
hargatiket=40000;
else
if((kodejurusan==1)&&(kodekelas==3))
hargatiket=10000;
else
if(kodejurusan==2)
{
if(kodekelas==1) hargatiket=80000; else
if(kodekelas==2) hargatiket=50000; else
if(kodekelas==3) hargatiket=20000;
}
else
if(kodejurusan==3)
{
switch (kodekelas)
{
case 1:hargatiket=90000;break;
case 2:hargatiket=60000;break;
case 3:hargatiket=30000;
15
}
}
printf("Harga Tiket : Rp. %lin",hargatiket);
total=banyaktiket*hargatiket;
printf("Total Tiket : Rp. %lin",total);
if( ((kodejurusan==3)&&(kodekelas==1)) ||
((kodejurusan==2)&&(kodekelas==2))
)
diskon=0.1*total;
else
diskon=0;
printf("Diskon 10%% : Rp. %fn",diskon);
bayar=total-diskon;
printf("Bayar : Rp. %fn",bayar);
getch();
return 0;
}
2.2 PERULANGAN (LOOP)
Ada beberapa jenis perulangan yang dapat dilakukan oleh bahasa pemrograman C,
yaitu :
• For
• While
• Do While
Perulangan Dengan Perintah For
Perulangan for mempunyai bentuk umum seperti berikut :
for(inisialisasi counter; kondisi perulangan; statement)
{
statement;
}
Contoh berikut akan menampilkan angka 1 sampai 1000, kemudian menampilkan
angka 10 turun sampai 0 dengan perubahan nilainya adalah setengah (0,5).
#include <stdio.h>
#include <conio.h>
main()
{
int i;
float f;
16
for (i=1;i<=1000;i++)
printf("%in",i);
for (f=10;f>=0;f=f-0.5)
printf("%6.2fn",f);
getch();
return 0;
}
Dalam perulangan yang menggunakan for, perulangan dilakukan hanya
jika kondisi perulangannya mempunyai nilai true (tidak 0).
Perulangan Dengan Perintah While
Bentuk umum dari while adalah seperti berikut :
while (kondisi)
{
perintah;
perintah;
}
Cara kerja dari perulangan while mirip dengan perulangan for. Tetapi dalam perulangan while
ini, tidak ada jaminan bahwa program akan masuk ke dalam perulangan. Ini dikarenakan
pemeriksaan kondisinya dilakukan di awal perulangan.
#include <stdio.h>
#include <conio.h>
main()
{
int i;
float f;
i=1;
while (i<=1000)
{
printf("%in",i);
i++;
}
f=10;
while (f>=0)
{
printf("%6.2fn",f);
f=f-0.5;
}
getch();
return 0;
}
17
Perulangan Dengan Perintah Do While
Bentuk umum dari do while adalah seperti berikut :
do
{
perintah;
perintah;
} while (kondisi);
Cara kerja dari perulangan do while mirip dengan perulangan while. Tetapi dalam perulangan
do while ini, pengecekan kondisi dilakukan di akhir loop. Sehingga program pasti dapat
masuk ke perulangan ini minimal 1 kali.
#include <stdio.h>
#include <conio.h>
main()
{
int i;
float f;
i=1;
do
{
printf("%in",i);
i++;
} while (i<=1000);
f=10;
do
{
printf("%6.2fn",f);
f=f-0.5;
} while (f>=0);
getch();
return 0;
}
18
Latihan BAB 2
Membuat deret yang menghasilkan outputan :
(Menggunakan fungsi perulangan while dan do while)
Program latihan dengan menggunakan For
#include<stdio.h>
main()
{
int B,K,AW,AK,IN,No;
printf("Masukan Bilangan Awal : "); scanf("%i",&AW);
printf("Masukan Bilangan Akhir : "); scanf("%i",&AK);
printf("Masukan Bilangan Interval: "); scanf("%i",&IN);
printf("+============================+n");
printf("|No | Bilangan | Kuadrat |n");
printf("|----|-----------|-----------|n");
No=0;
for(B=AW;B<=AK;)
{
No=No+1;
K=B*B;
printf("|%3i |%6i | %6i |n",No,B,K);
B=B+IN;
}
printf("+----------------------------+n");
}
19
MODUL III
FUNGSI DAN REKURSI
3.1 Tujuan
Tujuan modul II ini, adalah:
• Praktikan bisa membuat program sederhana berdasarkan algoritma dengan memakai
fungsi
• Praktikan bisa membuat program sederhana berdasarkan algoritma dengan
menggunakan fungsi rekursi
• Praktikan dapat membiasakan diri untuk membuat program secara terstruktur.
• Praktikan memahami algoritma fungsi dan rekursi
3.2 Teori
Modularisasi program (yang disebut juga rutin, prosedur atau fungsi) memberikan dua
keuntungan, yaitu: untuk aktivitas yang harus dilakukan lebih dari satu kali, modularisasi
menghindari penulisan teks program yang sama secara berulangkali. Disini penggunaan modul
program dapat mengurangi panjang program. Keuntungan kedua adalah kemudahan menulis dan
menemukan kesalahan program.
Kemudahan menulis akan sangat berguna pada masalah besar yang dikerjakan oleh satu
tim pemrogram yang beranggotakan beberapa orang. Bahasa C tidak mengenal istilah prosedur
seperti bahasa pascal. Dalam pascal sendiri, prosedur didefinisikan sebagai suatu proses yang
tidak mengembalikan nilai. Untuk melakukan hal ini di dalam c, maka kita harus membuat suatu
fungsi dengan tipe void, yang berarti tidak memiliki nilai balik (return value).
3.2.1 Fungsi Tanpa Nilai Balik
Notasi algoritma yang digunakan untuk mendefinisikan struktur prosedur
atau fungsi ini adalah:
20
Contoh Algoritma 1
21
Program Algoritma 1:
// Program utama untuk menghitung luas segitiga
#include <stdio.h>
int Alas;
int Tinggi;
void HitungLuasSegitiga();
main(){
printf("Menghitung Luas Sebuah Segitigan");
HitungLuasSegitiga();
printf("nselesai");
}
void HitungLuasSegitiga(){
float Luas;
printf("Alas: ");scanf("%d",&Alas);
printf("Tinggi: ");scanf("%d",&Tinggi);
Luas = (Alas*Tinggi)/2;
printf("%4.2f",Luas);
}
2.2.1.1 Nama Global dan Lokal
Nama-nama (konstanta, peubah, tipe dan lain-lain) yang dideklarasikan di dalam deklarasi
prosedur hanya “dikenal” di dalam badan prosedur yang bersangkutan (bersifat lokal). Sedangkan
nama-nama yang dideklarasikan di dalam program utama dikatakan bersifat global (nama-nama
global dapat digunakan di bagian manapun di dalam program, baik di dalam program utama
maupun di dalam prosedur).
2.2.1.2 Parameter
Parameter aktual adalah parameter yang disertakan pada waktu pemanggilan, sedangkan
parameter formal adalah parameter yang dideklarasikan di dalam bagian header prosedur itu sendiri.
Ketika prosedur dipanggil, parameter actual menggantikan parameter formal. Tiap-tiap parameter
aktual berpasangan dengan parameter formal yang bersesuaian. Berdasarkan penggunaannya terdapat
3 jenis parameter formal, yaitu :
• Parameter masukan (input parameter) : parameter yang nilainya berlaku sebagai masukan untuk
prosedur (sering disebut parameter nilai – parameter by value).
• Parameter keluaran (output parameter) : parameter yang menampung keluaran yang dihasilkan oleh
prosedur.II-4
• Parameter masukan/keluaran (input/output parameter) : parameter yang berfungsi sebagai masukan
sekaligus keluaran bagi prosedur tersebut (parameter keluaran dan parameter masukan/keluaran
sering dinamakan parameter acuan – parameter by reference).
22
Contoh algoritma parameter masukan:
Pada program PQR diatas: x dan y adalah parameter formal; 4 dan 10, a dan b,
a+5 dan 17 adalah parameter aktual.
Contoh algoritma parameter Keluaran:
23
Contoh Algoritma Parameter Masukan/Keluaran:
24
Contoh Algoritma 2:
25
Program Algoritma 2:
// Program Tukar
#include <stdio.h>
void Tukar(int *a, int *b);
main(){
int A,B;
printf ("A: ");scanf("%d", &A);
printf ("nB: ");scanf("%d", &B);
printf ("nA: %d",A);
printf ("nB: %d",B);
Tukar(&A, &B);
printf("nA :%d",A);
printf("nB :%d",B);
}
void Tukar (int*A,int*B){
int Temp;
Temp=*A;
*A=*B;
*B=Temp;
}
Contoh Algoritma 3:
26
Program Algoritma 3:
// Program Menghitung Rata - Rata
#include <stdio.h>
int N;
float U;
void HitungRatarata (int N, float *U);
main(){
printf("Jumlah Data : ");scanf("%d", &N);
printf("menghitung rata - rata N buah bilangan bulatn");
HitungRatarata (N, &U);
printf("Rata-rata bilangan bulat =%.2f", U);
}
void HitungRatarata (int N, float *U) {
int K, X;
float Jumlah;
Jumlah = 0;
for (K=1; K<=N; K++) {
printf("data ke-%d:", K);scanf("%d", &X);
Jumlah = Jumlah + X;
}
*U = Jumlah/N;
}
27
2.2.2 Fungsi Dengan Nilai Balik
Fungsi adalah modul program yang memberikan/mengembalikan (return) sebuah nilai
dari tipe tertentu (tipe dasar atau tipe bentukan). Sebagaimana halnya prosedur, fungsi diakses
dengan memanggil namanya. Selain itu, fungsi juga dapat mengandung daftar parameter formal.
Parameter pada fungsi selalu merupakan parameter masukan. Hal ini disebabkan oleh kenyataan
bahwa parameter pada fungsi merupakan masukan yang digunakan oleh fungsi tersebut untuk
menghasilkan nilai.
Notasi algoritma untuk fungsi :
Contoh Algoritma 4 :
28
Program Algoritma 4 :
// Program fungsi f(x)=2x+2+5x-8
#include <stdio.h>
float F (float X);
main(){
int X;
printf("X: ");scanf("%d", &X);
printf("nF(X): %.2f", F(X));
}
float F(float X){
float Y;
Y = 2*X*X+5*X-8;
return Y;
}
Contoh Algoritma 5 :
29
Program Algoritma 5 :
// Program Penentu bilangan genap atau ganjil
#include<stdio.h>
main(){
int Bil;
int Genap(int Bil);
printf("Bil : ");scanf("%d",&Bil);
if (Genap(Bil))
printf("n%d adalah bilangan genap", Bil);
else
printf("n%d adalah bilangan ganjil", Bil);
}
int Genap(int Bil){
int Y;
Y = (Bil %2==0);
return Y;
}
2.2.3 Rekursi
Suatu obyek disebut sebagai rekursif apabila sebagian berisi atau didefinisikan sebagai
dirinya sendiri. Dengan demikian rekursif adalah suatu proses berupa pemanggilan diri berupa
statement perulangan. Proses rekursif juga memungkinkan terjadinya komputasi yang tidak
berkesudahan sampai memory yang digunakan tidak dapat menampung lagi, sehingga perlu
diperhatikan akan adanya kondisi untuk menghentikan proses eksekusi program . Sebagai contoh
sederhana mengenai proses rekursif adalah proses menghitung nilai faktorial dari bilangan bulat
positif dan mencari deret fibonnaci dari suatu bilangan bulat, permainan menara hanoi dan
sebagainya.
30
Contoh Algoritma 6:
Program Algoritma 6:
// Program fungsi rekursif faktorial
#include<stdio.h>
int Fak(int N);
main(){
int N;
printf("N!: ");scanf("%d",&N);
printf("n%d! adalah %d",N,Fak(N));
}
int Fak(int N){
if(N==0)
return 1;
else
return N*Fak(N-1);
}
31
MODUL IV
LARIK ( ARRAY )
4.1 Tujuan
Tujuan modul III ini, adalah:
• Praktikan bisa membuat program sederhana berdasarkan algoritma dengan
memakai larik
• Praktikan bisa membuat program matriks sederhana berdasarkan algoritma
dengan memakai larik
• Praktikan dapat membiasakan diri untuk membuat program secara terstruktur.
• Praktikan memahami algoritma larik
4.2 Teori
4.2.1 Larik
Larik atau array adalah struktur data yang menyimpan sekumpulan elemen
yang bertipe sama. Setiap elemen diakses langsung melalui indeksnya. Contoh:
larik A dengan 8 elemen yang setiap elemennya berisi tinggi badan siswa di
sebuah sekolah.
4.2.1.1 Array 1 dimensi
#include <stdio.h>
#include <conio.h>
void main()
{
int Nilai[10];
int index;
float total,ratarata;
// Pembacaan data dari keyboard
32
printf(“Pembacaan data nilai n”);
for (index=0;index<10;index++)
{
printf(“Nilai mahasiswa ke-%d = “,index+1);
scanf(“%d”,&Nilai[index]);
}
printf(“n”);
// Perhitungan total dan rata-rata
total=0;
for (index=0;index<10;index++)
total=total+Nilai[index];// atau total+=Nilai[index];
ratarata=total/10;
// Menampilkan data yang telah dimasukan dan rata-rata.
for (index=0;index<10;index++)
printf(“Nilai mahasiswa ke-%d = %3dn“,index+1,Nilai[index]);
printf(“Rata-rata = %6.2fn”,ratarata);
getch();
}
4.2.1.2 Array 2 dimensi
Array 2 dimensi biasanya digunakan untuk menyimpan data dalam bentuk matrik. Index Array 2
dimensi terdiri dari index baris dan kolom.
Pendeklarasian array 2 dimensi adalah :
Tipedata namaarray[b][k];
Dimana : b adalahbanyak baris dan k adalah banyak kolom.
Contoh
int matrik[5][5];
Perintah di atas akan membuat sebuah array 2 dimensi yang kalau digambarkan
adalah sebagai berikut :
33
#include <stdio.h>
#include <conio.h>
#define maks 3
main()
{
int mat[maks][maks];
int b,k;
printf("Pengisian Array : n");
for (b=0;b<maks;b++)
{
for (k=0;k<maks;k++)
{
printf("Matrik [%d,%d] : ",b,k);
scanf("%d",&mat[b][k]);
}
}
printf("Matrik yang telah dimasukan :n");
for (b=0;b<maks;b++)
{
for (k=0;k<maks;k++)
{
printf("%6d",mat[b][k]);
}
printf("n");
}
getch();
return 0;
}
34
MODUL V
STRUCT (RECORD)
Turbo C tidak selalu menyediakan tipe data yang sesuai dengan tipe data yang diinginkan.
Contoh kasus yaitu ketika kita ingin membuat suatu program mengolah data mahasiswa
dimana data mahasiswa terdiri dari NIM, Nama, NilaiUTS, NilaiUAS, NilaiQuiz,
NilaiAkhir dan Index Prestasinya. Turbo C tidak menyediakan tipe data untuk data tersebut.
Oleh karena itu maka kita harus membuat suatu tipe data baru yang cocok dengan keperluan
kita. Caranya adalah dengan menggunakan perintah struct
#include <stdio.h>
#include <conio.h>
#include <string.h>
struct TMhs
{
char NIM[11];
char Nama[21];
int NilaiUTS,NilaiUAS,NilaiQuiz;
float NilaiAkhir;
char index;
};
main()
{
TMhs mhs1,mhs2;
printf("Pengisian Data ");
printf("NIM : "); gets(mhs1.NIM);
printf("NAMA : ");gets(mhs1.Nama);
printf("Nilai QUIZ : ");scanf("%d",&mhs1.NilaiQuiz);
printf("Nilai UTS : ");scanf("%d",&mhs1.NilaiUTS);
printf("Nilai UAS : ");scanf("%d",&mhs1.NilaiUAS);
mhs1.NilaiAkhir=0.2*mhs1.NilaiQuiz+0.3*mhs1.NilaiUTS+0.5*mhs1.NilaiUAS;
if(mhs1.NilaiAkhir>=80) mhs1.index=’A’;else
if(mhs1.NilaiAkhir>=60) mhs1.index=’B’;else
if(mhs1.NilaiAkhir>=40) mhs1.index=’C’;else
if(mhs1.NilaiAkhir>=20) mhs1.index=’D’;else
if(mhs1.NilaiAkhir>=00) mhs1.index=’E’;
mhs2=mhs1; // mengisikan semua data di mhs1 ke mhs2
printf("Data yang telah dimasukan : n");
printf("NIM : %sn",mhs2.NIM);
printf("NAMA : %sn",mhs2.Nama);
printf("Nilai QUIZ : %in",mhs2.NilaiQuiz);
35
printf("Nilai UTS : %dn",mhs2.NilaiUTS);
printf("Nilai UAS : %dn",mhs2.NilaiUAS);
printf("Nilai Akhir: %.2fn",mhs2.NilaiAkhir);
printf("Index : %cn",mhs2.index);
getch();
}
Array Struct
Setiap tipe data dapat dibuat dalam bentuk array. Begitu juga dengan tipe data yang dibuat
dengan perintah struct.
Contoh program di bawah ini dapat menjelaskan cara penggunaan array yang bertipe data
buatan
#include <stdio.h>
#include <conio.h>
#include <string.h>
#define maks 3
struct TMhs
{
char NIM[9];
char Nama[21];
int NilaiUTS,NilaiUAS,NilaiQuis;
float NilaiAkhir;
char index;
};
main()
{
TMhs mhs[maks]; // array struct
int i;
for(i=0;i<maks;i++)
{
printf("Pengisian Data Mahasiswa Ke-%in",i+1);
printf("NIM : ");fflush(stdin);gets(mhs[i].NIM);
printf("NAMA : ");fflush(stdin);gets(mhs[i].Nama);
printf("Nilai QUIZ : ");scanf("%d",&mhs[i].NilaiQuis);
printf("Nilai UTS : ");scanf("%d",&mhs[i].NilaiUTS);
printf("Nilai UTAS : ");scanf("%d",&mhs[i].NilaiUAS);
mhs[i].NilaiAkhir=0.2*mhs[i].NilaiQuis+0.3*mhs[i].NilaiUTS+0.5*mhs[i].NilaiUAS;
if(mhs[i].NilaiAkhir>=80) mhs[i].index='A';else
if(mhs[i].NilaiAkhir>=60) mhs[i].index='B';else
if(mhs[i].NilaiAkhir>=40) mhs[i].index='C';else
if(mhs[i].NilaiAkhir>=20) mhs[i].index='D';else
36
if(mhs[i].NilaiAkhir>=0) mhs[i].index='E';
};
clrscr();
printf("Data yang telah dimasukan adalah : n");
printf("----------------------------------------------------------------------n");
printf("| NIM | NAMA | QUIS | UTS | UAS | N A | INDEX |n");
printf("----------------------------------------------------------------------n");
for(i=0;i<maks;i++)
{
printf("| %-8s | %-20s | %3i | %3i | %3i | %6.2f | %c |n",
mhs[i].NIM,mhs[i].Nama,mhs[i].NilaiQuis,mhs[i].NilaiUTS,
mhs[i].NilaiUAS,mhs[i].NilaiAkhir,mhs[i].index);
}
printf("----------------------------------------------------------------------n");
getch();
return 0;
}
37
MODUL VI
OPERASI FILE
Membuat File Text
File text adalah suatu file yang pola penyimpanannya datanya dalam bentuk karakter. Sehingga
kalau suatu variabel bertipe int (2 byte) dengan isi 10000, maka akan disimpan dalam bentuk
karakter 10000 (5 karakter) sehingga file yang dibuat besarnya 5 byte.
Contoh program untuk membuat file text :
#include <stdio.h>
#include <conio.h>
#include <String.h>
main()
{
FILE *f;
char st[81]="";
f=fopen("strings.dat","w");
if (f!=NULL)
{
do{
printf("Masukan string : ");gets(st);
fprintf(f,"%sn",st);
}while (strlen(st)>0);
fclose(f);
printf("File selesai di buat");
}
else
{
printf("File gagal dibuat");
}
getch();
return 0;
}
38
Membaca File Text
Mode yang dipakai dalam membaca data text adalah mode “r”. File yang dibaca bisa
berekstensi apa saja.
Perhatikan perintah berikut :
#include <stdio.h>
#include <conio.h>
#include <String.h>
main()
{
FILE *f;
char st[81]="";
f=fopen("strings.dat","r");
if (f!=NULL)
{
clrscr();
while (fscanf(f,"%s",st)!=EOF) //(fgets(st,80,f)!=NULL)
{
printf("%s",st);
}
fclose(f);
printf("File sudah dibaca");
}
else
{
printf("File gagal dibaca");
}
getch();
return 0;
}

More Related Content

What's hot

Bahan ajar algo
Bahan ajar algoBahan ajar algo
Bahan ajar algosuep_x
 
Algoritma dan Pemrograman
Algoritma dan PemrogramanAlgoritma dan Pemrograman
Algoritma dan PemrogramanDiana Anggraini
 
Langkah Dasar Pemrograman pada Aplikasi Dev C++
Langkah Dasar Pemrograman pada Aplikasi Dev C++Langkah Dasar Pemrograman pada Aplikasi Dev C++
Langkah Dasar Pemrograman pada Aplikasi Dev C++Ishardi Nassogi
 
Sekilas tentang c
Sekilas tentang cSekilas tentang c
Sekilas tentang cDyes Wirok
 
Praktek pemrograman bahasa c
Praktek pemrograman bahasa cPraktek pemrograman bahasa c
Praktek pemrograman bahasa caenalyaqin
 
Bahasa Pemrograman C++
Bahasa Pemrograman C++Bahasa Pemrograman C++
Bahasa Pemrograman C++Rangga Ananto
 
ALGORITMA dan PEMROGRAMAN
ALGORITMA dan PEMROGRAMANALGORITMA dan PEMROGRAMAN
ALGORITMA dan PEMROGRAMANBang Jo
 
D3 modul algol_&_pemrog_i_c++
D3 modul algol_&_pemrog_i_c++D3 modul algol_&_pemrog_i_c++
D3 modul algol_&_pemrog_i_c++Paulino Guterres
 
Bahan ajar-dasar-pemrograman
Bahan ajar-dasar-pemrogramanBahan ajar-dasar-pemrograman
Bahan ajar-dasar-pemrogramanAndri Yanto
 
Bahasa c++ (p)
Bahasa c++ (p)Bahasa c++ (p)
Bahasa c++ (p)Eddy_TKJ
 
Modul simulasi pemograman mikrokontroler
Modul simulasi pemograman mikrokontrolerModul simulasi pemograman mikrokontroler
Modul simulasi pemograman mikrokontrolerpersonal
 
Modul 2 teknik pemrograman mengenal bahasa c dan compiler
Modul 2 teknik pemrograman mengenal bahasa c dan compilerModul 2 teknik pemrograman mengenal bahasa c dan compiler
Modul 2 teknik pemrograman mengenal bahasa c dan compilerBeny Abd
 
Laporan Praktikum Algoritma Pemrograman Modul I
Laporan Praktikum Algoritma Pemrograman Modul ILaporan Praktikum Algoritma Pemrograman Modul I
Laporan Praktikum Algoritma Pemrograman Modul IShofura Kamal
 
Modul algoritma dan pemograman
Modul algoritma dan pemogramanModul algoritma dan pemograman
Modul algoritma dan pemogramanPANJI_ADITYAN
 
Tugas praktikum algoritma modul 1 faisal al zamar
Tugas praktikum algoritma modul 1 faisal al zamarTugas praktikum algoritma modul 1 faisal al zamar
Tugas praktikum algoritma modul 1 faisal al zamarFaisal Zamar
 
Modul praktikum dasar algoritma dan pemograman
Modul praktikum dasar algoritma dan pemogramanModul praktikum dasar algoritma dan pemograman
Modul praktikum dasar algoritma dan pemogramanCatur Suranto S.T
 
Teknik kompilasi dalam bahasa pemograman c
Teknik kompilasi dalam bahasa pemograman cTeknik kompilasi dalam bahasa pemograman c
Teknik kompilasi dalam bahasa pemograman cadhifatra agussalim
 

What's hot (20)

Program Penjualan Supermarket
Program Penjualan SupermarketProgram Penjualan Supermarket
Program Penjualan Supermarket
 
Bahan ajar algo
Bahan ajar algoBahan ajar algo
Bahan ajar algo
 
Algoritma dan Pemrograman
Algoritma dan PemrogramanAlgoritma dan Pemrograman
Algoritma dan Pemrograman
 
Langkah Dasar Pemrograman pada Aplikasi Dev C++
Langkah Dasar Pemrograman pada Aplikasi Dev C++Langkah Dasar Pemrograman pada Aplikasi Dev C++
Langkah Dasar Pemrograman pada Aplikasi Dev C++
 
Sekilas tentang c
Sekilas tentang cSekilas tentang c
Sekilas tentang c
 
Praktek pemrograman bahasa c
Praktek pemrograman bahasa cPraktek pemrograman bahasa c
Praktek pemrograman bahasa c
 
Bahasa Pemrograman C++
Bahasa Pemrograman C++Bahasa Pemrograman C++
Bahasa Pemrograman C++
 
ALGORITMA dan PEMROGRAMAN
ALGORITMA dan PEMROGRAMANALGORITMA dan PEMROGRAMAN
ALGORITMA dan PEMROGRAMAN
 
D3 modul algol_&_pemrog_i_c++
D3 modul algol_&_pemrog_i_c++D3 modul algol_&_pemrog_i_c++
D3 modul algol_&_pemrog_i_c++
 
Bahan ajar-dasar-pemrograman
Bahan ajar-dasar-pemrogramanBahan ajar-dasar-pemrograman
Bahan ajar-dasar-pemrograman
 
modul algoritma Bab 1
modul algoritma Bab 1modul algoritma Bab 1
modul algoritma Bab 1
 
Bahasa c++ (p)
Bahasa c++ (p)Bahasa c++ (p)
Bahasa c++ (p)
 
Modul simulasi pemograman mikrokontroler
Modul simulasi pemograman mikrokontrolerModul simulasi pemograman mikrokontroler
Modul simulasi pemograman mikrokontroler
 
Modul 2 teknik pemrograman mengenal bahasa c dan compiler
Modul 2 teknik pemrograman mengenal bahasa c dan compilerModul 2 teknik pemrograman mengenal bahasa c dan compiler
Modul 2 teknik pemrograman mengenal bahasa c dan compiler
 
Laporan Praktikum Algoritma Pemrograman Modul I
Laporan Praktikum Algoritma Pemrograman Modul ILaporan Praktikum Algoritma Pemrograman Modul I
Laporan Praktikum Algoritma Pemrograman Modul I
 
Modul algoritma dan pemograman
Modul algoritma dan pemogramanModul algoritma dan pemograman
Modul algoritma dan pemograman
 
Tugas praktikum algoritma modul 1 faisal al zamar
Tugas praktikum algoritma modul 1 faisal al zamarTugas praktikum algoritma modul 1 faisal al zamar
Tugas praktikum algoritma modul 1 faisal al zamar
 
Modul praktikum dasar algoritma dan pemograman
Modul praktikum dasar algoritma dan pemogramanModul praktikum dasar algoritma dan pemograman
Modul praktikum dasar algoritma dan pemograman
 
Pengenalan bahasa c++
Pengenalan bahasa c++Pengenalan bahasa c++
Pengenalan bahasa c++
 
Teknik kompilasi dalam bahasa pemograman c
Teknik kompilasi dalam bahasa pemograman cTeknik kompilasi dalam bahasa pemograman c
Teknik kompilasi dalam bahasa pemograman c
 

Viewers also liked

C++ Program nilai akhir dan rata rata siswa ( zahrotul fitrya ti-b )
C++ Program nilai akhir dan rata rata siswa ( zahrotul fitrya ti-b )C++ Program nilai akhir dan rata rata siswa ( zahrotul fitrya ti-b )
C++ Program nilai akhir dan rata rata siswa ( zahrotul fitrya ti-b )UNIVERSITAS MERDEKA PASURUAN
 
Chika tutorial c++ - ver 3 2009 2
Chika   tutorial c++ - ver 3 2009 2Chika   tutorial c++ - ver 3 2009 2
Chika tutorial c++ - ver 3 2009 2Marisa Paryasto
 
Makalah bahasa inggris
Makalah bahasa inggrisMakalah bahasa inggris
Makalah bahasa inggrisQueen Anaqi
 
15. modul bahasa pemrograman (java)
15. modul bahasa pemrograman (java)15. modul bahasa pemrograman (java)
15. modul bahasa pemrograman (java)Safz Cabeza
 

Viewers also liked (6)

C++ Program nilai akhir dan rata rata siswa ( zahrotul fitrya ti-b )
C++ Program nilai akhir dan rata rata siswa ( zahrotul fitrya ti-b )C++ Program nilai akhir dan rata rata siswa ( zahrotul fitrya ti-b )
C++ Program nilai akhir dan rata rata siswa ( zahrotul fitrya ti-b )
 
Chika tutorial c++ - ver 3 2009 2
Chika   tutorial c++ - ver 3 2009 2Chika   tutorial c++ - ver 3 2009 2
Chika tutorial c++ - ver 3 2009 2
 
Modul algo c++
Modul algo c++Modul algo c++
Modul algo c++
 
Modul lengkap
Modul lengkapModul lengkap
Modul lengkap
 
Makalah bahasa inggris
Makalah bahasa inggrisMakalah bahasa inggris
Makalah bahasa inggris
 
15. modul bahasa pemrograman (java)
15. modul bahasa pemrograman (java)15. modul bahasa pemrograman (java)
15. modul bahasa pemrograman (java)
 

Similar to ALGORITMA C

Praktikum fix 2
Praktikum fix 2Praktikum fix 2
Praktikum fix 2inggar tri
 
Modul Praktikum Algoritma dan Pemrograman
Modul Praktikum Algoritma dan PemrogramanModul Praktikum Algoritma dan Pemrograman
Modul Praktikum Algoritma dan PemrogramanIrwien Andriyanto
 
Penjelasan Tentang Module Algo
Penjelasan Tentang Module AlgoPenjelasan Tentang Module Algo
Penjelasan Tentang Module AlgoAPK BARU
 
Slide-INF202-INF202-Slide-01.pdf
Slide-INF202-INF202-Slide-01.pdfSlide-INF202-INF202-Slide-01.pdf
Slide-INF202-INF202-Slide-01.pdfGratechComputer
 
m01-struktur-dasar-c.ppt
m01-struktur-dasar-c.pptm01-struktur-dasar-c.ppt
m01-struktur-dasar-c.pptmisrianaputri1
 
Dasar-Pemrograman-Modul-1-Pengenalan-Pemrograman.pdf
Dasar-Pemrograman-Modul-1-Pengenalan-Pemrograman.pdfDasar-Pemrograman-Modul-1-Pengenalan-Pemrograman.pdf
Dasar-Pemrograman-Modul-1-Pengenalan-Pemrograman.pdfRizaJr
 
Awal dasar belajar c++
Awal dasar belajar c++Awal dasar belajar c++
Awal dasar belajar c++farizky berian
 
4. pemrograman fungsi
4. pemrograman fungsi4. pemrograman fungsi
4. pemrograman fungsiRoziq Bahtiar
 
Intruksi Fundamental
Intruksi FundamentalIntruksi Fundamental
Intruksi FundamentalAkmal Fajar
 
Praktikum fungsi dasar bahasa c
Praktikum fungsi dasar bahasa cPraktikum fungsi dasar bahasa c
Praktikum fungsi dasar bahasa cIzhan Nassuha
 
Pertemuan 07 - Pemrograman C
Pertemuan 07 - Pemrograman CPertemuan 07 - Pemrograman C
Pertemuan 07 - Pemrograman CNurdin Al-Azies
 
Laporan praktikum modul vi
Laporan praktikum modul viLaporan praktikum modul vi
Laporan praktikum modul viDevi Apriansyah
 
struktur-dasar-c++ OK.pdf
struktur-dasar-c++ OK.pdfstruktur-dasar-c++ OK.pdf
struktur-dasar-c++ OK.pdfMahmud165895
 

Similar to ALGORITMA C (20)

Praktikum fix 2
Praktikum fix 2Praktikum fix 2
Praktikum fix 2
 
C++
C++C++
C++
 
Modul praktikum c++
Modul praktikum c++Modul praktikum c++
Modul praktikum c++
 
Algoritma modul
Algoritma modulAlgoritma modul
Algoritma modul
 
Algoritma
AlgoritmaAlgoritma
Algoritma
 
Modul Praktikum Algoritma dan Pemrograman
Modul Praktikum Algoritma dan PemrogramanModul Praktikum Algoritma dan Pemrograman
Modul Praktikum Algoritma dan Pemrograman
 
Penjelasan Tentang Module Algo
Penjelasan Tentang Module AlgoPenjelasan Tentang Module Algo
Penjelasan Tentang Module Algo
 
Slide-INF202-INF202-Slide-01.pdf
Slide-INF202-INF202-Slide-01.pdfSlide-INF202-INF202-Slide-01.pdf
Slide-INF202-INF202-Slide-01.pdf
 
Tugas sp algo
Tugas sp algoTugas sp algo
Tugas sp algo
 
m01-struktur-dasar-c.ppt
m01-struktur-dasar-c.pptm01-struktur-dasar-c.ppt
m01-struktur-dasar-c.ppt
 
Dasar-Pemrograman-Modul-1-Pengenalan-Pemrograman.pdf
Dasar-Pemrograman-Modul-1-Pengenalan-Pemrograman.pdfDasar-Pemrograman-Modul-1-Pengenalan-Pemrograman.pdf
Dasar-Pemrograman-Modul-1-Pengenalan-Pemrograman.pdf
 
Awal dasar belajar c++
Awal dasar belajar c++Awal dasar belajar c++
Awal dasar belajar c++
 
Bahasa Pemprograman c
Bahasa Pemprograman cBahasa Pemprograman c
Bahasa Pemprograman c
 
4. pemrograman fungsi
4. pemrograman fungsi4. pemrograman fungsi
4. pemrograman fungsi
 
Intruksi Fundamental
Intruksi FundamentalIntruksi Fundamental
Intruksi Fundamental
 
Praktikum
PraktikumPraktikum
Praktikum
 
Praktikum fungsi dasar bahasa c
Praktikum fungsi dasar bahasa cPraktikum fungsi dasar bahasa c
Praktikum fungsi dasar bahasa c
 
Pertemuan 07 - Pemrograman C
Pertemuan 07 - Pemrograman CPertemuan 07 - Pemrograman C
Pertemuan 07 - Pemrograman C
 
Laporan praktikum modul vi
Laporan praktikum modul viLaporan praktikum modul vi
Laporan praktikum modul vi
 
struktur-dasar-c++ OK.pdf
struktur-dasar-c++ OK.pdfstruktur-dasar-c++ OK.pdf
struktur-dasar-c++ OK.pdf
 

ALGORITMA C

  • 1. 1 MODUL PRAKTIKUM BAHASA PEMROGRAMAN C++ LABORATORIUM DASAR PEMROGAMAN FAKULTAS TEKNIK INDUSTRI INSTITUT TEKNOLOGI NASIONAL MALANG
  • 2. 2 MODUL I PENDAHULUAN 1.1 Tujuan Praktikum Algoritma dan Pemrograman bertujuan untuk : • Memberikan pengetahuan kepada praktikan tahapan-tahapan dalam pembuatan algoritma. • Praktikan bisa membuat algoritma untuk memecahkan suatu masalah secara logis. • Praktikan bisa membuat program dari suatu algoritma. • Praktikan bisa membiasakan diri untuk menyelesaikan program secara terstruktur dengan menggunakan algoritma. • Praktikan bisa menerapkan algoritma pada suatu kasus tertentu yang diberikan. • Praktikan dapat membuat algoritma yang diperlukan dalam membuat suatu program • Menunjang mata kuliah Algoritma dan Pemrograman • Memberikan wawasan kepada praktikan untuk menghadapi mata kuliah Struktur Data, Pemrograman Berbasis Objek, Tugas Besar Proyek I dan II, Kerja Praktek dan Tugas Akhir. • Membiasakan praktikan untuk menyelesaikan tugas/pekerjaan tepat waktu sesuai yang telah dijadwalkan. 1.2 Teori 1.2.1 Definisi Algoritma “Algoritma adalah urutan langkah-langkah logis penyelesaian masalah yang disusun secara sistematis”. Kata Logis merupakan kata kunci dalam Algoritma. Langkah-langkah dalam Algoritma harus logis dan harus dapat ditentukan bernilai salah atau benar. Notasi Algoritma dapat diterjemahkan ke dalam berbagai bahasa pemrograman. Suatu rancangan ilmiah biasanya memiliki kaidah-kaidah tertentu serta notasi-notasi yang bersifat baku, demikian juga algoritma. Notasi algoritma sering juga disebut pseudocode. Pseudocode pada dasarnya mengandung kata-kata kunci serta frasa bahasa inggris yang dimaksudkan untuk mengendalikan aliran kendali pada komputer.
  • 3. 3 Struktur Dasar Algoritma 1.2.2 Bahasa C Struktur dari program C dapat dilihat sebagai kumpulan dari sebuah atau lebih fungsi-fungsi. Fungsi pertama yang harus ada di program C adalah main(). Suatu fungsi di program C dibuka dengan kurung kurawal ({) dan ditutup dengan kurung kurawal tutup (}). Di antara kurung kurawal dapat dituliskan statemen program C. Berikut ini adalah struktur dari program C: Bahasa C dikatakan sebagai bahasa pemrograman terstruktur karena strukturnya menggunakan fungsi-fungsi sebagai program-program bagian (subroutine). Fungsi-fungsi selain fungsi utama merupakan program-program bagian. Fungsi-fungsi ini dapat ditulis setelah fungsi utama atau diletakan di file pustaka (library). Jika fungsi-fungsi ini diletakkan di file pustaka dan akan dipakai di suatu program, maka nama file judulnya (header file) harus dilihatkan di dalam program yang menggunakannya dengan prepocessor directive #include.
  • 4. 4 Memecah Baris Statemen Suatu statemen di program C yang panjang dapat ditulis dalam beberapa baris penulisan. Akhir dari suatu baris yang menggunakan tanda ’’ menunjukkan bahwa baris berikutnya adalah baris sambungannya. Contoh: Printf(”ini adalah bentuk string yang panjang yang ditulis dalam dua baris penulisan n”); Contoh Algoritma 1: Program Algoritma 1: //Menuliskan Nilai A pada layar monitor #include<stdio.h> main() { //Deklarasi char Nama[20]; int A,B; A=25; B=100; A=B; //Deskripsi printf("Masukkan Nama : "); scanf("%s",Nama); printf("%s ",Nama); printf("Mendapatkan Nilai : %dn",A); }
  • 5. 5 1.2.3 Elemen Dasar Yang Diperlukan Dalam C 1. Komentar Komentar program didefinisikan sebagai bagian dari sintaks program yang tidak ikut dibaca pada saat proses kompilasi. a. Menggunakan Tanda //, tanda ini digunakan untuk menuliskan komentar yang banyaknya hanya satu baris b. Menggunakan Tanda /*…*/, tanda ini digunakan untuk menuliskan komentar yang banyaknya satu baris atau lebih. 2. Identifier Identifier adalah suatu pengenal atau pengidentifikasi yang kita deklarasikan agar kompiler dapat mengenalinya. Identifier sendiri dapat berupa nama variable, konstanta, dan fungsi. Identifier yang berperan sebagai variabel dan konstanta berfungsi untuk menampung sebuah nilai yang digunakan dalam program. Contoh program dari algoritma 1 di atas, maka a,b, dan nama merupakan identifier. Dalam menentukan atau membuat identifier dalam program, kita harus memperhatikan hal-hal berikut: a. Bahasa C bersifat case sensitive, artinya bahasa C membedakan variable yang ditulis dengan huruf kapital dan huruf kecil. b. Identifier tidak boleh berupa angka atau diawali dengan karakter yangberupa angka. Contoh: int 2x (salah), int 1000 (salah), int x2 (benar). c. Identifier tidak boleh mengandung spasi. Contoh: int bilangan bulat;(salah), int bilangan_bulat; (benar), int _bilanganbulat (benar). d. Identifier tidak boleh menggunakan karakter-karakter simbol (#, $, %, dll). e. Identifier tidak boleh menggunakan kata kunci (keyword) yang terdapat pada C. Contoh: int break; (salah). f. Nama identifier sebaiknya disesuaikan dengan kebutuhannya, artinya jangan sampai orang lain bingung hanya karena salah dalam penamaan identifier. g. Sebisa mungkin hindarilah penggunaan nama identifier yang sama dengan identifier yang digunakan oleh C. Identifier sendiri dibagi menjadi 2 (dua) yaitu: 1. Konstanta Konstanta adalah jenis identifier yang bersifat konstan atau tetap. Suatu konstanta harus didefinisikan terlebih dahulu di awal program. Konstanta dapat bernilai integer, pecahan, karakter dan string, contoh: 20; 3.14; 2.50005; ‘X’; ‘Bahasa C’. Contoh : #define PHI 3.14 #define nim "1043304" #define nama "Tasya Tembem"
  • 6. 6 2. Variabel • Variabel adalah sebuah identifier yang mempunyai nilai dinamis. Artinya bahwa nilai variabel tersebut dapat diubah sesuai kebutuhan dalam program. Contoh penamaan variabel: Variabel Global Program dalam bahasa C selalu terdapat fungsi utama dengan nama main(). Jika kita mendeklarasikan sebuah variabel di luar fungsi, maka dengan sendirinya komputer akan menganggap variabel tersebut sebagai variable global. Variabel Lokal Variabel lokal adalah variabel yang hanya dikenali oleh suatu fungsi saja, artinya tidak dikenal oleh lingkungan luar di dalam program yang kita buat.Contoh variabel global dan lokal: Contoh Algoritma 2:
  • 7. 7 Program Algoritma 2: //Menghitung Keliling Persegi Panjang #include<stdio.h> main() { int P,L,Keliling; P=25; L=10; Keliling=2*(P+L); printf("Keliling : %dn",Keliling); } Contoh Algoritma 3:
  • 8. 8 Program Algoritma 3: // Menghitung Nilai Akhir #include<stdio.h> main() { //Deklarasi*/ char Nama[20]; int Tugas,UTS,UAS; float Nilai_Akhir; //Deskripsi printf("Nama : "); scanf("%s",&Nama); printf("Tugas : "); scanf("%d",&Tugas); printf("UTS : "); scanf("%d",&UTS); printf("UAS : "); scanf("%d",&UAS); Nilai_Akhir=0.2*Tugas+0.3*UTS+0.5*UAS; printf("nNama : %sn",Nama); printf("Nilai Akhirnya adalah %f",Nilai_Akhir); } Contoh Algoritma 4:
  • 9. 9 Program Algoritma 4: // Menghitung Jarak (Berupa Panjang garis) antera 2 titik #include<stdio.h> #include<math.h> main(){ //Deklarasi typedef struct { int X; int Y; } Titik; Titik Titik1, Titik2; float Jarak; //Deskripsi printf("Titik1 X : "); scanf("%d",&Titik1.X); printf("Titik2 X : "); scanf("%d",&Titik2.X); printf("Titik1 Y : "); scanf("%d",&Titik1.Y); printf("Titik2 Y : "); scanf("%d",&Titik2.Y); Jarak=pow((Titik1.X-Titik2.X),2)+pow((Titik1.Y-Titik2.Y),2); Jarak=sqrt(Jarak); printf("n Jarak = %.2fn",Jarak); printf("Jaraknya Adalah %.2f",Jarak); }
  • 10. 10 MODUL II PERCABANGAN & PERULANGAN (LOOP) 2.1 PERCABANGAN Statement if - else Bentuk dasar perintah if – else adalah sebagai berikut : if (expression) Statement1; else Statement2; StatementBerikutnya; #include <stdio.h> #include <conio.h> main() { int Nilai; printf("Nilai : ");scanf("%i",&Nilai); if(Nilai>=50) printf("Selamat Anda Lulus. "); else printf("Maaf. Anda Tidak Lulus. "); getch(); return 0; }
  • 11. 11 Perintah di atas hanya mempunyai 2 kemungkinan yaitu keterangan “Selamat Anda Lulus” jika nilai lebih besar dari atau sama dengan 50 dan keterangan “Maaf. Anda Tidak Lulus”, ketika nilai lebih kecil dari 50. Jika perintah yang akan dieksekusi ketika kondisi tercapai lebih dari 1 perintah, maka perintah-perintah tersebut harus diblok dengan tanda kurawal {}.Perhatikan program di bawah ini yang merupakan perubahan dari program di atas #include <stdio.h> #include <conio.h> main() { int Nilai; printf("Nilai : ");scanf("%i",&Nilai); if(Nilai>=50) { printf("Anda Hebat!n"); printf("Selamat Anda Lulus. "); } else { printf("Maaf. Anda Tidak Lulus. "); printf("Perbaiki semester depan yah!. "); } getch(); return 0; } #include <stdio.h> #include <conio.h> main() { int a,b; printf("Masukan A : ");scanf("%i",&a); printf("Masukan B : ");scanf("%i",&b); if(a==b) printf("Isi Variabel A Sama Dengan B"); else if(a>b) printf("Isi Variabel A lebih besar dari B"); else if(a<b) printf("Isi Variabel A lebih kecil dari B"); getch(); return 0; }
  • 12. 12 Program di atas akan meminta anda untuk memasukan nilai variabel A dan B, kemudian program akan memeriksa apakah variabel A sama dengan B, atau A lebih besar dari B, dan A lebih kecil dari B. Perintah switch – case - default Selain if-else, perintah yang digunakan untuk percabangan adalah switch – case. Bentuk dasar dari perintah tersebut adalah : switch(ekspresi) { case kondisi1:perintah1;break; case kondisi2:perintah2:break; default : perintah3; } Cara kerja perintah di atas adalah : “Jika ekspresi sama dengan kondisi1, maka perintah1 akan dieksekusi dan kemudian keluar dari switch, dan jika ekspresi sama dengan kondisi2 maka perintah 2 yang akan dieksekusi dan kemudian keluar dari switch, dan jika tidak 1 kondisi pun yang sama dengan ekspresi maka perintah3 (perintah default) yang akan dieksekusi. Perintah default kalau tidak diperlukan bisa dihilangkan. Untuk lebih jelas, perhatikan perintah di bawah ini. switch (index) { case 'A':printf("Keterangan : Bagus Sekalin");break; case 'B':printf("Keterangan : Bagusn");break; case 'C':printf("Keterangan : Cukupn");break; case 'D':printf("Keterangan : Kurangn");break; case 'E':printf("Keterangan : Kurang Sekalin");break; default :printf("Keterangan : Index Tak Diketahuin"); } Keterangan program di atas adalah jika index=’A’ maka keterangan Bagus Sekali, jika index=’B’ maka keterangan Bagus, jika index=’C’ maka keterangan Cukup, jika index=’D’ maka keterangan Kurang, jika index=’E’ maka keterangan Kurang Sekali, dan jika index bukan A – E, maka keterangan adalah Index Tidak Diketahui
  • 13. 13 Perintah if else dengan banyak kondisi Jika kondisi yang harus diperiksa lebih dari 1 kondisi, maka hanya if-else lah yang bisa dipakai. Operator-operator logika yang dipakai adalah operator && (and), dan operator || (or). Untuk lebih jelas, perhatikan perintah di bawah ini: if((index=='A')||(index=='B')||(index=='C')) printf("Selamat Anda Lulus"); else if((index=='D')||(index=='E')) printf("Anda Tidak Lulus. Lebih giat lagi belajar!"); Perintah di atas akan menampilkan string “Selamat Anda Lulus” ketika index berisi A, B atau C, dan akan menampilkan keterangan “Anda Tidak Lulus. Lebih giat lagi belajar!” ketika index berisi D atau E. Buatlah program dengan data yang dimasukan adalah jenis kelas, tujuan dan banyak tiket yang dibeli. Data yang ingin ditampilkan adalah harga tiket dan total tiket, diskon dan besar pembayaran. Contoh : Pilih Jurusan : 1. Jakarta 2. Yogya 3. Surabaya Jurusan yang anda pilih : 2 [input] Pilih Kelas : 1. Eksekutif 2. Bisnis 3. Ekonomi Kelas yang anda pilih : 3 [input] Banyak Tiket : 5 [input] Harga Tiket : Rp. 20000 [output] Total Tiket : Rp. 100000 [output] Diskon : Rp. 10000 [output] Bayar : Rp. 90000 [output]
  • 14. 14 Program untuk kasus di atas : #include <stdio.h> #include <conio.h> main() { int kodejurusan,kodekelas,banyaktiket; long int hargatiket,total; float diskon,bayar; printf("Pilih Jurusan :n"); printf("---------------n"); printf("1. Jakartan2. Yogyan3. Surabayan"); printf("---------------n"); printf("Jurusan yang dipilih : ");scanf("%i",&kodejurusan); printf("Pilih Kelas :n"); printf("---------------n"); printf("1. Eksekutifn2. Bisnisn3. Ekonomin"); printf("---------------n"); printf("Kelas yang dipilih : ");scanf("%i",&kodekelas); printf("Banyak Tiket : ");scanf("%i",&banyaktiket); if((kodejurusan==1)&&(kodekelas==1)) hargatiket=70000; else if((kodejurusan==1)&&(kodekelas==2)) hargatiket=40000; else if((kodejurusan==1)&&(kodekelas==3)) hargatiket=10000; else if(kodejurusan==2) { if(kodekelas==1) hargatiket=80000; else if(kodekelas==2) hargatiket=50000; else if(kodekelas==3) hargatiket=20000; } else if(kodejurusan==3) { switch (kodekelas) { case 1:hargatiket=90000;break; case 2:hargatiket=60000;break; case 3:hargatiket=30000;
  • 15. 15 } } printf("Harga Tiket : Rp. %lin",hargatiket); total=banyaktiket*hargatiket; printf("Total Tiket : Rp. %lin",total); if( ((kodejurusan==3)&&(kodekelas==1)) || ((kodejurusan==2)&&(kodekelas==2)) ) diskon=0.1*total; else diskon=0; printf("Diskon 10%% : Rp. %fn",diskon); bayar=total-diskon; printf("Bayar : Rp. %fn",bayar); getch(); return 0; } 2.2 PERULANGAN (LOOP) Ada beberapa jenis perulangan yang dapat dilakukan oleh bahasa pemrograman C, yaitu : • For • While • Do While Perulangan Dengan Perintah For Perulangan for mempunyai bentuk umum seperti berikut : for(inisialisasi counter; kondisi perulangan; statement) { statement; } Contoh berikut akan menampilkan angka 1 sampai 1000, kemudian menampilkan angka 10 turun sampai 0 dengan perubahan nilainya adalah setengah (0,5). #include <stdio.h> #include <conio.h> main() { int i; float f;
  • 16. 16 for (i=1;i<=1000;i++) printf("%in",i); for (f=10;f>=0;f=f-0.5) printf("%6.2fn",f); getch(); return 0; } Dalam perulangan yang menggunakan for, perulangan dilakukan hanya jika kondisi perulangannya mempunyai nilai true (tidak 0). Perulangan Dengan Perintah While Bentuk umum dari while adalah seperti berikut : while (kondisi) { perintah; perintah; } Cara kerja dari perulangan while mirip dengan perulangan for. Tetapi dalam perulangan while ini, tidak ada jaminan bahwa program akan masuk ke dalam perulangan. Ini dikarenakan pemeriksaan kondisinya dilakukan di awal perulangan. #include <stdio.h> #include <conio.h> main() { int i; float f; i=1; while (i<=1000) { printf("%in",i); i++; } f=10; while (f>=0) { printf("%6.2fn",f); f=f-0.5; } getch(); return 0; }
  • 17. 17 Perulangan Dengan Perintah Do While Bentuk umum dari do while adalah seperti berikut : do { perintah; perintah; } while (kondisi); Cara kerja dari perulangan do while mirip dengan perulangan while. Tetapi dalam perulangan do while ini, pengecekan kondisi dilakukan di akhir loop. Sehingga program pasti dapat masuk ke perulangan ini minimal 1 kali. #include <stdio.h> #include <conio.h> main() { int i; float f; i=1; do { printf("%in",i); i++; } while (i<=1000); f=10; do { printf("%6.2fn",f); f=f-0.5; } while (f>=0); getch(); return 0; }
  • 18. 18 Latihan BAB 2 Membuat deret yang menghasilkan outputan : (Menggunakan fungsi perulangan while dan do while) Program latihan dengan menggunakan For #include<stdio.h> main() { int B,K,AW,AK,IN,No; printf("Masukan Bilangan Awal : "); scanf("%i",&AW); printf("Masukan Bilangan Akhir : "); scanf("%i",&AK); printf("Masukan Bilangan Interval: "); scanf("%i",&IN); printf("+============================+n"); printf("|No | Bilangan | Kuadrat |n"); printf("|----|-----------|-----------|n"); No=0; for(B=AW;B<=AK;) { No=No+1; K=B*B; printf("|%3i |%6i | %6i |n",No,B,K); B=B+IN; } printf("+----------------------------+n"); }
  • 19. 19 MODUL III FUNGSI DAN REKURSI 3.1 Tujuan Tujuan modul II ini, adalah: • Praktikan bisa membuat program sederhana berdasarkan algoritma dengan memakai fungsi • Praktikan bisa membuat program sederhana berdasarkan algoritma dengan menggunakan fungsi rekursi • Praktikan dapat membiasakan diri untuk membuat program secara terstruktur. • Praktikan memahami algoritma fungsi dan rekursi 3.2 Teori Modularisasi program (yang disebut juga rutin, prosedur atau fungsi) memberikan dua keuntungan, yaitu: untuk aktivitas yang harus dilakukan lebih dari satu kali, modularisasi menghindari penulisan teks program yang sama secara berulangkali. Disini penggunaan modul program dapat mengurangi panjang program. Keuntungan kedua adalah kemudahan menulis dan menemukan kesalahan program. Kemudahan menulis akan sangat berguna pada masalah besar yang dikerjakan oleh satu tim pemrogram yang beranggotakan beberapa orang. Bahasa C tidak mengenal istilah prosedur seperti bahasa pascal. Dalam pascal sendiri, prosedur didefinisikan sebagai suatu proses yang tidak mengembalikan nilai. Untuk melakukan hal ini di dalam c, maka kita harus membuat suatu fungsi dengan tipe void, yang berarti tidak memiliki nilai balik (return value). 3.2.1 Fungsi Tanpa Nilai Balik Notasi algoritma yang digunakan untuk mendefinisikan struktur prosedur atau fungsi ini adalah:
  • 21. 21 Program Algoritma 1: // Program utama untuk menghitung luas segitiga #include <stdio.h> int Alas; int Tinggi; void HitungLuasSegitiga(); main(){ printf("Menghitung Luas Sebuah Segitigan"); HitungLuasSegitiga(); printf("nselesai"); } void HitungLuasSegitiga(){ float Luas; printf("Alas: ");scanf("%d",&Alas); printf("Tinggi: ");scanf("%d",&Tinggi); Luas = (Alas*Tinggi)/2; printf("%4.2f",Luas); } 2.2.1.1 Nama Global dan Lokal Nama-nama (konstanta, peubah, tipe dan lain-lain) yang dideklarasikan di dalam deklarasi prosedur hanya “dikenal” di dalam badan prosedur yang bersangkutan (bersifat lokal). Sedangkan nama-nama yang dideklarasikan di dalam program utama dikatakan bersifat global (nama-nama global dapat digunakan di bagian manapun di dalam program, baik di dalam program utama maupun di dalam prosedur). 2.2.1.2 Parameter Parameter aktual adalah parameter yang disertakan pada waktu pemanggilan, sedangkan parameter formal adalah parameter yang dideklarasikan di dalam bagian header prosedur itu sendiri. Ketika prosedur dipanggil, parameter actual menggantikan parameter formal. Tiap-tiap parameter aktual berpasangan dengan parameter formal yang bersesuaian. Berdasarkan penggunaannya terdapat 3 jenis parameter formal, yaitu : • Parameter masukan (input parameter) : parameter yang nilainya berlaku sebagai masukan untuk prosedur (sering disebut parameter nilai – parameter by value). • Parameter keluaran (output parameter) : parameter yang menampung keluaran yang dihasilkan oleh prosedur.II-4 • Parameter masukan/keluaran (input/output parameter) : parameter yang berfungsi sebagai masukan sekaligus keluaran bagi prosedur tersebut (parameter keluaran dan parameter masukan/keluaran sering dinamakan parameter acuan – parameter by reference).
  • 22. 22 Contoh algoritma parameter masukan: Pada program PQR diatas: x dan y adalah parameter formal; 4 dan 10, a dan b, a+5 dan 17 adalah parameter aktual. Contoh algoritma parameter Keluaran:
  • 23. 23 Contoh Algoritma Parameter Masukan/Keluaran:
  • 25. 25 Program Algoritma 2: // Program Tukar #include <stdio.h> void Tukar(int *a, int *b); main(){ int A,B; printf ("A: ");scanf("%d", &A); printf ("nB: ");scanf("%d", &B); printf ("nA: %d",A); printf ("nB: %d",B); Tukar(&A, &B); printf("nA :%d",A); printf("nB :%d",B); } void Tukar (int*A,int*B){ int Temp; Temp=*A; *A=*B; *B=Temp; } Contoh Algoritma 3:
  • 26. 26 Program Algoritma 3: // Program Menghitung Rata - Rata #include <stdio.h> int N; float U; void HitungRatarata (int N, float *U); main(){ printf("Jumlah Data : ");scanf("%d", &N); printf("menghitung rata - rata N buah bilangan bulatn"); HitungRatarata (N, &U); printf("Rata-rata bilangan bulat =%.2f", U); } void HitungRatarata (int N, float *U) { int K, X; float Jumlah; Jumlah = 0; for (K=1; K<=N; K++) { printf("data ke-%d:", K);scanf("%d", &X); Jumlah = Jumlah + X; } *U = Jumlah/N; }
  • 27. 27 2.2.2 Fungsi Dengan Nilai Balik Fungsi adalah modul program yang memberikan/mengembalikan (return) sebuah nilai dari tipe tertentu (tipe dasar atau tipe bentukan). Sebagaimana halnya prosedur, fungsi diakses dengan memanggil namanya. Selain itu, fungsi juga dapat mengandung daftar parameter formal. Parameter pada fungsi selalu merupakan parameter masukan. Hal ini disebabkan oleh kenyataan bahwa parameter pada fungsi merupakan masukan yang digunakan oleh fungsi tersebut untuk menghasilkan nilai. Notasi algoritma untuk fungsi : Contoh Algoritma 4 :
  • 28. 28 Program Algoritma 4 : // Program fungsi f(x)=2x+2+5x-8 #include <stdio.h> float F (float X); main(){ int X; printf("X: ");scanf("%d", &X); printf("nF(X): %.2f", F(X)); } float F(float X){ float Y; Y = 2*X*X+5*X-8; return Y; } Contoh Algoritma 5 :
  • 29. 29 Program Algoritma 5 : // Program Penentu bilangan genap atau ganjil #include<stdio.h> main(){ int Bil; int Genap(int Bil); printf("Bil : ");scanf("%d",&Bil); if (Genap(Bil)) printf("n%d adalah bilangan genap", Bil); else printf("n%d adalah bilangan ganjil", Bil); } int Genap(int Bil){ int Y; Y = (Bil %2==0); return Y; } 2.2.3 Rekursi Suatu obyek disebut sebagai rekursif apabila sebagian berisi atau didefinisikan sebagai dirinya sendiri. Dengan demikian rekursif adalah suatu proses berupa pemanggilan diri berupa statement perulangan. Proses rekursif juga memungkinkan terjadinya komputasi yang tidak berkesudahan sampai memory yang digunakan tidak dapat menampung lagi, sehingga perlu diperhatikan akan adanya kondisi untuk menghentikan proses eksekusi program . Sebagai contoh sederhana mengenai proses rekursif adalah proses menghitung nilai faktorial dari bilangan bulat positif dan mencari deret fibonnaci dari suatu bilangan bulat, permainan menara hanoi dan sebagainya.
  • 30. 30 Contoh Algoritma 6: Program Algoritma 6: // Program fungsi rekursif faktorial #include<stdio.h> int Fak(int N); main(){ int N; printf("N!: ");scanf("%d",&N); printf("n%d! adalah %d",N,Fak(N)); } int Fak(int N){ if(N==0) return 1; else return N*Fak(N-1); }
  • 31. 31 MODUL IV LARIK ( ARRAY ) 4.1 Tujuan Tujuan modul III ini, adalah: • Praktikan bisa membuat program sederhana berdasarkan algoritma dengan memakai larik • Praktikan bisa membuat program matriks sederhana berdasarkan algoritma dengan memakai larik • Praktikan dapat membiasakan diri untuk membuat program secara terstruktur. • Praktikan memahami algoritma larik 4.2 Teori 4.2.1 Larik Larik atau array adalah struktur data yang menyimpan sekumpulan elemen yang bertipe sama. Setiap elemen diakses langsung melalui indeksnya. Contoh: larik A dengan 8 elemen yang setiap elemennya berisi tinggi badan siswa di sebuah sekolah. 4.2.1.1 Array 1 dimensi #include <stdio.h> #include <conio.h> void main() { int Nilai[10]; int index; float total,ratarata; // Pembacaan data dari keyboard
  • 32. 32 printf(“Pembacaan data nilai n”); for (index=0;index<10;index++) { printf(“Nilai mahasiswa ke-%d = “,index+1); scanf(“%d”,&Nilai[index]); } printf(“n”); // Perhitungan total dan rata-rata total=0; for (index=0;index<10;index++) total=total+Nilai[index];// atau total+=Nilai[index]; ratarata=total/10; // Menampilkan data yang telah dimasukan dan rata-rata. for (index=0;index<10;index++) printf(“Nilai mahasiswa ke-%d = %3dn“,index+1,Nilai[index]); printf(“Rata-rata = %6.2fn”,ratarata); getch(); } 4.2.1.2 Array 2 dimensi Array 2 dimensi biasanya digunakan untuk menyimpan data dalam bentuk matrik. Index Array 2 dimensi terdiri dari index baris dan kolom. Pendeklarasian array 2 dimensi adalah : Tipedata namaarray[b][k]; Dimana : b adalahbanyak baris dan k adalah banyak kolom. Contoh int matrik[5][5]; Perintah di atas akan membuat sebuah array 2 dimensi yang kalau digambarkan adalah sebagai berikut :
  • 33. 33 #include <stdio.h> #include <conio.h> #define maks 3 main() { int mat[maks][maks]; int b,k; printf("Pengisian Array : n"); for (b=0;b<maks;b++) { for (k=0;k<maks;k++) { printf("Matrik [%d,%d] : ",b,k); scanf("%d",&mat[b][k]); } } printf("Matrik yang telah dimasukan :n"); for (b=0;b<maks;b++) { for (k=0;k<maks;k++) { printf("%6d",mat[b][k]); } printf("n"); } getch(); return 0; }
  • 34. 34 MODUL V STRUCT (RECORD) Turbo C tidak selalu menyediakan tipe data yang sesuai dengan tipe data yang diinginkan. Contoh kasus yaitu ketika kita ingin membuat suatu program mengolah data mahasiswa dimana data mahasiswa terdiri dari NIM, Nama, NilaiUTS, NilaiUAS, NilaiQuiz, NilaiAkhir dan Index Prestasinya. Turbo C tidak menyediakan tipe data untuk data tersebut. Oleh karena itu maka kita harus membuat suatu tipe data baru yang cocok dengan keperluan kita. Caranya adalah dengan menggunakan perintah struct #include <stdio.h> #include <conio.h> #include <string.h> struct TMhs { char NIM[11]; char Nama[21]; int NilaiUTS,NilaiUAS,NilaiQuiz; float NilaiAkhir; char index; }; main() { TMhs mhs1,mhs2; printf("Pengisian Data "); printf("NIM : "); gets(mhs1.NIM); printf("NAMA : ");gets(mhs1.Nama); printf("Nilai QUIZ : ");scanf("%d",&mhs1.NilaiQuiz); printf("Nilai UTS : ");scanf("%d",&mhs1.NilaiUTS); printf("Nilai UAS : ");scanf("%d",&mhs1.NilaiUAS); mhs1.NilaiAkhir=0.2*mhs1.NilaiQuiz+0.3*mhs1.NilaiUTS+0.5*mhs1.NilaiUAS; if(mhs1.NilaiAkhir>=80) mhs1.index=’A’;else if(mhs1.NilaiAkhir>=60) mhs1.index=’B’;else if(mhs1.NilaiAkhir>=40) mhs1.index=’C’;else if(mhs1.NilaiAkhir>=20) mhs1.index=’D’;else if(mhs1.NilaiAkhir>=00) mhs1.index=’E’; mhs2=mhs1; // mengisikan semua data di mhs1 ke mhs2 printf("Data yang telah dimasukan : n"); printf("NIM : %sn",mhs2.NIM); printf("NAMA : %sn",mhs2.Nama); printf("Nilai QUIZ : %in",mhs2.NilaiQuiz);
  • 35. 35 printf("Nilai UTS : %dn",mhs2.NilaiUTS); printf("Nilai UAS : %dn",mhs2.NilaiUAS); printf("Nilai Akhir: %.2fn",mhs2.NilaiAkhir); printf("Index : %cn",mhs2.index); getch(); } Array Struct Setiap tipe data dapat dibuat dalam bentuk array. Begitu juga dengan tipe data yang dibuat dengan perintah struct. Contoh program di bawah ini dapat menjelaskan cara penggunaan array yang bertipe data buatan #include <stdio.h> #include <conio.h> #include <string.h> #define maks 3 struct TMhs { char NIM[9]; char Nama[21]; int NilaiUTS,NilaiUAS,NilaiQuis; float NilaiAkhir; char index; }; main() { TMhs mhs[maks]; // array struct int i; for(i=0;i<maks;i++) { printf("Pengisian Data Mahasiswa Ke-%in",i+1); printf("NIM : ");fflush(stdin);gets(mhs[i].NIM); printf("NAMA : ");fflush(stdin);gets(mhs[i].Nama); printf("Nilai QUIZ : ");scanf("%d",&mhs[i].NilaiQuis); printf("Nilai UTS : ");scanf("%d",&mhs[i].NilaiUTS); printf("Nilai UTAS : ");scanf("%d",&mhs[i].NilaiUAS); mhs[i].NilaiAkhir=0.2*mhs[i].NilaiQuis+0.3*mhs[i].NilaiUTS+0.5*mhs[i].NilaiUAS; if(mhs[i].NilaiAkhir>=80) mhs[i].index='A';else if(mhs[i].NilaiAkhir>=60) mhs[i].index='B';else if(mhs[i].NilaiAkhir>=40) mhs[i].index='C';else if(mhs[i].NilaiAkhir>=20) mhs[i].index='D';else
  • 36. 36 if(mhs[i].NilaiAkhir>=0) mhs[i].index='E'; }; clrscr(); printf("Data yang telah dimasukan adalah : n"); printf("----------------------------------------------------------------------n"); printf("| NIM | NAMA | QUIS | UTS | UAS | N A | INDEX |n"); printf("----------------------------------------------------------------------n"); for(i=0;i<maks;i++) { printf("| %-8s | %-20s | %3i | %3i | %3i | %6.2f | %c |n", mhs[i].NIM,mhs[i].Nama,mhs[i].NilaiQuis,mhs[i].NilaiUTS, mhs[i].NilaiUAS,mhs[i].NilaiAkhir,mhs[i].index); } printf("----------------------------------------------------------------------n"); getch(); return 0; }
  • 37. 37 MODUL VI OPERASI FILE Membuat File Text File text adalah suatu file yang pola penyimpanannya datanya dalam bentuk karakter. Sehingga kalau suatu variabel bertipe int (2 byte) dengan isi 10000, maka akan disimpan dalam bentuk karakter 10000 (5 karakter) sehingga file yang dibuat besarnya 5 byte. Contoh program untuk membuat file text : #include <stdio.h> #include <conio.h> #include <String.h> main() { FILE *f; char st[81]=""; f=fopen("strings.dat","w"); if (f!=NULL) { do{ printf("Masukan string : ");gets(st); fprintf(f,"%sn",st); }while (strlen(st)>0); fclose(f); printf("File selesai di buat"); } else { printf("File gagal dibuat"); } getch(); return 0; }
  • 38. 38 Membaca File Text Mode yang dipakai dalam membaca data text adalah mode “r”. File yang dibaca bisa berekstensi apa saja. Perhatikan perintah berikut : #include <stdio.h> #include <conio.h> #include <String.h> main() { FILE *f; char st[81]=""; f=fopen("strings.dat","r"); if (f!=NULL) { clrscr(); while (fscanf(f,"%s",st)!=EOF) //(fgets(st,80,f)!=NULL) { printf("%s",st); } fclose(f); printf("File sudah dibaca"); } else { printf("File gagal dibaca"); } getch(); return 0; }