Input/Output dan Jenis Data
Setiap program c++ mempunyai bentuk umum seperti dibawah, yaitu :
# prepocessor directive
Void main ()
{
// batang tubuh program utama
}
Penjelasan :
1. Include
Adalah salah satu pengarah prepocessor directive yang tersedia pada c++ prepocessor selalu dijalankan terlebih dahulu pada saat proses kompilasi terjadi . bentuk umumnya :
# include < nama file>
Tidak diakhiri tanda semicolon karena bentuk tersebut bukanlah suatu bentuk pernyataan tetapi merupakan bentuk preprocessor directive baris tersebut mengintrusikan kepada kompiler yang menyisipkan file lain dalam hal ini file yang berakhiraran .h file header yaitu file yang berisi sebagai deklrasi contohnya :
# include <iostream.h> : diperlukan pada program yang menggunakan cout
#include<conio.h> : diperlukan bila melibatkan clrscr() yaitu perintah untuk membersihkan layar
# include<iomanip.h> :diperlukan bila melibatkan set w().yang bermanfaat untuk mengatur lebar dari suatu tampilan data
2. Fungsi main ()
Fungsi ini menjadi awal dan akhir eksekusi program c++.main adalah nama judul fungsi.melihat bentuk seprti itu dapat kita ambil kesimpulan bahwa batang tubuh program utama , utama, maka dapat dipastikan seorang pemrogram menggunakan minimal sebuah fungsi. Pembahasan lebih lanjut mengenai fungsi akan di terangkan kemudian. Yang sekarang coba ditekankan adalah kita menuliskan program utama kita di dalam sebuah fungsi main().
3. Komentar
Komentar tidak pernah di compiler. Dalam C++ terdapat 2 jenis komentar, yaitu :
Jenis 1 : /* Komentar anda di letakkan di dalam ini bisa mengapit lebih dari satu baris */
Jenis 2 : // Komentar anda diletakkan disini (hanya bisa perbaris)
4. Tanda Semicolon
Tanda semicolon “ : “ digunakan untuk mengakhiri sebuah peryataan. Setiap pernyataan harus diakhiri dengan sebuah tanda semicolon.
5. Mengenal Cout ( dibaca : C out)
Pernyataan cout merupakan sebuah objek di dalam C++, yang digunakan untuk mengarahkan data ke dalam standar output (cetak pada layar)
Contoh :
Tanda “ << “ merupakan sebuah operator yang disebut operator “penyisipan / peletakan”
1. PROGRAM PERDANA : HELLO WORLD!
SCRIPT :
#include <stdio.h>
void main ()
{
puts("Hello world!");
}
Membuat program dengan menggunakan fungsi puts.
Assalammu’alaikum, Nama Saya adalah .....
Sekarang saya belajar memprogram memakai bahasa C
Ayo teman belajar juga
Sampai jumpa.
SCRIPT :
#include <stdio.h>
#include <conio.h>
#include <conio.h>
void main (){
puts("Assalamualaikum , nama saya adalah Anas\nSekarang saya belajar memprogram memakai bahasa c\nAyo teman teman belajar juga\nSampai jumpa." );
}
2. PROGRAM TAMPILAN MENGGUNAKAN KODE ESCAPE
Pada program di atas fungsi puts diganti menjadi printf (tanpa mengubah parameternya).
Apa yang terjadi?
Akan menghasilkan satu baris tanpa ada perintah ganti baris. Membuat progam berikut :
SCRIPT :
#include <stdio.h>
main()
{
printf("1\t2\t3\t4\t5\t6\t7\t8\n");
printf("program\tkomputer\tbahasa\tc");
printf("\tdl Lab\tini\n");
printf("Saya sedang belajar\r");
printf("kode escape\n");
puts("Suara apa ya ini ?\a");
}
Apakah perbedaan antara puts dan printf?
Jawab : Puts berfungsi untuk menampilkan suatu keluaran ke layar tetapi fungsi puts hanya digunakan untuk menampilkan nilai string, sedangkan printf berfungsi untuk menampilkan suatu keluaran pada layar dan menampilkan semua jenis data.
Memperhatikan tampilan yang ada di layar. Bagaimana efek kode escape \n, \t, \r dan \a?
Jawab :
\n : Memberikan efek garis baru / New Line (Enter).
\t : Memberikan efek menjorok ke dalam (Tab).
\r : Pindah ke kolom paling kiri dari baris yang sama.
\a : Mengeluarkan sebuah bunyi (Bel).
Membuat program menggunakan fungsi puts atau printf untuk menampilkan tulisan berikut di layar :
Motto saya:
"Anything you can perceive, you can achieve"
SCRIPT :
#include <stdio.h>
void main()
{
printf("Motto saya: \n");
printf("Anything you can perceive, you can achieve \n");}
3. PROGRAM MENGISI INPUT KE VARIABEL STRING
SCRIPT :
#include <stdio.h>
main(){
char nama[50];
printf("Isikan nama anda : ");
gets(nama);
printf("Haii ");
puts(nama);
printf("Betul kah, kamu si %s?\n", nama);
}
Apa arti angka 80 pada name[80] di atas?
Jawab : Angka 80 pada name[80] artinya maksimal string (huruf) yang bisa dimasukkan kedalam variabel name.
Apa kegunaan fungsi gets?
Jawab : Gets digunakan untuk mendefinisikan string yang dimasukkan ke program
Mengganti baris : gets(name);
menjadi : scanf("%s",name);
SCRIPT :
#include <stdio.h>
main() {
char nama[80];
printf("Isikan Nama: "); gets (nama);
printf("Hai "); puts(nama);
printf("Betul kan, kamu si %s?\n", nama);
}
Apa pula kegunaan fungsi scanf?
Jawab : Scanf digunakan untuk mendefinisikan setiap input yang dimasukkan ke dalam progam.
4. PROGRAM MATEMATIKA BILANGAN BULAT & RIIL: PEMBAGIAN
SCRIPT :
#include<stdio.h>
main(){
int a=10, c;
float b=3.5, d;
c=a/b; d=a/b;
printf (“a=%d \n”,a);
printf (“a=%d \n”,b);
printf (“a=%d \n”,c);
printf (“a=%d \n”,d);
}
Memperhatikan cara menginisialisasi nilai variable a dan b
Berapakah nilai c dan d?
Jawab : c = 2 dan d = 2.857143
Mengapa nilai keduanya berbeda meskipun operasinya sama?
Jawab : Karena c didefinisikan bertipe int (bil. bulat) dan d bertipe float (bil. Pecahan).
5. PROGRAM INPUT KE VARIABEL BILANGAN:MENGHITUNG AKAR
SCRIPT :
#include<stdio.h>
#include<math.h>
void main()
{
int a;
float d;
printf("Masukkan nilai a = ");
scanf("%d", & a);
d= sqrt (a);
printf ("akar dari a = %f",d);
}
Variabel a bertipe bilangan bulat. Coba masukan nilai a = 100.5
Bagaimana hasilnya? Mengapa bisa begitu?
Jawab : Hasilnya 10 atau akar dari a tetap berharga bilangan bulat. Karena a sudah didefinisikan bertipe int (bil bulat), maka yang diperhatikan Cuma bilangan bulatnya saja.
Mengganti baris
scanf("%d",&a);
menjadi:
scanf("%f",&a);
Mengganti baris
printf("akar dari a = %f",b);
menjadi:
printf("akar dari a = %d",b);
SCRIPT :
#include <stdio.h>
#include<math.h>
void main(){
int a;
float b;
printf("Masukkan nilai a = ");
scanf("%f", & a);
b= sqrt (a);
printf ("akar dari a = %d",b); }
Apa yang terjadi? Mengapa harus %d, dan bukannya %f ?
Jawab : karena variabel a merupakan tipe data bilangan bulat dan %d adalah format specifier bilangan bulat
Apa yang terjadi ? Mengapa harus %f, dan bukannya %d ?
Jawab : karena variabel b merupakn tipe data pecahan dan %f adalah format specifier bilangan pecahan
6. PROGRAM INPUT KE VARIABEL BILANGAN:MENGHITUNG RERATA
SCRIPT :
#include <stdio.h>
main(){
float a,b,c,rerata;
printf("Masukkan nilai a,b dan c= ");
scanf("%f %f %f",&a,&b,&c);
rerata = (a+b+c)/3;
printf("rerata=%f",rerata);}
7. PROGRAM MENGHITUNG INVERS
SCRIPT :
#include <stdio.h>
main(){
int a;
float b,c;
printf ("Masukkan a = ");
scanf ("%d",&a);
b=1/a;
printf("b=1/%d=%f\n",a,b);
c=1.0/a;
printf("c=1/%d=%f\n",a,c);}
8. KEPRESISIAN BILANGAN RIIL
SCRIPT :
#include <stdio.h>
void main(){
float a=3,b;
double c;
b=1000/a;
c=1000/a;
printf(“a=%f\n”,a);
printf(“b=%f\n”,b);
printf(“c=%f\n”,c);}
Mengapa nilai b dan c berbeda meskipun operasinya sama ?
Jawab : Karena nilai b bertipe data pecahan dengan ketetapan data tunggal (float), sedangkan nilai c bertipe data numerik.
9. PENGATURAN TAMPILAN
SCRIPT :
#include <stdio.h>
main(){
double a=3.0,b;
b=1000.0/a;
printf(“a=%f\t\t b=%f\n”,a,b);
printf(“a=%7.2f\t\t b=%7.2f\n”,a,b);
printf(“a=%+7.4f\t\t b=%+7.4f\n”,a,b);
printf(“a=%q\t\t b=%q\n”,a,b);
printf(“a=%e\t\t b=%e\n”,a,b);
printf(“a=%5.2e\t\t b=%5.2e\n”,a,b);}
Tuliskan secara singkat maksud dari masing-masing format tadi (%f, %7.2f, %+7.4f, %g, %e, %5.2e)
Jawab :
- %f
Memanggil variable bertipe bil. Pecahan (float). - %7.2f
Memanggil variable betipe bil. pecahan dengan lebar tampilan 7 digit dan ketelitian (presisi) 2 digit. - %7.4f
Memanggil variable betipe bil. pecahan dengan tanda + diawali bilangan, lebar tampilan 7 digit dan ketelitian (presisi) 4 digit. - %g
Memanggil variable bertipe pecahan dengan nilai desimalnya adalah duplikasi bilangan sebelum koma, untuk a tidak ada - %e
Menyatakan bilangan ke dalam standar pangkat - %5.2e
Menyatakan bilangan ke dalam standar pangkat dengan lebar tampilan 5 digit dan ketelitian 2 digit
10. PROGRAM KOMBINASI INPUT-OUTPUT: DATA DIRI
SCRIPT :
#include<stdio.h>
void main(){
char nama[50],jur[15];
int angkatan,NIM;
/* mengisikan data */
printf("Nama :"); gets(nama);
printf("Jurusan :"); gets(jur);
printf("Angkatam :"); scanf("%d",&angkatan);
printf("NIM :"); scanf("%d",&NIM);
/*menampilkan data */
printf("\n Data anda adalah :\n");
printf("%s(%s %d/%d)\n",nama,jur,angkatan,NIM);}
Pesan error apakah yang muncul saat program tersebut tampil, serta bgaimana cara membetulkannya ?
Tidk ada pesan error pada program
Mengganti pemotongan baris ke-2 dan 3
(a)menjadi :
printf("%s(%s %d/%d)\n", nama,progStudi,angkatan,NIM);
(b)menjadi:
printf("%s(%s %d/%d)
\n", nama,progStudi,angkatan,NIM);
Manakah di antara (a) dan (b) yang memberikan pesan error, dan mengapa bisa terjadi error?
Jawab : Muncul error undefined symbol ‘nama’ dan untuk membetulkannya ganti nama menjadi Nama, pada pemotongan b terjadi error karena terjadi pemotongan pada range fungsi printf, yaitu di dalam tanda “ ”.
11. OUTPUT MENGGUNAKAN STREAM : HELLO WORLD! DALAM C++
SCRIPT :
#include<iostream.h>
void main(){
cout <<”Hello World!”<<endl;
cout<<”We’re in C++ now”;}
Apakah fungsi endl?
Jawab : Untuk membuat atau pindah ke baris baru di bawahnya
Membuat program menggunakan cout untuk menampilkan tulisan yang sama dengan soal no(2) pada modul 1
SCRIPT :
#include<iostream.h>
void main(){
cout <<”Assalamualaikum, nama saya Rissa”<<endl;
cout<<”saya sekarang belajar memprogram memakai Bahasa C++”<<endl;
cout<<”Ayo teman teman belajar juga ya”<<endl;
cout<<”Sampai Jumpa”;}
12. INPUT STRING MENGGUNAKAN STREAM: PROGRAM NAMA
SCRIPT :
#include <iostream>
using namespace std;
main()
{
char nama[50];
cout<<"Masukkan nama kamu : ";
cin>>nama;
cout<<"Halo "<<nama<<endl;
cout<<"Betul kan, nama kamu "<<nama;
return 0;
}
Menggantikan fungsi apakah cin dan cout?
Jawab :
-fungsi cin menggantikan gets, scanf
-fungsi cout menggantikan puts, printf
13. PROGRAM INPUT VARIABEL BILANGAN : MENGHITUNG AKAR
SCRIPT :
#include<iostream.h>
#include<math.h>
void main(){
int x;
float y;
cout<<”Masukkan nilai x =”;
cin>>x;
y= sqrt(x);
cout<<”akar dari x= “<<y;}
Bandingkan dengan program serupa pada modul 1 yang mengisikan variabel dengan fungsi scanf. Apakah perbedaan perlakuan terhadap variabel a untuk input menggunakan cin dalam program di atas dengan yang menggunakan scanf ?
Jawab : Perbedaannya terletak dalam cara pemanggilan variabelnya.
Program C dengan scanf : Pemanggilan variable a dengan scanf (“%d”, &a);
Program C++ dengan cin : Pemanggilan variable a dengan cin >> a; lebih simple
dengan memakai cin.
14. PROGRAM DENGAN BEBERAPA INPUT : MENGHITUNG RERATA
SCRIPT :
#include<iostream.h>
void main(){
float a,b,c,rerata;
cout<<”Masukkan nilai a,b dan c= “;
cin >>a>>b>>c;
rerata=(a+b+c)/3;
cout<<”rerata=”<<rerata;
}
1. PENCABANGAN TUNGGAL : IF
Buatlah program dibawah ini, jika umur lebih dari 60 tahun maka akan ditampilkan komentar.
SCRIPT :
#include<iostream.h>
void main(){
int umur;
cout<<"masukkan umur kamu= ";
cin >>umur;
if (umur >= 60){
cout<<"Selamat siang mbah"<<endl;
cout<<"Salam buat cucumu ya"<<endl;}
cout<<"jadi umurumu"<<umur<<"tahun";
}
Error apakah yang muncul serta bagaimana yang benar ?
Jawab : Error yang terjadi adalah jika umur di isi kurang dari 60 tahun maka komentar tetap akan ditampilkan, harusnya yang benar ialah jika umur kurang dari 60 tahun maka komentar tidak akan ditampilkan.
Jalankan dengan mengisikan umur 80 tahun, lalu jalankan lagi dengan umur 20 tahun. Mengapa komentar tambahan selalu muncul untuk umur berapapun tidak sesuai dengan yang diinginkan. Serta bagaimana yang benar ?
Jawab : Karena tidak ada {} saat setelah if, dimana tanda itu digunakan untuk tanda blok pada if.
SCRIPT :
#include <iostream>
using namespace std;
int main()
{
int umur;
cout << "Masukkan Umurmu = ";
cin >> umur;
if (umur >= 60){
cout << "\nHallo Mbah"<< endl;
cout << "Salam Buat Cucumu Ya" << endl;}
cout << "Jadi Umurmu "<< umur << " Tahun\n";
}
2. PROGRAM CONTOH
SCRIPT :
#include<iostream.h>
void main(){
int tahun, umur;
cout<<"Masukkan tahun kelahiranmu = "<<endl;
cin>>tahun;
umur = 2013 - tahun;
cout<< "Umurmu " <<umur <<"tahun\n"<<endl;
if (umur < 17)
{ cout<< "Kamu belum sweet seventeen\n";
cout<< "Sorry, Belum cukup umur\n";}}
Jalankan dan isikan tahun kelahiran 1975 serta nilai lain. Kesalahan apakah yang terjadi dan bagaimana yang benar ?
Jawab : Hasil umur yang dikeluarkan tidak sesuai dengan saat ini karena umur = 2013-tahun; yang benar adalah umur = 2019-tahun;
SCRIPT :
#include<iostream>
void main(){
int tahun, umur;
cout<<"Masukkan tahun kelahiranmu = "<<endl;
cin>>tahun;
umur = 2019 - tahun;
cout<< "Umurmu " <<umur <<"tahun\n"<<endl;
if (umur < 17)
{ cout<< "Kamu belum sweet seventeen\n";
cout<< "Sorry, Belum cukup umur\n";}
}
3. PENCABANGAN GANDA : IF – ELSE
Buatlah program untuk menentukan apakah seseorang lulus atau tidak menggunakan nilainya.
SCRIPT :
#include<iostream.h>
void main (){
int N;
cout<<"Masukkan nilai (0 s/d 100) = ";
cin>>N;
if (N>=60)
cout<<"Lulus"<<endl;
else if (N<60)
cout<<"Tidak Lulus"<<endl;
}
Error apakah yang muncul waktu dicompile dan bagaimana yang benar ? perbaiki dan jalankan dengan mengisikan beberapa nilai N.
Jawab : Tidak ada error yang terjadi waktu di compile.
4. PENCABANGAN BERTINGKAT : IF-ELSE-IF
Buatlah program untuk member nilai huruf berikut.
SCRIPT :
#include<iostream.h>
void main (){
int N;
cout<<"Masukkan nilai= ";
cin>>N;
cout<<"Nilai huruf= ";
if (N>=80)
cout<<"A";
else if (N>=60)
cout<<"B"<<endl;
else if (N>=40)
cout<<"C"<<endl;
else if (N<40)
cout<<"D"<<endl;
}
Hasil tidak sesuai dengan yang seharusnya, jelaskan mengapa bisa terjadi seperti itu ? buatlah program flowchart diatas.
Jawab : karena tidak sesuai dengan syntax if yang digunakan dan setelah if harus dipisah dengan else sebelum membuat perintah if baru.
5. KONDISI KOMBINATORIAL
Perbaiki progran diatas dengan kondisi yang merupakan kombinasi logika yang merupakan kombinasi logika, misalnya : jika N lebih dari atau sama dengan 60 tetapi kurang dari 80 maka..., tanpa percabangan bertingkat. Buat flowchart dari program tersebut.
SCRIPT :
#include<iostream.h>
void main ()
{
int N;
cout << "Masukkan nilai = ";
cin >> N;
cout << "Nilai huruf = ";
if (N >= 40)
if (N>=60)
if (N>=80)
cout << "A"<<endl;
else
cout <<"B"<<endl;
else
cout <<"C"<<endl;
else
cout <<"D"<<endl;
}
Sebuah / kelompok intruksi diulang untuk jumlah pengulangan tertentu. Baik yang terdifinisikan sebelumnya ataupun tidak.
Struktur pengulangan terdiri atas dua bagian :
1. Kondisi pengulangan yaitu ekspresi Boolean yang harus di penuhi untuk melaksanakan pengulangan.
2. Isi atau badan pengulangan yaitu satu atau lebih pernyataan (aksi) yang akan diulang.
Perintah atau notasi dalam struktur pengulangan adalah :
1. Pernyataan while
2. Pernyataan do…while
3. Pernyataan for
4. Pernyataan continue dan break
5. Pernyataan go to
PENJELASAN
1. Pernyataan WHILE
Pernyataan while merupakan salah satu pernyataan yang berguna untuk memproses suatu pernyataan atau beberapa pernyataan beberapa kali. Pernyataan while memungkinkan statemen-statemen yang ada didalamnya tidak dilakukan sama sekali. Bentuk Umumnya :
while (kondisi){
Pernyataan ;}
2. Pernyataan DO…WHILE
Pernyataan do while mirip seperti pernyataan while hanya saja pada do while
pernyataan yang terdapat didalamnya minimal akan sekali dieksekusi. Bentuk Umumnya :
do {
pernyataan;
} while (kondisi);
3. Pernyataan FOR
Pernyataan for digunakan untuk menghasilkan pengulangan(looping) beberapa kali tanpa penggunaan kondisi apapun. Pada umumnya looping yang dilakukan oleh for telah diketahui batas awal, syarat looping dan perubahannya. Pernyataan for digunakan untuk melakukan looping. Pada umumnya looping yang dilakukan oleh for telah diketahui batas awal, syarat looping dan perubahannya. Selama kondisi terpenuhi, maka pernyataan akan terus dieksekusi.
Bentuk Umumnya :
for (inisialisasi ; kondisi ; perubahan)
{
Statement; }
4. Pernyataan Continue dan Break
Pernyataan break akan selalu terlihat digunakan bila menggunakan pernyataan switch. Pernyataan ini juga digunakan dalam loop. Bila pernyataan ini dieksekusi, maka akan mengakhiri loop dan akan menghentikan itrasi pada saat tersebut.
5. Pernyataan goto
Pernyataan goto diperlukan untuk melakukan suatu lompatan ke suatu pernyataan berlabel yang ditandai dengan tanda " : ". Bentuk Umumnya :
Go to bawah;
pernyataan 1;
pernyataan 2;
pernyataan 3;
1. PENCABANGAN
Jalankan program berikut dan isikan umur = 20,19,21,23, Dst. Bagaimana keluarannya ? Bagaimana modifikasinya ?
SCRIPT :
#include<iostream.h>
void main()
{
int umur;
cout<<"masukkan umur kamu= ";
cin >>umur;
if (umur ==20)
cout<<"Umur kamu tepat dua puluh tahun"<<endl;
else
cout<<"Umur kamu Bukan Dua Puluh Tahun"<<endl;
}
2. PENCABANGAN BERGANDA : SWITCH
Jalankan program berikut dan isikankategori = A, B, C, D atau E. Bagaimana keluarannya ? Modifikasi agar menjadi benar ?
SCRIPT :
#include<iostream.h>
void main ()
{
char kategori;
float diskon;
cout<<"Kategori pelanggan (A/B/C/D/E)= ";
cin>> kategori;
switch (kategori) {
case'A':
diskon=40;break;
case'B':
diskon=25;break;
case'C':
diskon=10;break;
case'D':
diskon=0;
}
cout<<"Diskon="<<diskon<<"%";
}
3. LOMPATAN : LABEL DAN GOTO
Buatlah program dibawah ini. Jalankan dan tulislah tampilan yang muncul. Terangkan fungsi dari label dan goto.
SCRIPT :
#include<iostream.h>
void main ()
{
cout<<"ini langkah pertama"<<endl;
goto LABELB;
LABELA:
cout<<"ini langkah kedua"<<endl;
goto LABELC;
LABELB:
cout<<"ini langkah ketiga"<<endl;
goto LABELA;
LABELC:
cout<<"ini langkah keempat"<<endl;
}
Label dan goto berfungsi :
Jawab : Label sebagai penunjuk dalam proses. Sedangkan Goto digunakan untuk melompati suatu proses yang lainnya didalam program dan juga bisa digunakan sebagai suatu proses pertimbangan.
4. PERCABANGAN & LOMPATAN UNTUK PERULANGAN
SCRIPT :
#include<iostream.h>
#include<conio.h>
void main (){
float C, F;
char tombol;
Ulangi:
cout << " Masukkan suhu dalam celcius = ";
cin >> C;
F = 1.8*C+32;
cout << "Suhu dalam Fahrenheit = "<< F<< endl;
cout<< "Apakah mau mengulangi (Y/T)?";
tombol = getch () ; cin >>tombol ;
cout<<endl;
if(tombol == 'Y' || tombol == 'Y'){
goto Ulangi;}
else{
cout<<"Selesai";}
}
Apakah fungsi dari getch() ?
Jawab : getch() berfungsi untuk membaca sebuah karakter tanpa perlu menekan enter.
5. KALANG BERSYARAT “PERIKSA-JALANKAN” : WHILE
SCRIPT :
#include <iostream.h>
#include <conio.h>
void main()
{ char nama [80];
char tombol;
while ((tombol == 'Y')||(tombol == 'y')) {
cout << "Masukkan nama anda = ";
cin >> nama;
cout << "Halo " << nama << endl << endl;
cout << "Apakah mau mengulangi (Y/T)?";
tombol = getch();cin >> tombol;
cout << endl << endl; }
cout << "Selesai";
}
Apakah yang terjadi mengapa hasil output kosong ?
Jawab : karena belum ada fungsi getch dan sebelum masuk while diberi fungsi getch
tombol : ();
SCRIPT :
#include<iostream.h>
#include<conio.h>
main() {
char nama[80];
int tombol;
while((tombol =='Y')||(tombol=='y')); {
cout<<"Masukkan nama anda: ";
cin>>nama;
cout<<"Hai "<<nama<<endl<<endl;
cout<<"Apakah mau mengulangi(Y/T)?: ";
tombol=getch();cin>>tombol;
cout<<endl<<endl;}
cout<<"Selesai";}
6. KALANG BERSYARAT “JALANKAN-PERIKSA-“ : DO-WHILE
SCRIPT :
#include <iostream.h>
#include <iostream.h>
#include <conio.h>
main ()
{
char nama [80] ;
int tombol, cacah = 0;
float nilai, jumlah = 0,rerata;
cout <<"Menghitung rerata nilai \n";
cout <<"Masukkan nilai, "
<<"Isikan negatif jika selesai\n\n";
do {
cacah++;
cout<<"Data ke-" <<cacah<<"=";
cin>>nilai;
jumlah=jumlah+nilai;
}
while (nilai>=0);
rerata = jumlah /cacah;
cout << "\nBanyaknya data = "<<cacah;
cout << "\nJumlah = "<<jumlah;
cout << "\nRerata ="<<rerata; }
Apa fungsi intruksi cacah++ ?
Jawab : cacah++ berfungsi untuk meningkatkan nilai satu setiap kali looping.
1. TABEL KUADRAT
SCRIPT :
#include <iostream.h>
#include <iomanip.h>
void main() {
int x=0;
cout << " x x kuadrat\n";
while (x <= 20) {
cout << setw(3) << x << setw(8) << (x*x) << endl;
x++;
} }
Jalankan program diatas. Jika, terjadi error, bagaimana yang benar ?
Jawab : tidak ada error waktu program di compile.
Apa guna fungsi setw( ) berfungsi membuat tampilan dalam rata kanan dengan lebar ditentukan oleh nilai yang ada dalam kurung
2. MEMUTUS KALANG : BREAK & CONTINUE
SCRIPT :
#include <iostream.h>
void main() {
int i = 0;
cout << i;
do {
i++;
cout << "- "; if (i == 4)
continue; cout << i;
} while (i < 10); cout << "\nSelesai\n"; }
Fungsi simbol / / Berfungsi sebagai komentar dalam program / keterangan Fungsi dari keyword break, Break berfungsi mengeluarkan eksekusi compiler dari struktur program setelah suatu kondisi tertentu dipenuhi
Gantilah break dengan continue, dan jalankan !
SCRIPT :
#include<iostream>
using namespace std;
int main(){
int i=0;
cout<<i;
do{
i++;
cout<<"-";
// if (i==4)
// continue;
cout<<i;
}while(i<12);
cout<<"\nSelesai\n";}
Apa fungsi Continue ?
Jawab : Continue berfungsi untuk melanjutkan suatu kompile setelah suatu perintah sudah terpenuhi.
3. TABEL SINUS
SCRIPT :
#include <stdio.h>
#include <math.h>
void main ()
{
const float PI = 3.141593;
int x = 0, x2;
float y,y2;
puts ("Tabel sinus\n------------");
puts (" x sin(x) x sin(x)");
do {
y = sin (x/180.0*PI);
x2 = x+180;
y2 = sin(x2/180*PI);
printf("%4d %8.4f %4d %8.4f\n",
x,y,x2,y2);
x+= 10;
}
while (x <= 180 );
}
Yang menyebabkan Tabel ini salah?
y = sin (x/80,0*PI) y = sin (x2/80*PI) Seharusnya
y = sin (x/57,2958) y 2= sin (x/57,2958)
Apakah fungsi dari operator += ?
+= untuk menambahkan nilai x dengan nilai 10
4. TABEL KONVERSI SUHU
Dengan struktur yang serupa (namun tak sama) memakai DO-WHILE, buatlah tabel konversi suhu dan celcius ke fahrenheit, reamur dan kelvin, mulai dari suhu 0̊C dengan langkah 5̊C.
SCRIPT :
#include <stdio.h>
#include <math.h>
void main()
{
int C=0;
float F, R, K;
puts("Tabel konversi suhu\n-------------------");
puts(" C F R K");
do {
F = 9.0/5.0*C + 32;
R = 4.0/5.0*C; K = C + 273.25;
printf("%4d %8.1f %8.1f %8.2f\n",C,F,R,K);
C += 5;
} while (C <= 100); }
5. METODE NUMERIC : BISECTION
SCRIPT :
#include <iostream.h>
#include <iomanip.h>
#include <math.h>
void main() {
int iterasi = 0;
double xL, xC, xU, yL, yC, yU;
cout <<"Mencari akar persamaan x*x-2*x-3=0"
<<"dengan metode bisection\n"
<<"Masukkan tebakan awal bawah = ";
cin >> xL;
cout<< "Masukkan tebakan awal atas = ";
cin >> xU;
cout << "iterasi xL xC"
<< " xU yL" << " yC yU\n";
do{
xC = ( xL+xU)/2;
yL = xL*xL-2*xL-3;
yU = xU*xU-2*xU-3;
yC = xC*xC-2*2*xC-3;
cout << setw(5) << iterasi
<< setiosflags (ios::fixed)
<< setprecision (5)
<<setw (12) << xL
<<setw (12) << xC
<<setw (12) << xU
<<setw (12) << yL
<<setw (12) << yC
<<setw (12) << yU << endl;
if (yL*yC <= 0)
xU = xC;
else
xL = xC;
iterasi ++;
}
while ((iterasi <= 10 )&& (fabs(yC)>1e-5));
cout << "Jadi akarnya adalah "<< xC;
}
Apa guna dari fungsi setpresion() ?
Set presision, merupakan suatu fungsi manipulator yang digunakan untuk mengatur jumlah digit desimal yang ingin ditampilkan.
Apa beda ios::fixed dan ios::scientific ?
Jawab : mempunyai fungsi yang sama yaitu format bilangan rill akan tetap dapat diubah dengan memanggil fungsi set atau unset diikuti argumen ios::scientific atau ios::fixed
Apa fungsi dari fabs() ?
Jawab : untuk menghitung nilai mutlak dari x; x bilangan real.
6. KALANG FOR UNTUK PERULANGAN
SCRIPT :
#include <iostream>
using namespace std;
int main() {
int i;
for (i=1; i<=18; i++) {
cout << "kalang ke-" << i << endl; }}
Fungsi masing-masing bagian pada baris for
(a)for (i=8; i<=18; i++) { : mengurutkan angka kalang 8 samapi 18
(b)for (i=1; i<=10; i++) { : mengurutkan angka kalang 1 sampai 10
(c)for (i=1; i<=20; i=i+2) { : mengurutkan angka kalang dengan kelipatan 2
7. KALANG FOR BERTINGKAT : TABEL PERKALIAN
SCRIPT :
#include <iostream>
#include <iomanip>
using namespace std;
void main () {
for (int i=1; i<=10; i++) {
for (int j=1; j<=i; j++) {
cout << setw (5) << i*j;
} cout << endl;
} }
8. KALANG FOR UNTUK TABEL ASCII
Tabel ini berisi kode-kode ASCII dan karakter yang diwakilinya. Kelompok karakter apa yang masing-masing mempunyai kode dari 48 s/d 57. Dari 65 s/d 90. Dari 97 s/d 122 ?
SCRIPT :
#include <iostream.h>
#include <iomanip.h>
using namespace std;
int main (){
cout << "\t";
for (int i=32; i<=255; i++) {
cout << setw(3) << i << " "; }}
Kelompok karakter apa yang masing-masing mempunyai kode dari 48 s/d 57, dari 65 s/d 90, dari 97 s/d 122 ?
kode dari 48 s/d 57 termasuk karakter angka 0-9
kode dari 65 s/d 97 termasuk karakter huruf capital A-Z kode dari 97 s/d 122 termasuk karakter huruf kecil a-z
9. KALANG FOR BERTINGKAT UNTUK SIMULASI BUNYI DERING TELEPON
Kompile program dibawah ini, 2 buah error apa yang terjadi dan bagaimana yang benar ?
SCRIPT :
#include <iostream.h>
#include <dos.h>
void main() {
int kring;
for (kring = 1; kring <=2; kring++) {
delay(1000);
cout << "kr";
for (int i=1; i<=20; i++) {
cout << "i";
sound(600);
delay(100);
nosound(600);
sound(1500);
delay(30);
nosound();}
cout <<"ng\n";}}
3 buah error apa yang terjadi ?
„delay‟ : undeclarated identifier
„sound‟ : undeclarated identifier
„nosound‟ : undeclarated identifier
Fungsi delay() ? berfungsi sebagai waktu tunda antara bunyi pertama ke bunyi berikutnya
Fungsi sound() ? berfungsi menunjukkan besarnya frekuensi bunyi yang dikeluarkan
10. VARIABEL LARIK PADA PERHITUNGAN NILAI RERATA
Ingat kembali menghitung nilai rerata 3 nilai pada modul I. Alih-alih menggunakan sebuah variable larik a. Error apa yang terjadi dan bagaimana yang benar?
Error penggunaan tanda kurung (), seharusnya [] pada baris cin >> a(0) > a(1) >> a(2);
SCRIPT :
#include <iostream>
using namespace std;
main() {
int N;
float jumlah, rerata, a[5];
cout << "Banyaknya nilai = ";
cin >> N;
jumlah = 0;
for (int i=0; i<N; i++) {
cout << "Nilaike-" << (i+1) << " = ";
cin >> a[i];
jumlah = jumlah+a[i]; }
rerata = jumlah/N;
cout << "Rerata = " << rerata; }
Error apa yang ada dan bagaimana yang benar ?
Jawab : Tidak ada yang error
Isikan banyaknya nilai = 4 dan isikan nilai-nilainya. Program berjalan dengan lancar. Lalu coba lagi dengan banyaknya nilai = 15 dan isikan nilai-nilainya. Apa yang terjadi dan mengapa begitu, serta bagaimana memperbaikinya?
Jawab : Program terus looping, karena nilai yang dimasukkan melebihi batas, seharusnya nilai atau lebar larik a [5] diganti a[15].
1. SEKUP VARIABEL DALAM KALANG FOR
SCRIPT :
#include <iostream>
using namespace std;
int main()
{
int i = 5;
cout <<"di luar kalang i= " << i << endl;
for (i=1; i<=10; i++) {
cout <<" di dalam kalang i= " << i<< endl;
}
cout <<"di luar kalang i= " << i << endl;
}
Mengganti pernyataan for di atas menjadi:
for (int i=1; i<=10; i++) {
jalankan program tersebut dan perhatikan nilai i yang ditampil-kan. Apa pengaruh pendefinisian variabel i di dalam kalang for(1). Muncul error karena Multiple declaration for „i‟.
Mengganti pernyataan for di atas dengan menghilangkan bagian inialisasi kalang for menjadi :
for (; i<=10; i++) {
Apakah yang terjadi apabila tidak dilakukan inisialisasi pada kalang for(2). Pengaksesan variabel dalam kalang for memakai nilai awal yang telah didefinisikan diluar kalang for
2. KALANG FOR UNTUK MENGISI DAN MENAMPILKAN MATRIKS
SCRIPT :
#include <iostream.h>
main() {
int i,j,N = 3;
float A[5][5];
for ( i=0; i<N; i++) {
for ( j=0; j<N; j++) {
cout << "A(" << i << "," << j << ") = ";
cin >> A[i][j];
}
}
cout << "Matriks A = \n";
for ( i=0; i<N; i++) {
for ( j=0; j<N; j++) {
cout << "\t" << A[i][j]; }
cout << endl;
}}
Program di atas adalah sebuah contoh program yang digunakan untuk mengisi nilai-nilai elemen pada matriks ukuran 3x3. Modifikasi (dengan menambah atau mengubah sekitar 3 baris saja) program tersebut agar dapat digunakan untuk mengisi dan menampilkan matriks yang berukuran 4 baris x 5 kolom (3).
Kemudian dari program tersebut gantilah kalang yang digunakan untuk
menghitung matriks C sebagai penjumlahan antara A dan B menjadi perkalian
antara matriks A dan B.
menghitung matriks C sebagai penjumlahan antara A dan B menjadi perkalian
antara matriks A dan B.
SCRIPT :
#include <iostream>
using namespace std;
int main()
{
int i,j,N = 3;
float A[5][5];
float B[5][5];
cout << "Masukkan Matrix A = \n";
for ( i=0; i<N; i++) {
for ( j=0; j<N; j++) {
cout << "A(" << i << "," << j << ") = ";
cin >> A[i][j];
}
}
cout << "Masukkan Matrix B = \n";
for ( i=0; i<N; i++) {
for ( j=0; j<N; j++) {
cout << "B(" << i << "," << j << ") = ";
cin >> B[i][j];
}
}
cout << "Matriks A = \n";
for ( i=0; i<N; i++) {
for ( j=0; j<N; j++) {
cout << "\t" << A[i][j];
}
cout << endl;
}
cout << "Matriks B = \n";
for ( i=0; i<N; i++) {
for ( j=0; j<N; j++) {
cout << "\t" << B[i][j];
}
cout << endl;
}
cout << "Penjumlahan Matrix = \n";
for (i=0; i<N; i++) {
for (j=0; j<N; j++) {
cout << "\t" << A[i][j]+B[i][j];
}
cout << endl;
}
cout << "Perkalian Matrix = \n";
for (i=0; i<N; i++) {
for (j=0; j<N; j++) {
cout << "\t" << A[i][j]*B[i][j];
}
cout << endl;
}
}
3. OPERASI PADA STRING : KUTAK-KATIK NAMA
SCRIPT :
#include <stdio.h>
#include <iostream.h>
#include <string.h>
void main ()
{
char nama [80], nama2[80], tulisan[80];
int panjang, posisi;
cout <<"Input nama = ";
gets (nama);
strcpy (tulisan, "Halo ");
cout << strcat(tulisan, nama)<<endl;
if (strcmp (nama, "Keyla") == 0){
cout << "Namamu Keyla kan" << endl;}
else {
cout << "Namamu bukan keyla"<<endl;}
panjang = strlen (nama);
cout << "panjang namamu " <<panjang<<endl;
posisi = strcspn (nama,"z");
if (posisi<panjang){
cout <<"Huruf z pada posisi " <<posisi<<endl;}
else {
cout <<"Tidak ada huruf z nya"<<endl;}
strcpy (nama2,nama);
cout << strupr (nama2) <<endl;
cout << strlwr (nama2) <<endl;
cout << strrev (nama2) <<endl;
cout << strset (nama2,'x') <<endl;
}
Jalankan program di atas dan jelaskan kegunaan dari fungsi berikut ini: strlen(), strcpy(), strcat(), strcmp(),strlen(), strcspn(), strupr(), strlwr(), strrev(), dan strset()
(5).
strlen()
|
= Bentuk format strlen(const char *s)
Fungsi menghitung panjang string s
| |
strcpy()
|
= Bentuk format strcpy(char *dest, const char *src)
Fungsi mengkopi string src ke dest
| |
strcat()
|
= Bentuk format strcat (char*dest, const char*src) Fungsi menambahkan kopian src ke bagian akhir dest
| |
strcmp()
|
= Bentuk format strcmp(const char*s1, const char*s2)
| |
Fungsi melakukan perbandingan s1 dengan s2
| ||
strcspn()
|
= Bentuk format strcspn (const char *s1, const char *s2)
| |
Fungsi menemukan bagian awal string s1 yang mengandung s2
| ||
strupr()
|
= Bentuk format strupr(const char *s)
Fungsi mengubah string menjadi huruf KAPITAL (uppercase)
| |
strlwr()
|
= Bentuk format strlwr(const char *s)
| |
Fungsi mengubah string menjadi huruf biasa/kecil (lowercase)
| ||
strrev()
|
= Bentuk format strrev(const char *s)
Fungsi membalik semua karakter string, jadi huruf terakhir menjadi awal
| |
strset()
|
= Bentuk format strset(const char *s, int ch)
| |
Fungsi menset semua karakter dalam s ke ch
| ||
Gantilah baris:
gets(nama); menjadi:
cin >> nama;
Apakah efeknya pada waktu program dijalankan? (6)
tidak memberikan efek saat program dijalankan, artinya keduanya memiliki fungsi yang sama. Perbedaannya gets hanya bisa digunakan untuk operasi string, tetapi cin dapat digunakan secara umum.
4. STRING SEBAGAI LARIK KARAKTER : CAESAR CHIPER
SCRIPT :
#include <stdio.h>
#include <iostream.h>
#include <string.h>
void main ()
{
char tulisan [100], terenkripsi[100];
int kunci, panjang, kode;
cout <<"Masukkan Tulisan = ";
cin >> tulisan;
cout <<"Masukkan nilai kunci = ";
cin >> kunci;
panjang = strlen(tulisan);
strcpy (terenkripsi,tulisan);
for (int i=0; i<panjang; i++){
kode = int (tulisan[i])+kunci;
if (kode < 32)
kode = kode + 95;
if (kode > 126)
kode = kode - 95;
terenkripsi[i] = char(kode);
}
cout <<"Terenkripsi = "<<terenkripsi<<endl;
}
Menjalankan program tersebut, masukkan sebuah tulisan dan juga kunci untuk mengenkripsi (bil bulat positif atau negatif). Sifat operasinya adalah dapat-balik (reversible). Untuk mendekripsi gunakan nilai lawan dari kunci tersebut.
Bagaimana bentuk terenkripsi dari “Teknik Fisika” dengan kunci 10 (7)?
Bentuk terenkripsi dari “Teknik Fisika ” dengan kunci 10 adalah ~ouxsu*ps}suk Apa tulisan asli dari pesan berikut ini serta berapa nilai kunci yang dipakai untuk mengenkripsi tulisan aslinya (8)? tulisan asli dari Ru|qzq#0!u}# w#q}q~0rqxq$q0S tidak dapat saya temukan!
Hilangkan baris strcpy(... di atas, apa yang terjadi (9)?
strcpy(terenkripsi,tulisan); dihilangkan maka saat program dijalankan muncul baris Teknik Fisika setelah baris Terenkripsi = ~ouxsu*ps}suk jika inputnya Teknik Fisika.
1. FUNGSI UNTUK MEMOTONG - MOTONG PROGRAM
Menjalankan program, lalu ubah dan tambahkan perhitungan standar deviasi.
SCRIPT :
#include <iostream.h>
#include <math.h>
int N;
float jumlah, rerata, peny, stdrdev, data[100];
void Masukkan_Data()
{
cout <<"Banyaknya nilai = ";
cin >> N;
for (int i=0; i<N; i++){
cout <<"Nilai ke-" << (i+1) << "=";
cin >> data[i];
}}
void Hitung_Rerata(){
jumlah = 0;
for (int i=0; i<N; i++){
jumlah = jumlah+data[i];
}
rerata = jumlah/N;
}
void Hitung_Standar_Deviasi(){
peny = 0;
for (int i=0; i<N; i++){
peny += (data[i] - rerata)*(data[i] - rerata);
}
stdrdev = sqrt(peny/(N-1));
}
void Tampilkan_Hasil (){
cout << "Jumlah = " <<jumlah<<endl;
cout << "Rerata = " <<rerata<<endl;
cout << "Standar Deviasi = " <<stdrdev<<endl;
}
main()
{
Masukkan_Data();
Hitung_Rerata ();
Tampilkan_Hasil();
}
2. FUNGSI UNTUK MENGISI DAN MENAMPILKAN MATRIKS
Memodifikasi program untuk dapat mengisi dan menampilkan matriks B dengan ukuran yang sama, serta matriks C yang merupakan penjumlahan antara A dan B.
SCRIPT :
#include <iostream.h>
int N=2;
float A[5][5], B[5][5], C[5][5];
void MengisiMatriksA (float A[5][5])
{
for (int i=0; i<N; i++){
for (int j=0; j<N; j++){
cout <<"elemen" <<i<< "," <<j<< "=";
cin >> A[i][j];
}}}
void MengisiMatriksB (float B[5][5])
{
for (int i=0; i<N; i++){
for (int j=0; j<N; j++){
cout <<"elemen" <<i<< "," <<j<< "=";
cin >> B[i][j];
}}}
void MenjumlahMatriks (float C[5][5])
{
for (int i=0; i<N; i++){
for (int j=0; j<N; j++){
C[i][j] = A[i][j] + B[i][j];
}}}
void MenampilkanMatriksA (float A[5][5])
{
for (int i=0; i<N; i++){
for (int j=0; j<N; j++){
cout <<"\t" <<A[i][j];
}
cout << endl;
}}
void MenampilkanMatriksB (float B[5][5])
{
for (int i=0; i<N; i++){
for (int j=0; j<N; j++){
cout <<"\t" <<B[i][j];
}
cout << endl;
}}
void MenampilkanMatriksC (float C[5][5])
{
for (int i=0; i<N; i++){
for (int j=0; j<N; j++){
cout <<"\t" <<C[i][j];
}
cout << endl;
}}
void main ()
{
cout <<"Masukkan elemen maatriks A\n";
MengisiMatriksA(A);
cout <<"Masukkan elemen maatriks B\n";
MengisiMatriksB(B);
cout <<"Matriks A = \n";
MenampilkanMatriksA(A);
cout <<"Matriks B = \n";
MenampilkanMatriksB(B);
cout <<"Jumlah kedua matriks adalah\n";
MenjumlahMatriks(C); //jk tdk ada hslnya 0 semua
MenampilkanMatriksC(C);
}
3. FUNGSI DENGAN NILAI KEMBALIAN (RETURN VALUE ) : BISECTION
Review kembali program bisection pada modul 5, modifikasi program tersebut dengan menggunakan fungsi, yaitu dengan menambahkan fungsi berikut sebelum main().
Double y(double x)
{
return ::*x-2*x-3;
}
Kemudian gantilah intruksi yang digunakan untuk menghitung nilai-nilai yL,yC,yU menjadi:
yL = y (xL);
yC = y(xC);
yU = y(xU);
jalankan dan periksa hasilnya. Apabila program tersebut digunakan untuk persamaan yang lain yaitu exp(x)-2*x-2=0, apakah yang harus diubah dalam program tersebut.
SCRIPT :
#include <iostream>
#include <iomanip.h>
#include <math.h>
double y(double x){
return exp (x)-2*x-2;
}
void main ()
{
int iterasi = 0;
double xL, xC, xU, yL, yC, yU;
cout << "Mencari akar persamaan x*x-2*x-3=0\n"
<<"dengan metode bisection\n"
<<"Masukkan tebakan awal bawah = ";
cin >> xL;
cout <<"Masukkan tebakan awal atas = ";
cin >> xU;
cout <<"iterasi xL xC"
<< " xU yL"
<< " yC yU\n";
do {
xC = ( xL+xU)/2;
yL = y(xL);
yU = y(xU);
yC = y(xC);
cout << setw(5) << iterasi
<< setiosflags (ios::fixed)
<< setprecision (5)
<< setw (12) << xL
<< setw (12) << xC
<< setw (12) << xU
<< setw (12) << yL
<< setw (12) << yC
<< setw (12) << yU << endl;
if (yL*yC <= 0)
xU = xC;
else
xL = xC;
iterasi ++;
}
while ((iterasi <= 50) && (fabs(yC)>1e-5));
cout << "Jadi akarnya adalah " <<xC;
}
4. PROGRAM KONVERSI SUHU
SCRIPT :
#include <iostream.h>
float C_ke_F (float C);
void Mengisi_Input ();
void Mengkonversi ();
void Menampilkan_Hasil ();
main(){
Mengisi_Input();
Mengkonversi();
Menampilkan_Hasil();
}
float Suhu_C, Suhu_F;
float C_ke_F (float C){
float F;
F = 1.8*C+32.0;
return F;
}
void Mengisi_Input(){
cout <<"Isikan nilai suhu C = ";
cin >> Suhu_C;
}
void Mengkonversi(){
Suhu_F = C_ke_F(Suhu_C);
}
void Menampilkan_Hasil(){
cout <<"Temperatur " <<Suhu_C<<"C = "
<< Suhu_F <<"F"<<endl;
}
Jalankan dan lihat hasilnya, pindahkan keempat fungsi yang ada ke bagian bawah setelah akhir dari program utama main() lalu compilelah. Error apa yang muncul?
a. Function ‘Mengisi_Input’ should have a prototype
b. Function ‘Mengkonversi’ should have a prototype
c. Function ‘Menampilkan_Hasil’ should have a prototype
d. Type mismatch in redeclaration of ‘Mengisi_Input()’
e. Type mismatch in redeclaration of ‘Mengkonversi()’
f. Type mismatch in redeclaration of ‘Menampilkan_Hasil()’
Lalu tambahkan pendefinisian keempat fungsi tadi di atas main():
floatC_ke_F(float C);
voidMengisi_Input();
voidMengkonversi();
voidMenampilkan_Hasil();
Jalankan dan jelaskan apa guna definisi fungsi tersebut ?
Kegunaan definisi fungsi tersebut adalah memberikan header baru sesuai keinginan kita, dimana dalam header tersebut terdapat fungsi yang dapat dipanggil. Jadi kita dapat menambahkan suatu header jika suatu compiler tidak support terhadap fungsi yang kita gunakan.
Buatlah program untuk menghitung konversi suhu dari C ke F atau R dan sebaliknya. Program dimulai dengan menampilkan pilihan (menu) sebagai berikut:
Pilih konversi berikut:
Celcius ke Fahrenheit
A. Fahrenheit ke Celcius
B. Celcius ke Reamur
C. Reamur ke Celsius
D. Fahrenheit ke Reamur
E. Reamur ke Fahrenheit
X. Selesai
Setelah dipilih, lalu mengisikan suhu yang akan dikonversi, kemudian program melakukan perhitungan konversi sesuai dengan yang dipilih dan menampilkan hasilnya. Gunakan struktur pemrograman fungsi untuk masing-masing jenis konversi.
SCRIPT :
#include <iostream>
using namespace std;
char pilihan;
float input, output;
float C_ke_F(float C) {
float F;
F = 9.0/5.0*C + 32.0;
return F;
}
float F_ke_C(float F) {
float C;
C = 5.0/9.0*(F - 32.0);
return C;
}
float C_ke_R(float C) {
float R;
R = 4.0/5.0*C;
return R;
}
float R_ke_C(float R) {
float C;
C = 5.0/4.0*R;
return C;
}
float F_ke_R(float F) {
float R;
R = 4.0/9.0*(F - 32);
return R;
}
float R_ke_F(float R) {
float F;
F = 9.0/4.0*R + 32;
return F;
}
void Menampilkan_Menu() {
cout << "Pilih konversi berikut :" << endl
<< "A. Celsius ke Fahrenheit" << endl
<< "B. Fahrenheit ke Celsius" << endl
<< "C. Celsius ke Reamur" << endl
<< "D. Reamur ke Celsius"<< endl
<< "E. Fahrenheit ke Reamur" << endl
<< "F. Reamur ke Fahrenheit" << endl
<< "X. Selesai" << endl;
}
void Mengisi_Pilihan() {
cout << "Masukkan pilihan konversi = ";
cin >> pilihan;
}
void Mengisi_Input() {
cout << "Isikan nilai suhu = ";
cin >> input;
}
void Pilihan_Konversi() {
if ((pilihan == 'A')||(pilihan == 'a')) {
output = C_ke_F(input);
cout << "Temperatur " << input << " C = "
<< output << " F";
}
else if ((pilihan == 'B')||(pilihan == 'b')) {
output = F_ke_C(input);
cout << "Temperatur " << input << " F = "
<< output << " C";
}
else if ((pilihan == 'C')||(pilihan == 'c')) {
output = C_ke_R(input);
cout << "temperatur " << input << " C = "
<< output << " R";
}
else if ((pilihan == 'D')||(pilihan == 'd')) {
output = R_ke_C(input);
cout << "Temperatur " << input << " R = "
<< output << " C";
}
else if ((pilihan == 'E')||(pilihan == 'e')) {
output = F_ke_R(input);
cout << "Temperatur " << input << " F = "
<< output << " R";
}
else if ((pilihan == 'F')||(pilihan == 'f')) {
output = R_ke_F(input);
cout << "Temperatur " << input << " R = "
<< output << " F";
}
else if ((pilihan == 'X')||(pilihan == 'x')) {
cout << "Selesai";
}
else
cout << "Tidak ada dalam menu konversi";
}
main() {
Menampilkan_Menu();
Mengisi_Pilihan();
Mengisi_Input();
Pilihan_Konversi();
}
5. SEKUP VARIABEL DIDALAM FUNGSI
SCRIPT :
#include <iostream.h>
int x=10;
void SebuahFungsi()
{
cout <<"Di dalam program funsi, x="
<<x<<endl;
}
void main ()
{
cout << "Di dalam program utama, x="
<<x<<endl;
SebuahFungsi();
cout <<"Keluar ke program utama lagi, x="
<<x<<endl;
}
6. PELEWATAN PARAMETER PADA PEMANGGILAN FUNGSI
SCRIPT :
#include <iostream.h>
void Gandakan (int A, int *B, int &C)
{
A = A*2;
*B = *B*2;
C = C*2;
}
main ()
{
int x=1, y=10, z=6;
cout <<"Sebelum fungsi gandakan di panggil\n"
<<"x="<<x<<endl
<<"y="<<y<<endl
<<"z="<<z<<endl;
Gandakan (x, &y, z);
cout <<"Setelah fungsi gandakan di panggil\n"
<<"x="<<x<<endl
<<"y="<<y<<endl
<<"z="<<z<<endl;
}
Variabel manakah yang akan diubah nilainya ketika dijadikan parameter yang dilewatkan pada fungsi gandakan?
variabel Y dan Z, variabel X tidak termasuk karena pemanggilan variabel X tidak
diawal simbol ampersand (&) dan penulisan variabel dalam fungsi tidak diawali
symbol bintang (*)
diawal simbol ampersand (&) dan penulisan variabel dalam fungsi tidak diawali
symbol bintang (*)
7. OVERLOADING, PENDEFINISIAN FUNGSI DENGAN NAMA SAMA
SCRIPT :
#include <iostream.h>
float HitungLuas (float R)
{
return 3.14159*R*R;
}
float HitungLuas (float P, float L)
{
return P*L;
}
main ()
{
float Radius, Luas, Panjang, Lebar;
cout <<"Radius Lingkaran = ";
cin >> Radius;
cout <<"Panjang Segi Empat = ";
cin >> Panjang;
cout <<"Lebar Segi Empat = ";
cin >> Lebar;
Luas = HitungLuas (Radius);
cout <<"Luas Lingkaran = "<<Luas<<endl;
Luas = HitungLuas (Panjang, Lebar);
cout <<"Luas Segi Empat = "<<Luas<<endl;
}
Apakah yang menyebabkan terjadinya error pada program diatas ?
“Tidak terjadi error”
Mengapa tidak terjadi error ketika 2 buah fungsi menggunakan nama yang sama?
Tidak terjadi error, karena 2 fungsi yang digunakan meskipun menggunakan nama yang sama tetapi memiliki parameter yang berbeda
8. NILAI DEFAULT PADA PARAMETER FUNGSI
SCRIPT :
#include <iostream.h>
void Keterangan (int N=10)
{
if (N >= 8)
cout <<"Nilai "<<N<< " itu bagus\n";
else if (N < 5)
cout <<"Nilai "<<N<< " itu parah\n";
else
cout <<"Nilai "<<N<< " itu cukupan\n";
}
void main ()
{
int Nilai;
Keterangan ();
cout <<"Masukkan nilai = ";
cin >> Nilai;
Keterangan (Nilai);
}
Apakah yang menyebabkan terjadinya error pada program diatas?
Tidak terjadi error
Mengapa tidak terjadi error ketika fungsi diatas dipanggil tanpa mengisikan parameternya?
Tidak terjadi error ketika parameter fungsi tidak diisikan karena pada fungsi tersebut sudah ada nilai default, sehingga saat parameter fungsi tidak diisi maka
Program akan menggunakan nilai default itu.
9. FUNGSI PENUKARAN DUA BUAH VARIABEL
SCRIPT :
#include <iostream.h>
void Tukarkan (int Angka1, int Angka2)
{
int temp = Angka1;
Angka1 = Angka2;
Angka2 = temp;
}
main ()
{
int X = 1, Y = 99;
cout <<"Sebelum ditukarkan";
cout <<"\nX = "<<X<< ", Y = " <<Y;
Tukarkan (X, Y);
cout <<"\nSetelah ditukarkan";
cout <<"\nX = "<<Y<< ", Y = " <<X;
}
Mengapa nilai X dan Y tidak bertukaran pada program diatas, dan bagaimana cara memperbaikinya?
Pada pogram tersebut diatas baris :
cout << "\nX = " << X << ", Y = " << Y;
dirubah menjadi :
cout << "\nX = " << Y << ", Y = " << X;
Cobalah program sorting dibawah ini, dengan masih menggunakan fungsi tukarkan diatas.
SCRIPT :
#include <iostream>
using namespace std;
int Tukarkan(int Angka1, int Angka2) {
int temp = Angka1;
Angka1 = Angka2;
Angka2 = temp;
}
int Cetak(int D[])
{
for(int i=0; i< 6; i++)
cout << D[i] << " ";
cout << endl;
}
int main()
{
int Data[6] = {9, 3, 6, 20, 16, 5};
cout << "Sebelum disortir:\n";
Cetak(Data);
cout << "Proses sortir:\n";
for (int i=0;i<5;i++) {
for (int j=4;j>=i;j--) {
if(Data[j+1] < Data[j]) {
Tukarkan (Data [j], Data[j+i]);
Cetak(Data);
}
cout << "-------\n";
}
}
}
10. MENULIS KE FILE TEKS
SCRIPT :
#include <iostream.h>
#include <string.h>
#include <stdio.h>
main ()
{
char namafileoutput[] = "filesaya.txt";
char teks[80];
FILE *fout;
fout = fopen (namafileoutput, "w");
cout <<"Ketikkan teks yang akan ditulis "
<<"ke file, akhiri dengan END\n";
while (1){
gets (teks);
if (strcmp (teks,"END") == 0)
break;
strcat (teks,"\n");
fputs (teks, fout);
}
fclose (fout);
cout <<"Selesai"<<endl;
}
11. MEMBACA DARI FILE TEKS
SCRIPT :
#include <iostream.h>
#include <string.h>
#include <stdio.h>
void main ()
{
char namafileinput[] = "filesaya.txt";
char teks[80];
FILE *fin;
fin = fopen (namafileinput, "rt");
cout <<"Isi File " <<namafileinput<< endl;
while (1){
if (fgets (teks, 80, fin) == NULL){
break;
}
cout << teks;
}
fclose (fin);
cout <<"Selesai"<<endl;}
Comments
Post a Comment