Langsung ke konten utama

[ALGORITMA DAN STRUKTUR DATA] MODUL 2

MODUL 2
FUNGSI DAN STRUCT

2.1 Tujuan Praktikum
1.      Memahami dan menguasai cara membuat fungsi.
2.      Memahami dan menguasai cara membuat struct.

2.2 Dasar Teori
a.       Fungsi pada Bahasa C
Dalam bahasa pemrograman C dikenal berbagai macam fungsi. Fungsi sendiri adalah elemen utama karena bahasa C terbentuk atas fungsi-fungsi. Fungsi digunakan untuk mengerjakan tugas tertentu yang mana definisinya dipisahkan dari program yang memanggilnya. Dalam satu program minimal mempunyai satu fungsi yaitu main(). Tujuan pembuatan fungsi adalah agar menghindari bagian yang sama dalam suatu program dan agar program lebih terstruktur.
Fungsi dapat didefinisikan menjadi 2 yaitu fungsi pustaka atau fungsi yang telah disediakan oleh header file turbo C sendiri dan fungsi yang didefinisikan sendiri oleh programmer.
Beberapa contoh fungsi pustaka bawaan turbo C :
·    Fungsi String (header file : string.h)
1. strcpy -> menyalin nilai variabel string asal ke variabel string tujuan. Format penulisan : strcpy(string_tujuan,string_asal);
2. strlen -> menghitung jumlah karakter yang ada dalam suatu string. Format penulisan : strlen(string);
3. strcat -> menambahkan string sumber ke bagian akhir dari string tujuan. Format penulisan : strcat(string_tujuan,string_sumber);
4. strupr -> merubah seluruh karakter pada string menjadi huruf besar (kapital). Format penulisan : strupr(string);
5. strlwr -> merubah seluruh karakter pada string menjadi huruf kecil. Format penulisan : strlwr(string);
6. strcmp -> membandingkan nilai dari 2 buah string. Hasil perbandingan berupa nilai integer dengan nilai (1) Negatif, apabila string 1 lebih kecil dari string 2 (2) Nol, apabila string 1 sama dengan string 2 (3) Positif, apabila string 1 lebih besar dari string 2. Format penulisan : strcmp(string1, string2);
·    Fungsi Aritmatika (header file : math.h, stdlib.h)
1. sqrt -> menghitung akar dari nilai sebuah bilangan. Format penulisan : sqrt(bilangan);
2. pow -> menghitung pemangkatan dari nilai sebuah bilangan. Format penulisan : pow(bilangan, pangkat);
3. sin, cos, tan -> menghitung nilai sinus, cosinus, tangen dari suatu sudut. Format penulisan : sin(sudut); cos(sudut); tan(sudut);
4. atof -> mengkonversi nilai suatu string menjadi nilai float/desimal dengan syarat nilai string berupa bilangan bulat atau desimal (koma dipisahkan dengan karakter titik "."). Format penulisan : atof(string);
5. atoi -> mengkonversi nilai suatu string menjadi nilai integer dengan syarat nilai string berupa bilangan bulat. Format penulisan : atoi(string);
6. div -> menghitung hasil pembagian(qout) dan sisa pembagian(rem). Format penulisan : div(bilX, bilY);
7. max -> mengambil nilai maksimal/terbesar dari dua buah bilangan. Format penulisan : max(bil1, bil2);
8. min -> mengambil nilai miinimum/terkecil dari dua buah bilangan. Format penulisan : min(bil1, bil2);
Dan masih banyak lagi fungsi-fungsi yang tersedia di bahasa C. Bagaimana dengan fungsi yang didefinikan sendiri oleh programer? Kita bebas mendefinikan fungsi serta parameter sesuai dengan tujuan pembuatan fungsi tersebut. Dengan format penulisan fungsi :
tipe_fungsi nama_fungsi(parameter_fungsi) { statement; }

Sekarang tinggal kita sesuaikan dengan kebutuhan dari program yang kita buat. Kalo memang fungsi sudah disediakan oleh C tidak perlu kita repot-repot mendefinisikan fungsi sendiri. Kalo tidak, ya kita harus mendefinisikan fungsi sendiri sesuai kebutuhan. Yang perlu diingat, tujuan dari pembuatan fungsi adalah memudahkan programmer dalam membangun program.
b.      Memahami Struct pada Bahasa C
Pengenalan Struct Pada Bahasa C
Sesuai dengan penamaannya, pengertian struct secara ringkas dan sederhana ialah "sekumpulan data yang terstruktur". Data yang terstruktur seperti yang gimana? Untuk menjawab pertanyaan tersebut, mari mencoba menyimak ilustrasi berikut ini.
            Setiap "manusia" memiliki nama yang digunakan untuk identitas pribadinya dalam kehidupan sehari-hari, manusia juga memiliki usia yang digunakan untuk mengetahui sudah berapa lama masa kelangsungan hidupnya di dunia, dan manusia juga memiliki jenis kelamin sebagai identitas pembeda terhadap sesama manusia secara biologis.
