penggunaan dan contoh program FUNGSI, STRUKTUR DAN FSTREAM pada Dev C++


Pada bahasa pemograman C++ kita akan berjumpa pada ketiga hal tersebut, yang dapat mempermudah dalam membangun sebuah sebuah program. Ketiga nya mempunyai kegunaan nya masing-masing, langsung saja pada penjelasan yang pertama

 

1.   FUNGSI

               Fungsi adalah sub-program yang bisa digunakan kembali baik di dalam program itu sendiri, maupun di program yang lain.

Fungsi dapat menerima input dan menghasilkan output.

Contoh fungsi yang paling sering digunakan adalah main()

Pada setiap program pasti memiliki satu function utama dan merupakan awal dari program berjalan atau CPU melakukan eksekusi dari sekelompok pernyataan yang diberikan, semua itu akan di mulai dari function int main(), function tersebut merupakan function utama yang akan menjadi kepala dari program dimana semua eksekusi pernyataan berawal.

Kalau kita menumpuk semua kode program di dalam fungsi main(),  maka program akan menjadi sulit terbaca.”

Karena itu, kita perlu membuat fungsi tersendiri agar program tidak berantakan.

·        Bentuk awal fungsi

tipe nama_fungsi (tipe parameter1, tipe parameter2, ...,tipe parameterN)

{

//Kode fungsi yang akan dialankan

return kembalian;

}

 

·        Sebagai contoh program simple menggunakan fungsi

#include <iostream>

using namespace std;

// membuat fungsi say_hello()

void say_hello(){

    cout << "Hello Selamat Datang!\n";

}

int main(){

    // memanggil fungsi say_hello()

    say_hello();

 

    return 0;

}

 

Sebuah fungsi juga bisa terletak dibawah main() namun dibutuh kan pendeklarasian nya pada awal promgram, atau diatas fungsi main(), karna pada bahasa pemograman c++ akan mengeksekusi program nya dari atas kebawah. Nah dengan deklarasi kita bisa mengatasi masalah ini dan membuat fungsi berada dibawah fungsi main()nya. Sebagai contoh

#include <iostream>

using namespace std;

void hello_word();

int main(){

    // memanggil fungsi say_hello()

    hello_word();

 

    return 0;

}

// membuat fungsi say_hello()

void hello_word(){

    cout << "Hello Word!\n";

}

 

Berikut contoh program funsi dengan menggunakan parameter

 

#include <iostream>

using namespace std;

void say_hello(string name){

    cout << "Hello " << name << "!\n";

}

 

int main(){

    say_hello("Belajar");

    say_hello("Fungsi");

   

    return 0;

}

 Contoh Fungsi yang mengembalikan nilai

 Ini biasa nya digunakan untuk perhitungan secara matematika, tetapi tak menutup kemungkinan untuk digunakan kepada hal yang lainnya

#include <iostream>

using namespace std;

int result;

void cetakPesan (){

    cout<<"Belajar C++"<<endl<<endl;

}

int tambah (int a, int b){

    result = a+b;

    //atau kita bisa menggunakan return

    return a+b;

}

int main () {

    cetakPesan();

    cout<<"tambah(5,6) = "<<tambah(5,6)<<endl;

    cout<<"result = "<<result<<endl;

    return 0;

}

 

Soal Soal

1.      Maksud dari void pada fungsi?

Jawaban: Fungsi void biasanya digunakan untuk menjalankan rutin program tertentu saja

 

2.      Apa itu parameter?

Jawaban : Merupakan variabel penampung input suatu fungsi. Dapat dikatakan bahwa parameter merupakan satu-satunya gerbang input dan pertukaran nilai antara suatu fungsi dengan dunia luar (fungsi main)

 

3.      Maksud penggunaan return?

Jawaban : Merupakan instruksi yang berguna mengembalikan hasil kerja suatu fungsi, untuk dapat digunakan di dunia luar (fungsi main).

 

4.      Perbedaan fungsi dan prosedure

Jawaban : secara kasat mata memang hampir sama, namun perbedaan terletak pada nilai kembali(return). Fungsi memiliki nilai kembali sedangkan prosedure tidak

 

5.      Knapa dicontohkan di atas sama sama disebut fungsi?

Jawaban : karna penggunaan nya yang sama, hampir tidak ada perbedaan penggunaan. Dua dua nya bisa di gunakan ditempat yang sama. Namun nilai kembali pada fungsi bisa digunakan untuk kelanjutan program bila masih digunakan

 

6.      Apa yang terjadi jika fungsi terletak di bawah main()dan tidak di deklarasikan di atas main()

