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
Posting Komentar