"Seseorang" adalah manusia.
                Setiap "pegawai" memiliki NIP sebagai identitas personalitas yang digunakan untuk kebutuhan di lingkungan instansi. Setiap pegawai juga memiliki jabatan sebagai identitas kedudukan pegawai yang bersangkutan dengan jenis pekerjaan yang dilakukan di dalam suatu instansi.
"Seseorang" merupakan pegawai di suatu instansi.
Berdasarkan ilustrasi di atas, yang perlu diperhatikan bukanlah makna kesuluruhan kalimat yang disampaikan, tetapi yang terpenting ialah hubungan kata yang bercetak miring (dengan tanda petik) dengan kata yang ditandai dengan pemberian garis bawah (Bercetak tebal). Setiap kata yang diberi garis bawah, merupakan atribut-atribut yang dimiliki oleh "Manusia", "Pegawai", "Seseorang". Atribut-atribut inilah yang disebut dengan data dan keterkaitan yang erat diantara atribut-atribut dengan "Manusia" dan "Pegawai" inilah menjadikan kumpulan data tersebut terstruktur. Untuk sedikit lebih jelasnya lagi, akan diuraikan di bagian berikut ini.
Menggunakan Struct Pada Bahasa C
      Berdasarkan uraian diatas, dituliskan bahwa atribut-atribut merupakan sekumpulan data dan data tersebut memiliki hubungan yang erat terhadap "Manusia", "Pegawai". Untuk itu, ketika ingin menyimpan sesuatu hal yang memiliki sekumpulan data terkait didalamnya, saat itulah "struct" menjadi pilihan satu-satunya. Struct membebaskan pemrogram untuk menyimpan data yang kompleks, data yang disimpan tidak harus bertipe data yang sama dengan data lainnya.
Untuk mendeklarasikan sebuah struct, kita dapat memilih salah satu dari dua metode berikut ini.
Pendeklarasian struct yang pertama (bentuk umum).
struct structName { tipeData namaVariabel; };

Sedangkan untuk pendeklarasian cara yang kedua, kita dapat menggunakan fasilitas typedef untuk memberikan nama samaran (alias name) kepada struct yang ingin kita deklarasikan dan gunakan nantinya.
typedef struct { tipeData namaVariabel; }structName;

            Jika dilihat dari kedua cara pendeklarasian diatas, hanya terdapat sedikit perbedaan saja, yaitu letak "nama" dari "struct" yang ingin digunakan. Perbedaan dari kedua cara pendeklarasian tersebut diatas akan lebih terlihat ketika melakukan perintah yang berhubungan dengan struct tersebut.
 Mari kita lihat langsung contoh dari penggunaan struct dengan bahasa c berikut ini sebagai implementasi dari penjelasan yang telah diuaraikan di atas.
#include <stdio.h> 

struct human { 
char nama[25]; 
int usia; 
}; 
 
struct pegawai { 
char nip[7]; 
char jabatan[16]; 
struct human manusia; 
}; 
 
int main(void) 
struct pegawai seseorang = {"010110", "Programmer", {"Seorang Manusia", 22}}; 
  
printf("Pegawai dengan NIP : %s \nKedudukan : %s \nBernama : %s (%d tahun) \n",  
seseorang.nip, seseorang.jabatan, seseorang.manusia.nama, seseorang.manusia.usia); 
  
return 0; 

Berdasarkan contoh kode program penggunaan "struct" pada bahasa c di atas, untuk dapat menggunakan data struct yang telah dideklarasikan, kita harus melakukan deklarasi lengkap di bagian fungsi "main"  struct pegawai seseorang;  . Ini merupakan cara pendeklarasian metode pertama atau cara pendeklarasian yang umum.
            Untuk pendefenisian nilai terhadap elemen-elemen atau atribut-atribut dari sebuah struct, caranya sama seperti mendefenisikan elemen-elemen pada sebuah array (larik). Jika masih samar-samar, postingan mengenai array berikut dapat menyegarkan kembali ingatan mengenai array.