Jawaban :  eror, karna pembacaan program c++ dari atas ke bawah

 

7.      Knapa harus menggunakan fungsi?

Jawaban : agar program tersebut tidak berantakan. Dan lebih singkat karna penulisan fungsi yang cukup sekali dan bisa digunakan berulang-ulang sesuai kebutuhan.

 

8.      Apakah fungsi bisa di gabung dengan struct dan fstream

Jawaban : tentu bisa. Dengan syarat dan ketentuan masing masing

 

9.      Bagaimana jika tidak ingin menggunakan fungsi?

Jawaban : tidak masalah, namun jika program dalam skala yang besar maka akan menyulitkan diri.

 

10.   apakah di dalam fungsi hanya bisa memproses data?

Jawaban : tentu tidak, dalam beberapa kasus tentu kita bisa input/output dari satu fungsi.

 

2.   STRUKTUR

 

Struct atau record adalah kumpulan data yang memiliki tipe data yang berbeda. Secara pendeklarasian, struct sangat berbeda dengan array yang hanya memiliki satu buah tipe data untuk setiap kumpulannya. Struct digunakan apabila data yang ingin dikelompokkan memiliki tipe data yang berbeda. Penggunaan struct ini mempermudah pengelompokan data yang berbeda dalam segi tipe data, dalam hal berulang maupun tidak. Pendeklarasian struct sebagai berikut:

 

bentuk umum

struct nama_struct{

/*macam-macam deklarasi variabel

*…

*/

}nama_object;

 

Contoh program

#include <iostream>

#include <string>

using namespace std;

 

int main(){

    struct siswa{

        int no_induk ;

        string nama;

        float nilai ;

    }adi, bambang; //deklarasi object di dalam deklarasi struct

 

    siswa budi, tono; //deklarasi object di luar struct

 

    return 0;

}

 

 

Struct Bersarang

Struct dapat dibuat bersarang (nested). Bersarang artinya ada struct di dalam struct.

 

Bentuk umum nya

struct complex

{

 int imag;

 float real;

}comp;

 

struct number

{

   struct complex comp;

   int integers;

} num1, num2;

 

Cara pemanggilan nya kurang lebih seperti ini:

num1.integer = 12;

num1.comp.real = 44.12;

num2.comp.imag = 11;

 

 

soal soal

1.      Apa yang harus dilakukan jika menggunakan struct yang sama dan banyak

Jawaban :  menggunakan perulangan pada nama objek. Misal pada struct di atas menggunakan num[i]. i adalah sebuah perulangan nya

 

2.      Maksud penggunaan struct bersarang?

Jawaban : penggunaan nya digunakan biasa nya karna ada data di dalam data, seperti didalam satu nama dan satu nomor mahasiswa terdapat beberapa data lain seperti alamat, nomor telp dan lain sebagainya

 

3.      Type data yang dapat digunakan sebagai isi struct

Jawaban : hampir semua atau mungkin semua type data digunakan dalam satu struct.

 

4.      Knapa harus menggunakan struct?

Jawaban :  karna struct mampu mengelompokkan tipe data yang beda, dan ini dapat juga digunakan berulang kali seperti array. Tapi tentu cakupan struct lebih luas dari array

 

5.      Apakah didalam deklarasi isi struct bisa langsung diisi dengan data tertentu?

Jawaban : bisa

 

6.      Kapan harus menggunakan struct?

Jawaban : disaat data yang digunakan berbeda type data

 

7.      Hal yang harus diperhatikan saat menggunakan lebih dari satu struct di dalam satu program yang sama

Jawaban : penndeklarasian nama objek harus sangat diperhatikan agar data tidak salah diinputkan/menjadi output nanti nya

 

8.      Apakah struct sama dengan array?

Jawaban : tidak, array hanya memiliki satu type data yang sama, sedangkan struct bisa berbeda type data

 

9.      Apakah struck bisa digabung dengan fungsi dan file stream?

Jawaban : tentu bisa

Contoh program ada di paling bawah

 

10.   Penggabungan array dengan struct?

Jawaban : tentu bisa


 

 

3.   FSTREAM

 

Sebelumnya kita sudah sering melakukan input output berupa karakter di layar menggunakan fungsi cout dan cin yang disediakan oleh pustaka iostream. Tapi bukan hanya itu, pada bahasa pemrograman C/C++ juga menyediakan pustaka yang berfungsi untuk melakukan tugas Input dan Output berupa sebuah file, seperti:

·        ofsteam: Merupakan sebuah tipe data output yang memungkinkan kita untuk melakukan pembuatan dan menulis informasi pada file.

