Modul 1 Alpro 2 - Review C
Modul 1 Alpro 2 - Review C
MODUL I
REVIEW BAHASA C
Pertemuan :3
Waktu : 2 x 60 menit (di Laboratorium)
1.1Tujuan Modul I
Setelah mahasiswa mempelajari materi ini, diharapkan dapat :
1. Menggunakan konsep sekuensial dalam bahasa C
2. Menggunakan konsep Pencabangan dalam bahasa C
3. Menggunakan konsep Pengulangan dalam bahasa C
4. Menggunakan konsep Array dan Tipe bentukan dalam bahasa C
5. Menggunakan konsep Fungsi dan Prosedur dalam bahasa C
1.2Landasan Teori
1.2.1 Bahasa C
Beberapa yang harus diketahui dari bahasa C adalah :
1. Bahasa C bersifat case sensitive. Ini berarti bahasa C membedakan huruf
besar (kapital) dengan huruf kecil. Nama yang ditulis dengan huruf besar
dianggap berbeda kalau ia ditulis dengan huruf kecil. Misalnya, N tidak
sama dengan n, nama_orang tidak sama dengan NAMA_ORANG,
Nama_orang, Nama_Orang. Hal ini berbeda dengan bahasa Pascal.
Pascal tidak membedakan nama yang ditulis dalam huruf besar atau huruf
kecil.
2. Dalam bahasa C, deklarasi yang didefinisikan sebelum kata main() adalah
deklarasi global, artinya semua nama yang didefinisikan di dalam
deklarasi global dikenal di seluruh bagian program, termasuk di dalam
fungsi atau prosedur yang ada di dalam program itu. Apabila deklarasi
didefinisikan di dalam main(), maka nama di bagian deklarasi (disebut
deklarasi lokal) hanya dikenal oleh program utama saja, tetapi tidak
dikenal oleh fungsi atau prosedur.
3. Dalam bahasa C, komentar ditulis diantara ”/*” dan ”*/”. Sedangkan
dalam bahasa Pascal komentar dapat ditulis diantara ”{” dan ”}” atau
antara ”(*” dan ”*)”.
4. Penulisan dan pembacaan (INPUT/OUTPUT) pada bahasa C harus disertai
dengan format sesuai tipe data yang dipakai.
Berikut ini adalah tabel translasi Algoritma ke bahasa C untuk struktur penulisan,
tipe data, dan pencabangan :
Notasi Algoritmik C
Struktur Penulisan
Program Nama Program /* Program Nama Program */
false diganti 0
Penugasan
← =
Pembacaan
INPUT scanf
Penulisan
OUTPUT printf
Pemilihan dengan IF-THEN-ELSE
if kondisi then if (kondisi)
aksi aksi
endif
Bila aksi lebih dari 1 buah :
if (kondisi)
{
aksi1;
aksi2;
...
aksiN;
}
Pemilihan dengan IF-THEN-ELSE
if kondisi then if (kondisi)
aksi1 aksi1;
else else
aksi2 aksi2;
endif
Pemilihan dengan CASE
case ekspresi switch (ekspresi)
nilai1 : aksi1; {
nilai2 : aksi2; case nilai1 : aksi1;break;
... case nilai2 : aksi2;break;
nilaiN : aksiN; ...
otherwise : aksi; case nilaiN : aksiN; break;
endcase default : aksi;
}
Perintah scanf dan printf dalam bahasa C harus disertai dengan format sesuai
dengan tipe data yang digunakan.Penentu format tersebut adalah :
Tipe data Format
int %d
unsigned int %u
long int %ld
long unsigned int %lu
float %f
double %lf
char %c
char[n] /* string */ %s
Berikut ini adalah tabel translasi Algoritma ke bahasa C untuk pengulangan dan
tipe bentukan :
Notasi Algoritmik C
Struktur Pengulangan FOR
FOR menaik : FOR menaik :
while (kondisi)
{
aksi1;
aksi2;
...
}
Struktur Pengulangan REPEAT
repeat do
aksi {
until kondisi aksi;
}while (!kondisi);
Tipe Bentukan
Nama_record : record struct
< {
field1 : type, type field1;
field2 : type, type field2;
field3 : type, ...
… type fieldN;
fieldN : type } Nama_record
>
Berikut ini adalah cara deklarasi array dalam Notasi Algoritmik, Pascal dan
C:
Notasi Algoritmik C
Kamus Data :
[typedef] TipeElemen
NamaArray : array[1..JmlElemen] NamaArray[JmlElemen];
of TipeElemen
Cara mengacu elemen array :
Cara mengacu elemen array : NamaArray[indeks]
NamaArray[indeks]
Indeks array dalam Bahasa C dimulai
dari 0
Notasi Algoritmik C
Sebagai Peubah
Kamus Data :
A : array[1..100] of integer int A[10];
NamaMhs : array[1..12] of
string char NamaMhs[13][25]; /*artinya
NilaiUjian : array[0..74] of array NamaMhs terdiri atas 13 elemen
real dan setiap elemen bertipe string
yang panjangnya 25 karakter*/
float NilaiUjian[75];
Cara Mengacu Elemen Array
A[4] {elemen ke-4 array A} A[4]; /*elemen ke-4 array A*/
A[i] {elemen ke-i dari array A[i]; /*elemen ke-i dari array A, i
A, i sudah terdefinisi, sudah terdefinisi, biasanya pencacah
biasanya pencacah dalam dalam looping*/
looping}
NilaiUjian[i+1]; /*elemen ke i+1
NilaiUjian[i+1] {elemen ke i+1 dari array NilaiUjian*/
dari array NilaiUjian}
Mhs : TabMhs
Notasi Algoritmik C
function NamaFungsi(deklarasi tipe NamaFungsi(deklarasi parameter,
parameter, jika ada)→tipe jika ada)
{bagian ini merupakan /* bagian ini merupakan spesifikasi
spesifikasi fungsi yang fungsi yang menjelaskan apa yang
menjelaskan apa yang dilakukan dilakukan dan yang dikembalikan oleh
dan yang dikembalikan oleh fungsi */
fungsi}
{
Kamus Data
{semua nama yang dipakai dalam /* Deklarasi nama */
fungsi dan hanya berlaku local /* semua nama yang dipakai dalam
di dalam fungsi} fungsi dan hanya berlaku local di
dalam fungsi */
Algoritma
{badan fungsi, berisi langkah- /* Algoritma */
langkah algoritma fungsi untuk
menghasilkan nilai yang akan /* badan fungsi, berisi langkah-
dikembalikan oleh fungsi} langkah algoritma fungsi untuk
menghasilkan nilai yang akan
return ekspresi dikembalikan oleh fungsi */
{pengembalian nilai yang
dihasilkan fungsi} return ekspresi;
/* pengembalian nilai yang
dihasilkan fungsi */
Berikut ini adalah cara deklarasi prosedur dalam Notasi Algoritmik dan C :
Notasi Algoritmik C
procedure void NamaProcedure(deklarasi
NamaProcedure(deklarasi parameter, jika ada)
parameter, jika ada) /* bagian ini merupakan spesifikasi
{bagian ini merupakan prosedur yang menjelaskan apa yang
spesifikasi prosedur yang dilakukan oleh prosedur ini */
menjelaskan apa yang dilakukan
oleh prosedur ini} {
Algoritma /* Algoritma */
{badan prosedur, berisi
langkah-langkah algoritma /* badan prosedur, berisi langkah-
prosedur} langkah algoritma prosedur */
Algoritma: main()
INPUT(bil1, bil2) {
printf(”bilangan 1 : ”);
IF bil1 < bil2 THEN scanf(”%d”, &bil1);
OUTPUT(bil1) printf(”bilangan 2 : ”);
ELSE scanf(”%d”, &bil2);
OUTPUT(bil2) if (bil1 < bil2)
ENDIF {
printf(”bilangan terkecil : %d”, bil1);
}
else
{
Printf(”bilangan terkecil : %d”, bil2);
}
4) Hapus data
5) Keluar program
Kemudian menerima masukan pilihan menu dari user, dan berhenti saat
user memilih no.5 yaitu keluar dari program.
printf(”===Data Mahasiswa===”);
printf(”NPM : %s”, M.npm);
printf(”NPM : %s”, M.nama);
printf(”NPM : %s”, M.ipk);
}
}
Program Utama
Program TabelFungsi #include <stdio.h>
x←10.0 x=10.0;
while x < 15.0 do while(x <= 15.0)
OUTPUT(x,’ ’,F(x)) {
x←x+0.2 printf(”%f:4:2 %f:10:4 \n”, x,
endwhile F(x));
OUTPUT(’------------’) x=x+0.2;
}
printf(’------------’);
}
Float F(float x)
{
return 2*x*x + 5*x – 8;
}
9. Buatlah prosedur dengan parameter masukan berupa alas dan tinggi dan
parameter keluaran berupa luas untuk menghitung luas segitiga kemudian
buat program utama yang dapat menghitung luas N buah segitiga !
Bahasa Algoritmik Bahasa C
Prosedur
Procedure
HitungLuasSegitiga(input alas, Langsung di program utama
tinggi : real, output luas :
real)
Kamus Data:
{tidak ada}
Algoritma:
luas ← (alas*tinggi)/2
Program Utama
Program Segitiga #include <stdio.h>
float Luas;
Algoritma :
printf(”Banyaknya segitiga :”);
INPUT(N) scanf(”%d”,&N);
for i←1 to N do for(i=0;i<=N;i++)
INPUT(a, t) {
HitungLuasSegitiga(a, t, L) printf(”alas =”);
OUTPUT(L) scanf(”%f”, &alas);
endfor printf(”tinggi =”);
scanf(”%f”, &tinggi);
HitungLuasSegitiga(alas, tinggi,
&luas);
printf(”luas = %f”,luas);
}
}
10. Buatlah prosedur untuk menukarkan dua buah nilai dalam variabel a dan b.
Prosedur menggunakan parameter input/output berupa variabel a dan b
kemudian buat program utama untuk mengghitung pengurangan dua buah
nilai bilangan bulat x dan y, dengan syarat x harus lebih besar dari y. Jika
y yang lebih besar, maka nilai x dan y harus ditukar!
Bahasa Algoritmik Bahasa C
Prosedur
procedure Tukar(input/output
a,b : integer) Langsung di program utama
Kamus Data:
temp : integer
Algoritma:
temp←a
a←b
b←temp
Program Utama
Program selisihXY #include <stdio.h>
OUTPUT(Z) Z = X – Y;
printf(”Z = %d”, Z);
}
temp = *a;
*a = *b;
*b = temp;
}
1.3 Praktikum I
1.3.1 Tugas Pendahuluan I
1. Sebuah rumah sakit meminta
anda untuk membuat program perhitungan tagihan kamar pasien untuk
rawat inap. Tagihan tersebut dihitung berdasarkan ruangan tempat
menginap dan kategori pasien tersebut umum, anak-anak, atau bayi yang
dibedakan berdasarkan usia. Berikut tarif kamar per hari berdasarkan jenis
kamarnya :
Golongan Kamar Tarif/hari
Kelas 1 600.000
Kelas 2 400.000
Kelas 3 200.000
Sedangkan penentuan kategori pasien berdasarkan usia adalah sebagai
berikut:
Kategori pasien Usia Charge
Umum >=17 tahun 500.000
Anak-anak 6-16 tahun 700.000
Bayi 0-5 tahun 1.000.000
Jika pasien tersebut merupakan pasien BPJS, maka total tagihan akan
didiskon sebesar 30%.
Maka Rumus untuk total tagihan adalah:
Total tagihan = (tarif kamar × jumlah hari) + charge – diskon
Buatlah algoritma dan program bahasa C untuk menentukan total tagihan
pasien rumah sakit tersebut sesuai kriteria yang diberikan di atas !
Contoh:
Input : N = 3, M = 2
112233
Input : N = 4, M = 5
1 1111222223333344444
3. Diketahui suatu data buku sbb.
Id_buku Jenis_Buku harga
B001 Komik 50000
B002 Novel 60000
Buatlah program untuk memasukkan data tersebut terhadap struktur buku
menggunakan array kemudian tampilkan semuanya !
Contoh :
INPUT Masukkan jumlah data yang akan
dimasukkan : 2
Data ke-1
Id Buku : B001
Jenis Buku : Komik
Harga : 50000
Data ke-2
Id Buku : B002
Jenis Buku : Novel
Harga : 60000
Input Berhasil ! Tampilkan ? Y
OUTPUT Data ke-1
Id Buku : B001
Jenis Buku : Komik
Harga : 50000
Data ke-2
Id Buku : B002
Jenis Buku : Novel
Harga : 60000
>7 100
Jika sudah menikah maka tunjangan keluarganya sebesar 10% dari gaji
pokok
Jika sudah menikah dan mempunyai anak (maksimal 3 orang) akan
mendapat tunjangan anak sebesar 12.5% per anak
Rumus perhitungan gajinya menjadi: Gaji = Gaji Pokok + Bonus +
tunjangan keluarga + tunjangan anak
INSTRUKSI : (gunakan bahasa C)
a. Buatlah fungsi untuk menentukan besarnya gaji pokok berdasarkan
golongan dengan parameter input berupa golongan dan keluaran
fungsi berupa gaji pokok
b. Buatlah prosedur untuk menentukan bonus yang didapat karyawan
berdasarkan masa kerja. Parameter input terhadap prosedur berupa
masa kerja, sedangkan parameter output berupa bonus
c. Buatlah prosedur untuk menentukan tunjangan keluarga
berdasarkan status. Parameter input terhadap prosedur berupa
status pernikahan dan parameter output berupa tunjangan keluarga
d. Buatlah fungsi untuk menghitung rumus perhitungan gaji dengan
keluaran fungsi berupa gaji total dan tanpa parameter input
(gunakan variable global)
e. Buat program utama yang menggunakan fungsi dan prosedur di
atas.
Perhatikan bahwa laporan ini harus merupakan hasil karya sendiri. Kesamaan
seluruh/sebagian isi laporan dengan mahasiswa lain akan mengakibatkan nilai
laporan menjadi Nol.