Mengakses Elemen pada Struct
Meskipun pendefenisian elemen pada "struct" itu sama seperti pendefenisian nilai pada array, namun untuk mengakses elemen pada struct, cara pengaksesan elemen pada array  seseorang[0]  tidak bisa dilakukan. Untuk dapat mengakses elemen pada struct, kita harus menggunakan notasi tanda "." (titik) diikuti dengan nama atribut yang ingin diakses (seperti yang terlihat pada contoh kode program diatas). Jika Anda sudah pernah mempelajari materi "Objek" pada JavaScript, Java, maka notasi seperti tentu tidak akan terlihat asing lagi.
Mengirimkan Struct ke Fungsi
Ketika kita memiliki sebuah fungsi untuk menampilkan data dan kita tidak menggunakan struct dalam hal ini, maka fungsi yang harus kita deklarasikan adalah seperti berikut ini.
void tampilData(char nama[], int usia, char jabatan[], char nip[]) { //your code here... }

Bagaimana jika data kita lebih banyak lagi? Tentunya parameter fungsi kita pun akan semakin banyak. Oke, lalu bagaimana dengan struct? Bagaimana melewatkan struct ke sebuah fungsi? Caranya seperti berikut ini
void tampilData(struct pegawai person) { //your code here... }

            Sederhananya, kita cukup memberikan sebuah "struct" yang ingin dijadikan sebagai paramater dari sebuah fungsi untuk diproses oleh si fungsi tersebut.
Memperbaharui Nilai Elemen pada Struct
Sejauh ini, kita sudah mengetahui apa itu struct, bagaimana dan untuk apa "struct" itu digunakan, bagaimana cara mendeklarasikan dan pendefenisian setiap elemennya, dan bagaimana cara melemparkan struct menjadi paramater fungsi. Pada topik yang terakhir ini, kita akan melihat bagaiamna caranya memperbaharui nilai dari elemen-elemen pada sebuah struct.

            Masih ingat dengan topik bagaimana bahasa c memperlakukan parameter dari sebuah fungsi? Pada dasarnya, bahasa C memperlakukan parameter-parameter sebuah fungsi itu sebagai variabel otomatis yang hanya menyimpan salinan nilai dari variabel yang kita kirimkan ke fungsi tersebut. Postingan ini mungkin dapat menyegarkan pengetahuan kita kembali Fungsi pass by value. Oleh karena sifat tersebut, maka kita harus memberikan alamat keberadaan si struct di dalam memori kepada si fungsi yang ingin kita gunakan, agar si fungsi dapat mengetahui dimana elemen itu berada dan si fungsi dapat merubah nilai dari elemen tersebut. Postingan mengenai fungsi pass by reference mungkin dapat menyegarkan pengetahuan kita juga dalam mendukung pemahaman pada topik ini.
            Berikut ini merupakan contoh kode program bahasa c dalam memperbaharui nilai dari elemen-elemen pada sebuah struct.
#include <stdio.h> 
#include <string.h> 
 
typedef struct { 
char tipe[5]; 
int masaUji; 
}machine; 
 
typedef struct { 
char model[15]; 
char warna[10]; 
char bahanBakar[15]; 
machine mesin; 
moto; 
 
void tampilInfo(moto); 
void gantiBahanBakar(moto *); 
 
int main(void) 
moto mx = {"Jupiter MX", "Merah", "Pertamax", {"DOHC", 5}}; 
tampilInfo(mx); 
gantiBahanBakar(&mx); 
tampilInfo(mx); 
return 0; 
 
void tampilInfo(moto items) { 
puts("Moto Info"); 
puts("=============================="); 
printf("Model : %s (%s)\nBahan Bakar : %s\nTipe Mesin : %s\n" 
"Masa Uji Mesin : %d (tahun)\n",  
items.model, items.warna, items.bahanBakar, items.mesin.tipe, items.mesin.masaUji); 
puts("=============================="); 
 
void gantiBahanBakar(moto *items) { 
printf("Bahan bakar motor saat ini : %s\n", items->bahanBakar); 
printf("Ketikkan bahan bakar yang ingin digunakan : "); 
fgets((*items).bahanBakar, 15, stdin); 
items->bahanBakar[strlen(items->bahanBakar) - 1] = '\0'; 
}

Pada contoh kode program bahasa c di atas, penulis memanfaatkan fasilitas typedef untuk memberikan nama samaran ("alias name") untuk tiap struct yang dideklarasikan. Dengan cara ini tentunya lebih mudah digunakan dan lebih gampang untuk dibaca oleh pengembang siapa saja. Kita tidak perlu khawatir terhadap proses kompilasi, karena "compiler" cukup pintar untuk mengetahui data apa yang kita berikan.

Coba perhatikan potongan kode  items->bahanBakar  dan  (*items).bahanBakar  pada contoh kode program di atas. Kedua cara ini merupakan cara yang dilakukan ketika ingin mengakses elemen yang dimiliki oleh struct, dengan catatan, sebuah struct yang dikirimkan ke fungsi adalah "alamat" dari sebuah variabel struct dan parameter fungsi "harus" merupakan pointer (karena kita akan berinteraksi dengan alamat memori). Untuk menyegarkan kembali pengetahuan mengenai pointer, postingan berikut ini mungkin dapat membantu kita dasar pointer dan aritmatika pointer.
2.3 Pembahasan
Contoh Membuat Fungsi:
int pangkatdua(int bil){
      return (bil * bil);
     
}
#include <stdio.h>
int main() {
     
      int angka = 5;
      printf("Pangkat dua dari %d=%d \n", angka, pangkatdua(angka));
      return 0;
}
Analisis :
Contoh diatas dibuat untuk membuat pangkat dari variabel bil yang menggunakan type data integer. Return (bil*bil) merupakan pernyataan yang diberikan untuk memberikan nilai akhir, disini nilai akhirnya merupakan hasil pangkat dua dari bil. %d merupakan format untuk bilangan bulat.

Contoh Membuat Struct.
#include <stdio.h>>
struct jam {
      int H;
      int M;
      int S;
};

int main() {
      struct jam JAM = {14, 39, 30};
      printf("Now is = %d, %d, %d \n", JAM.H, JAM.M, JAM.S);
      return 0;
      };
Analisis:
Struct adalah kumpulan elemen elemen data yang digabungkan menjadi satu kesatuan.masing masing elemen data tersebut dikenal dengan sebutan field. field data tersebut dapat memiliki tipe data yang sama ataupun berbeda. walaupun field field tersebut berada dalam satu kesatuan, masing masing field tersebut tetap dapat diakses secara individual. Stuct diatas digunakan untuk membuat jam, struct jam diatas mencakup variabel H yg bertipe integer dan merupakan deklarasi jam, M bertipe integer dan merupakan deklarasi Menit, serta S yang bertipe integer dan merupakan deklarasi dari detik.









ADT jam.c
typedef struct {
      int H;
      int M;
      int S;
} jam;
int IsJValid (int H, int M, int S) {
      if (
            (H<=23 && H>=0)
            && (M<=59 && M>=0)
            && (S<=59 && S>=0)
      )
      {
            return 1;
      } else {
            return 0;
      }
}
jam MakeJam (int HH, int MM, int SS) {
      jam JAM= {HH,MM,SS};
      return JAM;
}
int GetHour (jam JAM) {
      return JAM.H;
}
int GetMinute (jam JAM) {
      return JAM.M;
}
int GetSecond (jam JAM) {
      return JAM.S;
}
void SetHour (jam JAM, int newHH) {
      JAM.H = newHH;
}
void SetMinute (jam JAM, int newMM) {
      JAM.M = newMM;
}
void SetSecond (jam JAM, int newSS) {
      JAM.S = newSS;
}
#include <stdio.h>
void BacaJam(jam JAM,int HH, int MM, int SS) {
      scanf("Masukkan jam = %d",&JAM.H);
      scanf("Masukkan menit = %d",&JAM.M);
      scanf("Masukkan detik = %d",&JAM.S);
}
#include <stdio.h>
void TulisJam(jam JAM){
      printf("Jam : %2d:%2d:%2d\n, JAM.HH, JAM.MM, JAM.SS");
}
Analisis:
Saya tidak menyediakan screenshoot karena program diatas tidak menggunakan fitur main.











DAFTAR PUSTAKA
·         Blog Kodeprogram. “Memahami struct pada bahasa c”. 20 Mei 2016. http://kodeprogramcpp.blogspot.co.id/2015/04/memahami-struct-pada-bahasa-c.html
·         Irfan. “Struct di C’. 20 Mei 2016. http://sukairfan.blogspot.co.id/2013/03/struct-di-c.html\
·         Sulastri, Heni.2016. Modul Praktikum Algoritma & Struktur Data. Tasikmalaya:Teknik Informatika Universitas Siliwangi
·         Yanuar, rezqi. “Fungsi Pada Bahasa C”. 20 Mei 2016. http://yanuarrezqi.blogspot.co.id/2011/05/fungsi-pada-bahasa-c.html


Komentar

Postingan populer dari blog ini

Memahami Dasar Controller dan View Pada Laravel

Memahami Dasar Controller dan View Pada Laravel Ya, sesuai judul diatas, setelah mempelajari dasar laravel khususnya routing laravel pada bahasan sebelumnya, selanjutnya kita akan Memahami Dasar Contoller dan View Pada Laravel. Sebelumnya kita harus tahu konsep MVC. M adalah Model, Model digunakan untuk query atau proses mengambil data dari database. V adalah View, View digunakan untuk tampilan user berupa html, css, js dan data yang bersifat client. Sedangkan C adalah Controller, yang digunakan untuk mengatur atau menjembatani antara model dan view juga bisa digunakan untuk mengatur alur program. Untuk langkah awal buka file web.php, dan didalam folder controllers buat file dengan nama ProfileController.php. Di materi sebelumnya kita lngsung mengedit di file web.php pada route. Kali ini saya akan mencoba untuk membuat coding yang terpisah dengan file route, kita hanya memanggil indexnya dalam route::get. Setelah membuat ProfileController.php di folder kel1 ya...