·        ifstream: Merupakan sebuah tipe data input yang memungkinkan kita melakukan pembacaan informasi dari file.

·        fstream: Merupakan sebuah tipe data input output file yang memungkinkan kita untuk melakukan kedua hal tersebut, seperti membuat, menulis dan membaca informasi dari file.

 

ios::in

Membuka file untuk operasi input. (untuk operasi baca ifstream)

ios::out

Membuka file untuk operasi output. (untuk operasi baca ofstream)

ios::binary

Membuka file untuk operasi baca dan tulis dalam biner.

ios::ate

Mengatur posisi awal pointer file pada akhir file. Jika posisi pointer tidak diatur/ditetapkan, posisi awalnya adalah  di awal file.

ios::app

Untuk menambahkan data pada suatu file. Data ditambahkan di akhir file, sehingga data sebelumnya pada file yang sama tidak hilang.

Jika file yang dimaksud tidak ditemukan maka program akan membuat file baru.

ios::trunc

Jika file digunakan untuk operasi output dan file telah ada sebelumnya, content sebelumnya akan dihapus dan digantikan dengan yang baru.

bad()

Mengembalikan nilai TRUE jika operasi baca dan tulis mengalami kegagalan, yang disebabkan oleh kesalahan baca/tulis (Read/writing error).

Misalkan, kita mencoba untuk menulis ke dalam file yang tidak dibuka untuk menulis.

fail()

Mengembalikan nilai TRUE jika operasi baca dan tulis mengalami kegagalan, yang disebabkan oleh kesalahan logika (Logical error) atau kesalahan baca/tulis (Read/writing error).

eof()

Mengembalikan nilai TRUE jika file yang dibuka untuk dibaca telah mencapai akhir konten dari file.

good()

Mengembalikan nilai TRUE jika pada operasi file tidak terjadi kesalahan apapun.

 

ifstream secara otomatis mengeset flag ios::in. Begitu juga ofstream secara otomatis mengeset flag ios::out. Sehingga kita tidak perlu secara manual mencantumkan kedua flag tersebut. 
Namun ketika kita menggunakan
 fstream kita harus mencantumkan secara manual (menulisnya secara jelas/eksplisit) ios::in atau ios:out.

 

 

 

Dari macam-macam flag yang disebutkan di atas, kita dapat mengkombinasikan lebih dari satu atau bahkan semuanya. Untuk penulisanya setiap flag akan dipisahkan dengan tanda |

 

ofstream fileku;

fileku.open("filenya.txt ", ios::out | ios::in | ios::app | ios::trunc);

 

Menulis ke sebuah file

Untuk melakukan penulisan terhadap sebuah file yang telah kita buka, membutuhkan sebuah operator yang dinamakan Stream Insertion Operator << mirip seperti apa yang kita lakukan saat menggunakan obyek cout, sebagai gantinya kita di sini menggunakan ofstream atau fstream.

 

#include <iostream>

#include <fstream>

using namespace std;

int main () {

  ofstream myfile ("text.txt");

  if (myfile.is_open())

  {  myfile << "This is a line.\n";

     myfile << "This is another line.\n";

     myfile.close();

  }

  else cout << "Unable to open file";

  return 0;

}

 

Membaca sebuah file

Untuk membaca informasi dari sebuah file yang telah kita buka kedalam program kita, membutuhkan sebuah Sream Extraction Operator >> . Mirip seperti apa yang kita lakukan saat menggunakan obyek cin. Sebagai gantinya kita menggunakan ifstream atau fstream.

#include <iostream>

#include <fstream>

#include <string>

using namespace std;

int main () {

  string line;

  ifstream myfile ("text.txt");

  if (myfile.is_open())

  {

    while ( getline (myfile,line) )

    {

      cout << line << '\n';

    }

    myfile.close();

  }

  else cout << "Unable to open file";

  return 0;

}

 

 

Soal soal

1.      kemana file yang buat akan disimpan?

Jawaban :biasa nya terletak pada lembar kerja, atau dimana auto save pada program c++ di simpan

Jika hal itu bisa di atur dengan menambah kan beberapa syntak lagi dengan jelas sebagai acuan/penempatan file nyaa

 

2.      knapa output saat menulis tidak tampak/kosong

jawaban : karna output yang dimaksud langsung di tulis ke text yang telah di buat langsung oleh program, untuk mengecek nya langsung saja ke file yang telah dibuat tadi sesuai dengan program

 

3.      library yang digunakan

jawaban : #include<fstream> untuk dev c++, dan #include<fstream.h> untuk borland c++

 

