Disini saya akan membagikan sedikit ilmu tentang laporan algoritma dan struktur data.
Langsung saja ya kita mulai hehe ..
LAPORAN
PRAKTIKUM
ALGORITMA DAN STRUKTUR DATA
Diajukan untuk memenuhi salah satu
tugas Mata Kuliah Algoritma dan Struktur Data yang diampu oleh :
Heni Sulastri, S.T., M.T.
Oleh,
Fadilah Salsabila
177006006
JURUSAN TEKNIK
INFORMATIKA
FAKULTAS TEKNIK
UNIVERSITAS SILIWANGI
Jl. Siiwangi No.24 Tasikmalaya
Kotak Pos 164 Tlp. (0265) 323537
2018
PERTEMUAN 2
FUNGSI DAN TIPE DATA
1.1
Tujuan
Praktikum
Praktikan diharapkan
dapat :
a. Mengetahui
dan memahami konsep fungsi dan tipe
data.
b. Mengimplementasikan
fungsi dan tipe data
ke dalam suatu program dengan menggunakan bahasa C/C++.
1.2
Dasar Teori
Fungsi
dalam bahasa C adalah sekumpulan kode yang
ditaruh dalam sebuah blok dan dibuat untuk menjalankan tugas khusus. Salah satu
tujuan dari penggunaan fungsi dalam pemrograman seperti pada bahasa C adalah
untuk membuat program lebih terstruktur dan efisien sehingga program tersebut
mudah dipahami atau dibaca alur programnya.
Penggunaan fungsi membuat program jadi lebih efisien karena mengurangi pengulangan penulisan kode yang sama. Hal ini karena jika sekelompok kode sudah dibuat fungsi maka selanjutnya kita tinggal memanggil nama fungsinya saja beserta parameter yang menyertainya jika ada. Sebuah fungsi tidak dijalankan secara otomatis saat program dijalankan karena fungsi berada diluar rutin program utama yang berjalan dan hanya dijalankan jika fungsi dipanggil saja.
Penggunaan fungsi membuat program jadi lebih efisien karena mengurangi pengulangan penulisan kode yang sama. Hal ini karena jika sekelompok kode sudah dibuat fungsi maka selanjutnya kita tinggal memanggil nama fungsinya saja beserta parameter yang menyertainya jika ada. Sebuah fungsi tidak dijalankan secara otomatis saat program dijalankan karena fungsi berada diluar rutin program utama yang berjalan dan hanya dijalankan jika fungsi dipanggil saja.
Tipe data atau kadang disingkat
dengan ‘tipe’ saja adalah sebuah pengelompokan data untuk memberitahu compiler
atau interpreter bagaimana programmer ingin mengolah data tersebut.
Jenis-jenis Tipe Data dalam Bahasa C
1. Tipe Data Dasar
Sesuai
dengan namanya, tipe data dasar adalah tipe data paling dasar yang tersedia di
dalam bahasa pemrograman C. Terdapat 3 jenis tipe data dasar:
- Char: tipe data yang berisi 1 huruf atau 1 karakter.
- Integer: tipe data untuk menampung angka bulat.
- Float: tipe data untuk menampung angka pecahan.
Tipe
data dasar dasar disebut juga sebagai Primary Data Type, Fundamental Data
Types atau Basic Data Type.
2. Tipe Data Turunan
Tipe
data turunan berasal dari tipe data dasar yang dikelompokkan atau di
modifikasi. Terdapat 3 tipe data turunan di dalam bahasa pemrograman C:
- Array: Tipe data yang terdiri dari kumpulan tipe data dasar. Tipe data tersebut harus 1 jenis.
- Structure: Tipe data yang terdiri dari kumpulan tipe data dasar. Tipe data tersebut bisa lebih dari 1 jenis.
- Pointer: Tipe data untuk mengakses alamat memory secara langsung.
3. Tipe Data Bentukan (enum)
Sesuai
dengan namanya, tipe data bentukan adalah tipe data yang dibuat sendiri
oleh kita (programmer). Isinya berupa data-data yang sudah ditentukan. Tipe
data bentukan ini dikenal juga sebagai Enumerated Data Type atau
disingkat sebagai enum.
4. Tipe Data Void
Tipe
data void adalah tipe data khusus yang menyatakan tidak ada data. Penggunaannya
khusus untuk beberapa situasi seperti function yang tidak mengembalikan nilai (return
void), atau mengisi argumen function dengan nilai kosong.
Tanpa
pengelompokan, berikut ke-8 tipe data dalam bahasa pemrograman C:
- Char
- Integer
- Float
- Array
- Structure
- Pointer
- Enum
- Void
1.3
Latihan
/* File Luas Keliling.cpp *\
|
#Include
<stdio.h>
int luas(int a, int b) {
return
(a*b);
}
int keliling(int a, int b) {
return
2*(a+b);
}
int main () {
int
a, b ;
printf("Masukkan
Panjang = "); scanf("%d", &a);
printf("Masukkan
Lebar = ");
scanf("%d", &b);
printf("\n");
printf("Luas
Persegi Panjang = %d\n", luas
(a, b));
printf("Keliling Persegi Panjang =
%d\n", keliling (a, b));
return
0;
}
|
Tampilan
|
Analisis :
Program
di atas menggunakan 2 macam fungsi, yaitu fungsi untuk menghitung luas dan fungsi
untuk menghitung keliling. Adapun perintah penginputan angka dan penampilan hasil
tidak dibuatkan fungsi, melainkan langsung ditempatkan pada main programnya. Untuk
menampilkan hasil perhitungannya, dilakukan pemanggilan fungsi yang
bersangkutan. Luas(a, b) untuk memanggil fungsi perhitungan luas persegi panjang,
dan keliling(a, b) untuk memanggil fungsi perhitungan keliling persegi panjang.
Program tersebut mendeklarasikan a sebagai panjang, dan b sebagai lebarnya.
|
/* File Luas Keliling 2.cpp *\
|
#include <stdio.h>
typedef int bulat;
bulat luas(bulat a, bulat b){
return
(a*b);
}
bulat keliling(bulat a, bulat b) {
return
2*(a+b);
}
bulat main()
{
bulat a, b;
printf("Masukkan
Panjang = "); scanf("%d", &a);
printf("Masukkan
Lebar = ");
scanf("%d", &b);
printf("\n");
printf("Luas
Persegi Panjang = %d\n", luas
(a, b));
printf("Keliling
Persegi Panjang = %d\n", keliling (a, b));
return
0;
}
|
Tampilan
|
Analisis :
Program
ini menggunakan perintah typedef, yaitu suatu tipe data bentukan yang
merupakan alias dari tipe data primitif int. Tipe data bentukan dalam
program inidiberi nama bulat. Selanjutnya, pendeklarasian variabel a dan b
dapat secara langsung menggunakan aliasnya saja, bukan lagi menggunakan tipe
data primitif int. Dapat dilihat pada program di atas, tipe data primitif int
diubah dengan bulat.
|
/* File Luas Keliling 3.cpp *\
|
#Include
<stdio.h>
typedef int bulat;
struct PersegiPanjang {
bulat
panjang;
bulat
lebar;
};
bulat luas(bulat a, bulat b){
return
(a*b);
}
bulat keliling(bulat a, bulat b) {
return
2*(a+b);
}
bulat main() {
struct PersegiPanjang pp;
printf("Masukkan Panjang = "); scanf("%d",
&pp.panjang);
printf("Masukkan Lebar =
"); scanf("%d", &pp.lebar);
printf("\n");
printf("Luas Persegi Panjang = %d\n", luas (pp.panjang, pp.lebar));
printf("Keliling Persegi Panjang
= %d\n", keliling (pp.panjang, pp.lebar));
return 0;
}
|
#Include
<stdio.h>
typedef int bulat;
typedef struct {
bulat panjang;
bulat lebar;
}
PersegiPanjang;
bulat luas(PersegiPanjang pp) {
return (pp.panjang * pp.lebar);
}
bulat keliling(PersegiPanjang pp) {
return 2*(pp.panjang + pp.lebar);
}
bulat main() {
PersegiPanjang pp;
printf("Masukkan Panjang = "); scanf("%d",
&pp.panjang);
printf("Masukkan Lebar =
"); scanf("%d", &pp.lebar);
printf("\n");
printf("Luas Persegi Panjang
= %d\n", luas (pp));
printf("Keliling Persegi Panjang = %d\n", keliling (pp));
return 0;
}
|
Tampilan
|
Analisis :
Program
keduan diatas sama-sama menggunakan perintah struct (struktur), namun bentuknya
berbeda. Struct ini hampir sama prinsipnya dengan record. Berbeda dengan
array yang hanya dapat menyimpan kumpulan data dengan tipe data yang sama.
Struct memiliki bentuk khusus yang memungkinkan kita mengelompokkan beberapa
data dengan berbagai tipe data ke dalam satu unit data. Struct disebut juga user-defined type karena untuk penentuan
jenis data apa saja yang ingin disimpan dalam sebuahstruct, terserah sipemrogram
yang membuatnya.
Bentuk struct program 1 :
structPersegiPanjang
{
bulat a;
bulat b;
};
Jika
bentuknya seperti itu, maka di main program dideklarasikan :struct PersegiPanjangpp;
PersegiPanjang
sebagai nama strukturnya, dan pp adalah nama variabelnya, supaya lebih singkat
dalam pemanggilannya.
Untuk
pemanggilan fungsi luas dan kelilingnya, karena sudah menggunakan struct,
maka menjadi pp.a dan pp.b.
Bentuk struct program 2 :
typedefstruct
{
bulat a;
bulat b;
}PersegiPanjang;
Bentuk
struktur program 2 ini sekaligus menjadi tipe data bentukan karena disertai perintah
typedef. Perbedaannya, nama struct-nya diletakkan di akhir. Berbeda dengan
program 3.1 yang diletakkan setelah perintah structnya sendiri.
Karena
menggunakan typedef, pendeklarasian pada main programnya menjadi
:PersegiPanjangpp; atau tanpa disertakan kata struct-nya. Program 3.2 juga sudah
menggunakan fungsi input Persegi Panjangu ntuk proses penginputan bilangan.
Fungsi tersebut dipanggil dengan perintah pp=inputPersegiPanjang();
|
/* File Waktu 1.cpp *\
|
#Include
<stdio.h>
typedef struct {
int
HH, MM, SS;
} WAKTU;
WAKTU inputWaktu() {
WAKTU
w;
printf("Masukkan
Jam = "); scanf("%d",
&w.HH);
printf("Masukkan
Menit = "); scanf("%d", &w.MM);
printf("Masukkan
Detik = "); scanf("%d", &w.SS);
printf("\n");
return
w;
}
void tampilkanWaktu(WAKTU w) {
printf("WAKTU
%d:%d:%d\n", w.HH, w.MM, w.SS);
}
int isWaktuValid(WAKTU w) {
return
w.HH >= 0 &&w.HH <= 23
&&w.MM >= 0 &&w.MM <=
59
&&w.SS >= 0 &&w.SS <=
59
;
}
int main () {
WAKTU
w;
w=inputWaktu();
if
(isWaktuValid(w)){
tampilkanWaktu(w);
}
else
{
printf("WAKTU
tidak valid\n");
}
return
0;
}
|
Tampilan
|
/* File Waktu 2.cpp *\
|
#Include
<stdio.h>
typedef struct {
int
HH, MM, SS;
} WAKTU;
void tampilkanWaktu(WAKTU w) {
printf("WAKTU
%d:%d:%d\n", w.HH, w.MM, w.SS);
}
int isWaktuValid(WAKTU w) {
return
w.HH >= 0 &&w.HH <= 23
&&w.MM >= 0 &&w.MM <=
59
&&w.SS >= 0 &&w.SS <=
59
;
}
WAKTU inputWaktu() {
WAKTU
w;
do
{
printf("Masukkan
Jam = "); scanf("%d", &w.HH);
printf("Masukkan
Menit = "); scanf("%d", &w.MM);
printf("Masukkan
Detik = "); scanf("%d", &w.SS);
printf("\n");
}
while(!isWaktuValid(w));
return
w;
}
int main () {
WAKTU
w;
w=inputWaktu();
tampilkanWaktu(w);
return
0;
}
|
Tampilan
|
Analisis:
Program
1 dan 2 di atas menggunakan tipe data bentukan (typedef) berbentuk struct bernama
jam yang elemen-elemennya terdiri dari HH (jam), MM (menit), dan SS (detik). Kedua
program tersebut menggunakan prosedur untuk menginputkan jam, mengecek kevalidan
jam, dan menampilkan jam yang sudah valid. Adapun syarat jam atau waktu yang
valid ialah jam (0-23), menit (0-59), dan detik (0-59).
Perbedaan
dari source code program tersebut terletak pada saat waktu dinyatakan tidak
valid. Untuk program 1, jika waktu tidak valid akan muncul string “Jam tidak
valid”. Terlihat pada source code di main programnya terdapat pemilihan
if-then-else. Adapun program 2 menggunakan perintah pengulangan do-while
padaintis JamValid, yang jika waktu tidak valid maka perintah input data
waktu akan terus dilakukan hingga data waktu yang diinputkannya benar dan
valid.
|
1.4
Tugas
1. Buat tipe data mahasiswa menggunakan struct
dengan anggota :
a. NPM
<string/char>
b. Nama <string>
c. Tanggal Lahir <tanggal, bulan, tahun>
d. Kelas <char>
e. IPK
<float>
2. Buat fungsi untuk menginputkan data
mahasiswa.
3. Buat fungsi untuk menampilkan data mahasiswa.
/* File mahasiswa.cpp *\
|
#Include
<stdio.h>
#include <stdio.h>
#include <stdlib.h>
struct TanggalLahir{
int
Tanggal, Bulan, Tahun;
};
typedef struct mahasiswa{
char
NPM[10];
char
Nama[25];
struct
TanggalLahir born;
char
Kelas[2];
float
IPK;
} mahasiswa;
mahasiswa inputData() {
mahasiswa
mhs;
printf(" --------------------\n");
printf(" INPUT DATA MAHASISWA\n");
printf(" --------------------\n");
printf("Masukkan
Nama : ");
scanf("%[^\n]",&mhs.Nama);
printf("Masukkan
NPM : ");
scanf("%s",&mhs.NPM);
printf("\n");
printf("Masukkan
Tanggal Lahir\n");
printf(">>Tanggal
: "); scanf("%d",&mhs.born.Tanggal);
printf(">>Bulan : ");
scanf("%d",&mhs.born.Bulan);
printf(">>Tahun : "); scanf("%d",&mhs.born.Tahun);
printf("\n");
printf("Masukkan
Kelas : ");
scanf("%s",&mhs.Kelas);
printf("Masukkan
IPK : ");
scanf("%f",&mhs.IPK);
return
mhs;
}
mahasiswa tampilanData (mahasiswa mhs){
printf(" ------\n");
printf(" OUTPUT\n");
printf(" ------\n");
printf("Nama
: %s\n",mhs.Nama);
printf("NPM
: %s\n",mhs.NPM);
printf("Tanggal
Lahir :
%d-%d-%d\n",mhs.born.Tanggal,mhs.born.Bulan,mhs.born.Tahun);
printf("Kelas
: %s\n",mhs.Kelas);
printf("IPK
: %.2f\n",mhs.IPK);
}
int main() {
mahasiswa
mhs;
mhs
= inputData();
printf("\n");
tampilanData(mhs);
getchar();
getchar();
return
0;
}
|
Tampilan
|
Analisis :
Program
di atas merupakan program untuk menginputkan dan menampilkan data mahasiswa dengan
menggunakan nested struct atau dengan kata lain ‘ada struct di dalam struct’.
Nested structure merupakan suatu structure yang dapat digunakan di dalam
structure yang lainnya.
Pada
program di atas, struct utamanya yaitu struct mahasiswa yang dijadikan sebagai
tipe bentukan menggunakan perintah typedef. Struct mahasiswa ini memiliki elemen
NPM, Nama, struct Tanggal Lahir bernama born, Kelas, dan IPK. Adapun struct bagiannya
yaitu struct TanggalLahir yang dapat menyimpan Tanggal, Bulan, dan Tahun.
|
Mohon
kritik dan saran yang membangun agar saya dapat memperbaiki laporan selanjutnya. Terima Kasih mohon maaf apabila ada kesalahan
semoga bermanfaat :).
Tidak ada komentar:
Posting Komentar