4.      kenapa harus menggunakan file stream?

jawaban : agar data/input yang dibuat tersimpan permanent ke ROM. Karna program C++ tanpa menggunakan fstream ini hanya disimpan di RAM

 

5.      jika file yang di buat tidak ditemukan, tapi program juga tidak eror?

Jawaban : biasakan memperhatikan algoritma/logika, pasti ada kesalahan walau tidak eror, dan biasanya kesalahan terletak pada algoritma/logika

 

6.      Apakah file stream bisa dijadikan fungsi/struck?

Jawaban : tentu bisa, syarat dan ketentuan berlaku.

Ada pada program bonus dibawah

 

7.      Apa yang terjadi jika file dihapus/diganti nama

jawaban : program akan membuat ulang file nya dengan nama yang telah ditentukan

 

8.      Apakah fstream hanya mencakup 2 hal menulis dan membaca file?

Jawaban : tentu tidak, anda dapat mencari nya di google untuk lebih luas nya

 

9.      Knapa tidak langsung saja membuat note/word jika menulis data saja?

Jawaban : Dalam beberapa kasus ini diperlukan, saat program terus berjalan dan ada data yang tidak boleh di lupakan begitu saja(disimpan permanent)

 

10.   Jika file yang dituju tidak ada, apa yang terjadi pada program?

Jawaban : program akan otomatis membuat file baru jika fungsi yang digunakan adalah menulis. Jika membaca maka eror/tidak terjadi apa apa


11.    

Contoh program yang mencakup ketiga hal tersebut

1.  #include<iostream>

2.  #include<fstream>

3.  #include<string>

4.  #include<cstdlib>

5.  using namespace std;

6.  struct data_pegawai{

7.  char nama[20];

8.  int nik;

9.  char bagian[20];

10.         }dp;

11.         int baca(){

12.         string line;

13.         ifstream myfile("text.txt");

14.         if(myfile.is_open())

15.         {

16.         while(getline(myfile,line))

17.         {

18.         cout<<line<<endl;

19.         }

20.         myfile.close();

21.         }

22.         else{

23.         cout<<"Gagal membuka file";

24.         }

25.         }

26.         int tulis(){

27.         ofstream myfile ("text.txt");

28.         if (myfile.is_open())

29.         {   

30.         cout<<"input Nama: ";cin>>dp.nama;

31.         cout<<"input Nik: ";cin>>dp.nik;

32.         cout<<"input Bagian: ";cin>>dp.bagian;

33.         myfile<<"Nama : "<<dp.nama<<endl;

34.         myfile<<"Nik: "<<dp.nik<<endl;

35.         myfile<<"Bagian : "<<dp.bagian<<endl;

36.         cout<<endl;

37.         myfile.close();

38.         }

39.         else cout << "Unable to open file";

40.         }

 

41.         int menambahkan(){

42.         ofstream myfile ("text.txt", ios::app);

43.         if (myfile.is_open())

44.         {

45.         if (!myfile){

46.         cout<<"Tidak bisa membuka file";

47.         }

48.         cout<<"input Nama: ";cin>>dp.nama;

49.         cout<<"input Nik: ";cin>>dp.nik;

50.         cout<<"input Bagian: ";cin>>dp.bagian;

51.         myfile<<"Nama : "<<dp.nama<<endl;

52.         myfile<<"Nik: "<<dp.nik<<endl;

53.         myfile<<"Bagian : "<<dp.bagian<<endl;

54.         cout<<endl;

55.         myfile.close();

56.         }

57.         else cout << "Unable to open file";

58.         }

59.         exit(){

60.         exit(0);

61.         }

62.         int main()

63.         {

64.         int pil;

65.         system("cls");

66.         menu:

67.         cout<<"Program arsip C++\n";

68.         cout<<"Menu:"<<endl;

69.         cout<<"1.Menulis\n";

70.         cout<<"2.Membaca\n";

71.         cout<<"3.Menambahkan\n";

72.         cout<<"4.Keluar\n";

 

73.         for(int i=1; i>0; i++)

74.         {

75.         cout<<"Masukkan Pilihan : ";cin>>pil;

76.         switch(pil)

77.         {

78.         case 1:

79.         tulis();

80.         break;         

 

81.         case 2:

82.         baca();

83.         break;

84.         case 3:

85.         menambahkan();

86.         break;

 

87.         case 4:

88.         exit();

89.         break;

 

90.         default:

91.         cout<<"Input salah";

92.         goto menu;

93.         break;    

94.         }

 

 

95.         }

96.         }

 

              

Komentar