STRUKTUR DATA MENGGUNAKAN C++ Windha Mega PD, S.Kom

advertisement
STRUKTUR DATA
MENGGUNAKAN C++
Windha Mega PD, S.Kom
DASAR PEMROGRAMAN C++
• Bahasa C++ adalah bahasa yang menggunakan kompiler untuk
translator dari kode program menjadi bahasa mesin.
• Bahasa C++ mempunyai bentuk umum program seperti
berikut:
// Nama program
// Komentar lain
#include<header>
main() {
deklarasi variabel;
deklarasi konstanta;
perintah-perintah;
}
Keterangan baris program:
• Baris yang diawali dengan double slash(//) merupakan baris
komentar dan tidak akan dieksekusi. Baris ini berguna untuk
memberi judul ,catatan, atau keterangan pada program.
• #include<header.h>
Program yang dibuat menggunakan file header yang berisi
prototype fungsi yang nantinya akan digunakan dalam program.
Baris ini digunakan untuk mengarahkan kompiler tentang file
header yang digunakan.
• main() { }
Baris ini merupakan awal dari eksekusi program dan merupakan
program utama yang harus dimiliki oleh program dalam bahasa
C++.
• Dalam program utama dapat berisi deklarasi variabel,konstanta,
serta perintah-perintah program. Setiap baris deklarasi maupun
perintah harus diakhiri tanda( ; ).
Operasi Input dan Output
PROSES
Scanf
Getch
Getche
cin
Printf
Puts
Putchar
cout
Fungsi Input
• Merupakan fungsi yang digunakan untu memasukkan berbagai jenis data
dari keyboard terformat dengan menggunakan format spesification.
• Contoh Fungsi Input: scanf, cin, getch
Fungsi Output
•
•
•
Merupakan fungsi yang digunakan untuk menampilkan berbagai jenis data yang dapat
diformat karena fungsi ini dapat menggunakan kode-kode format, yaitu karakterkarakter konversi.
Contoh fungsi output: printf, cout, puts, putchar.
Bentuk umum penulisan:
- printf (“string kontrol”, argumen1, argumen2, … );
string kontrol dapat berupa keterangan beserta penentu format
(%d, %f, %c, dan lain-lain)
- cout << argumen;
argumen adalah data yang akan ditampilkan. Dapat berupa
variabel, konstanta, maupung ungkapan.
Contoh dalam bahasa C++ menggunakan printf & scanf
#include <stdio.h>
#include <conio.h>
int main(){
int x;
/*Menampilkan teks untuk informasi*/
printf("Masukkan sebuah bilangan bulat : ");
/*Membaca nilai dari keyboard ke dalam var.x */
scanf("%d",&x);
/*Menampilkan nilai yang telah dimasukkan */
printf("Bilangan yang talah dimasukkan = %d",x);
getch();
}
Contoh dalam bahasa C++ menggunakan cin & cout
#include <iostream.h>
#include <conio.h>
int main(){
int x;
/*Menampilkan teks untuk informasi*/
cout<<"Masukkan sebuah bilangan bulat = ";
/*Membaca nilai dari keyboard ke dalam var.x */
cin>>x;
/*Menampilkan nilai yang telah dimasukkan */
cout<<"Bilangan yang talah dimasukkan "<<x;
getch();
}
PERINTAH PERCABANGAN
•
-
Instruksi if
Perintah if digunakan untuk mewujudkan percabangan bersyarat.
If tunggal
Syntax: if (syarat) pernyataan;
If dengan else
pernyataan if-else dipakai untuk memilih alternatif eksekusi dari dua blok pernyataan.
Berikut format percabangan if-else :
if (syarat)
pernyataan;
else
-
pernyataan;
Instruksi if dengan pilihan if lainnya
syntax:
if (syarat1)
pernyataan1;
else if (syarat2)
pernyataan2;
else pernyataan_n; }
-
Instruksi if di dalam instruksi if
Syntax:
if (syarat1)
pernyataan1;
if (syarat2)
pernyataan2;
Contoh1:
#include <stdio.h>
#include <conio.h>
main() {
int nilai;
printf (“Masukkan nilai anda {0 s/d 100} = “);
scanf (“%d”, &nilai);
if (nilai >= 80)
printf (“Nilai anda adalah = A \n”);
else if (nilai >= 60)
printf (“Nilai anda adalah = B \n”);
else if (nilai >= 40)
printf (“Nilai anda adalah = C \n”);
else if (nilai >= 20)
printf (“Nilai anda adalah = D \n”);
else printf (“Nilai anda adalah =E \n”);
getch();
}
Contoh2:
#include <stdio.h>
#include <conio.h>
main() {
int huruf;
printf (“”Masukkan nilai huruf = “);
scanf (“%c”, &huruf);
if (huruf == ‘A’ || huruf == ‘a’)
printf (“Nilai angka adalah = 4 \n”);
else if (huruf == ‘B’ || huruf == ‘b’)
printf (“Nilai angka adalah = 3 \n”);
else if (huruf == ‘C’ || huruf == ‘c’)
printf (“Nilai angka adalah = 2 \n”);
else if (huruf == ‘D’ || huruf == ‘d’)
printf (“Nilai angka adalah = 1 \n”);
else if (huruf == ‘E’ || huruf == ‘e’)
printf (“Nilai angka adalah = 0 \n”);
else
printf (“Nilai anda tidak dikenal!!”);
getch();
}
Latihan:
• Buat program untuk menentukan masukan
dari user apakah berupa huruf vokal atau
konsonan!
TUGAS!!!
• Hitung nilai mahasiswa dengan ketentuan penilaian
30% dari nilai praktikum, 30% mid, 40% uas.
Kemudian konversi menjadi nilai huruf! jika
nilai >= 80
-> A
80 > nilai >= 60 -> B
60 > nilai >= 40 -> C
40 > nilai >= 20 -> D
nilai < 20
-> E
•
Instruksi switch
Perintah ini digunakan untuk mempersingkat if bertumpuk, untuk menangani pengendalian
program yang melibatkan banyak alternatif. Bentuk umum instruksi switch:
switch (ekspresi) {
case konstanta1:
block of instructions 1
break;
case konstanta2:
block of instructions 2
break;
.
.
.
default:
default block of instructions
}
Contoh:
#include <iostream.h>
#include <conio.h>
#include <stdio>
main ()
{ int nomor;
cout<<"Masukkan pilihan angka untuk menentukan nama hari";
puts ("1 = Senin");
puts ("2 = Selasa");
puts ("3 = Rabu");
puts ("4 = Kamis");
puts ("5 = Jumat");
puts ("6 = Sabtu");
puts ("7 = Minggu");
cout<<"Masukkan pilihan anda (1 s/d 7) = ";
cin>>nomor;
switch (nomor) {
case 1 : cout<<"hari Senin";
break;
case 2 : cout<<"hari Selasa";
break;
case 3 : cout<<"hari Rabu";
break;
case 4 : cout<<"hari Kamis";
break;
case 5 : cout<<"hari Jumat";
break;
case 6 : cout<<"hari Sabtu";
break;
case 7 : cout<<"hari Minggu";
break;
default: puts ("Yang anda masukkan salah");
}
getch();
return 0;
}
Tugas
• Buat program menggunakan instruksi switch, untuk
menentukan nilai ganjil atau genap!
• Buat program untuk menghitung luas dan keliling
sebuah bangun sesuai dengan huruf yang dipilih. Jika
pilihan =
- A = segitiga
- B = persegi
- C = persegi panjang
PERULANGAN
• while
Pernyataan while digunakan untuk mengulang
eksekusi dari suatu blok pernyataan dimana jumlah
pengulangannya tergantung syarat perulangan
tersebut. Perulangan akan dilaksanakan apabila nilai
syarat adalah true. Jika syarat salah maka perulangan
tidak akan dilaksanakan. Contohnya:
•
//output : jumlah bilangan 1 s/d 9 = 45 dengan while-loop
#include<iostream.h>
main()
{
int jml=0, i=0;
while (++i < 10)
jml += i;
cout<<"jumlah = "<<jml;
return 0; }
•
Penjelasan program:
Perintah perulangan akan dilaksanakan jika nilai i kurang dari 10 dimana i
akan diincrement lebih dahulu sebelum dibandingkan dengan 10.
• do-while
Dalam struktur ini perintah dikerjakan minimal satu
kali, karena langkah pertama mengerjakan perintah
kemudian diikuti pengujian kondisi. Contohnya:
//output : jumlah bilangan 1 s/d 9 = 45 dengan do-while-loop
#include<iostream.h>
main()
{
int jml=0, i=0;
do
jml += i;
while (++i < 10)
cout<<"jumlah = "<<jml;
return 0; }
•
for
Struktur ini digunakan untuk perulangan yang
jumlah perulangannya sudah diketahui. Struktur for
terdapat bagian sbb:
–
–
–
inisialisasi : memberi nilai awal pada variabel kendali
Kondisi : menyatakan kondisi berhenti perulangan
perubahan : menyatakan perubahan nilai variabel
kendali
• Contoh program:
• //output : jumlah bilangan 1 s/d 9 = 45 dengan do-while-loop
#include<iostream.h>
main() {
int jml=0, i;
for (i=0;i<10;i++)
jml += i;
cout<<"jumlah = "<<jml;
return 0; }
• Perulangan tersarang (Nested Looping)
Dalam suatu pernyataan for boleh ada pernyataan for yang lain. Pernyataan
for yang dalam akan dieksekusi terlebih dahulu dari pernyataan for yang
luar. Berikut contohnya:
#include<iostream.h>
#include<conio.h>
main()
{
int x,y;
for ( y=1;y<=4;y++)
{
for ( x=1;x<=3;x++)
cout<<"y"<<y<<"x"<<x<<"\t";
cout<<"\n";}
getch();
return 0; }
Tugas
• Buat program perulangan untuk menghitung hasil
penjumlahan bilangan antara 900 sampai 950
menggunakan while, do while & for!
• Buat program yang outputnya spt dibawah:
masukkan bilangan ganjil = 5 <di enter>
1111
3333
5555
Array (Larik)
Array adalah sebuah struktur data yang terdiri
atas banyak variabel dengan tipe data sama,
dimana masing-masing elemen variabel
mempunyai nilai indeks. Setiap elemen array
mampu untuk menyimpan satu jenis data (yaitu:
variabel).
Deklarasi Larik (array) dimensi 1
Ditulis diantara tanda “[ ]” dikuti dengan tipe
data dari nama larik.
Type Nama_array [subscript]
Contoh = float nilai [10];
-> Menyimpan 10 buah data bertipe float.
Penomoran array secara default dimulai dari
subscript 0 , bukan 1.
Pemberian Nilai Awal
contoh :
int angka [10]= {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
Pendefinisian array bertipe angka yang terdiri 10
elemen bertipe data int .
Atau
int angka [ ]= {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
Secara otomatis kompiler akan menghitungnya
sendiri
#include <iostream.h>
#include <conio.h>
main(){
int a[3]={10,11,12}, b[]={44,45,46},i;
float x[2];
cout<<"a[1]"<< a[1]<<" a[2]"<< a[2]<<endl;
cout<<"b[0]"<< b[0]<<" b[1]"<< b[1]<<" b[2]"<< b[2]<<endl;
cout<<"\n";
cout<<"Masukkan angka 1 = ";
cin>>x[0];
cout<<"Masukkan angka 2 = ";
cin>>x[1];
cout<<"x[0]= "<<x[0]<<endl;
cout<<"x[1]= "<<x[1]<<endl;
getch();
}
#include <iostream.h>
#include <conio.h>
main(){
int a[5];
int i;
for (i=1;i<=5;i++)
{cout<<"Data ke "<<i<<" = ";
cin>>a[i]; }
for (i=1;i<=5;i++){
cout<<a[i];}
getch();
}
Saatnya bersenang-senang!!!
• Jumlahkan total angka dalam array!
• Cari nilai maksimal dari beberapa masukan
angka!
• Cari pangkat dari 1 smp 10
1 pangkatny 1
2 pangkatny 4 .. Dst smp 10
Array 2 Dimensi
Tipe data array dua dimensi biasa digunakan untuk
menyimpan,mengolah maupun menampilkan
suatu data dalam bentuk tabel maupun matriks.
Pendeklarasian Array 2 dimensi
type nama_array [x][y]
[x] = jumlah baris
[y] = jumlah kolom
Contoh:
int nilai [3][4];
Pada pendefinisian di atas: 3 menyatakan jumlah baris, 4 menyatakan jumlah
kolom
Contoh Program 1:
#include <iostream.h>
#include <conio.h>
#define Kolom 5
#define Baris 3
int array [Baris][Kolom];
int n,m;
int main () {
for (n=0;n<Baris;n++)
{for (m=0;m<Kolom;m++)
{array[n][m]=(n+1)*(m+1);
cout<<array[n][m]<<"\t";}
cout<<"\n";}
getch();
}
Contoh Program 2:
#include <iostream.h>
#include <conio.h>
main(){
int b,k;
int matrik[5][5];
for (b=0;b<5;b++){
for (k=0;k<5;k++){
if ((b==k)
matrik[b][k]=1;
else
matrik[b][k]=0;
cout<<matrik[b][k]<<" ";
}
cout<<"\n";
cout<<"\n";
}
getch();
}
latihan
• Penjumlahan matrik
C[b][k] = A[b][k]+B[b][k]
• Cari nilai maksimal dalam array 2 dimensi
Array 3 Dimensi
Pendeklarasian array 3 dimensi tidak jauh beda dengan array 2
dimensi.
Contoh:
int tiga_dimensi[3][4][2]
Artinya:
Array dengan nama tiga_dimensi dengan tipe int, yang
mempunyai 3x4x2=24 elemen array.
3 -> jumlah tinggi,
4 -> jumlah panjang,
2 -> lebar
SORTING
Adalah proses pengurutan/penyusunan
sekumpulan objek ke dalam urutan tertentu.
Metode pengurutan:
- Selection sort
- Insertion sort
- Bubble sort
- Merge sort
1. Metode selection sort
a. Pengurutan naik (Ascending)
Langkah-langkah:
- Mencari data terkecil dari data pertama sampai
terakhir, kemudian ditukar posisinya dengan
data pertama. Dan begitu seterusnya hingga
semua data terurut naik.
Contoh:
# include <stdio.h>
# include <iostream.h>
# include <conio.h>
main()
{int i,j,u,n;
int Imax,temp,data[10];
cout<<"Masukkan jumlah data=";
cin>>n;
for (i=0;i<n;i++)
{cout<<"Masukkan data ke "<<i<<"=";cin>>data[i]; }
for(i=0;i<n;i++){
Imax=0;
for(j=0;j<n;j++){
if(data[j]>data[Imax]){
Imax=j;}
temp=data[j];
data[j]=data[Imax];
data[Imax]=temp;
}
}
cout<<"Setelah diurutkan =\n";
for(i=0;i<n;i++)
printf("%d\n", data[i]);
getch();
}
Searching
Dalam bab ini, kita akan membahas metode
pencarian data dalam suatu array.
Metode pencarian yang akan digunakan adalah:
- Sequential search (pencarian beruntun)
- Binary search
Contoh Sequential Search:
#include<iostream.h>
#include<conio.h>
main(){
int i,n,nilai,tempat, benar;
int data[100];
cout<<"Masukkan banyaknya data =";
cin>>n;
for(i=0;i<n;i++)
{cout<<"Masukkan data ke" <<i<<" = ";
cin>>data[i];}
cout<<"Masukkan data yang dicari=";
cin>>nilai;
benar=0;
for(i=0;i<n;i++)
{if (data[i]==nilai)
{benar=1;
tempat=i;}
else i=i+1;
}
if (benar==0)
cout<<"Data yang anda cari tidak ditemukan\n";
else{
cout<<"Data yang anda cari ditemukan\n";
cout<<"Berada diposisi"<<tempat+1;}
getch();
}
Latihan
• Lakukan pencarian terhadap array 2 dimensi
STRUKTUR (STRUCT)
Struktur merupakan kumpulan elemen data
yang digabungkan menjadi satu kesatuan
data. Masing-masing elemen data tersebut
dinamakan field atau elemen struktur.
Field tersebut bisa memiliki tipe data yang
ataupun berbeda, meskipun field tersebut
dalam satu kesatuan tetapi tetap bisa siakses
secara individu.
Deklarasi struktur
struct nama_struktur // nama struktur, kata struct harus ada
{
type1 element1;
type2 element2;
anggota / elemen dari struktur
type3 element3;
.
.
} nama_object; // identifier yang digunakan untuk pemanggilan struktur
------------atau---------------
struct nama_struktur
{
type1 element1;
type2 element2;
type3 element3;
.
.
};
struct nama_struktur nama_obj
Contoh:
Array of Struct
Latihan
Ketentuan Soal
• Setiap karyawan yang mempunyai anak
mendapat tunjangan sesuai dengan jumlah
anak.
• Besarnya tunjangan yang didapat tiap anak
adalah Rp. 100.000
• Maksimal jumlah anak yang mendapat
tunjangan adalah 3 anak
POINTER
• Pointer/variabel penunjuk yang berfungsi
menunjuk alamat memori variabel lain.
• Ada 2 operator pointer:
- Operator & ->menghasilkan alamat dari
operandnya.
- Operator * -> menghasilkan nilai dari
operandnya.
#include<conio.h>
#include<iostream.h>
main(){
int v1,v2,*pointer;
char h1,*ptr;
v1=10;
pointer=&v1;
cout<<"Isi v1 = "<<v1;
cout<<"\nisi *pointer awal = "<<*pointer;
cout<<"\nalamat v1 = "<<pointer;
v2=*pointer;
pointer = &v2;
cout<<"\nIsi v2 = "<<v2;
cout<<"\nisi *pointer = "<<*pointer;
cout<<"\nalamat v2 = "<<pointer;
cout<<"\nalamat v2 = "<<&v2;
h1='A';
ptr=&h1;
cout<<"\nisi ptr = "<<*ptr;
getch();
}
#include<conio.h>
#include<iostream.h>
main(){
int v1,v2,*pointerV1,*pointerV2;
v1=10;
pointerV1=&v1;
v2=20;
pointerV2 = &v2;
cout<<"\nalamat pointerv1 = "<<pointerV1;
cout<<"\nalamat pointerv2 = "<<pointerV2;
cout<<"\nJumlah pointer = "<<(*pointerV1)+(*pointerV2);
cout<<"\nSelisih pointer = "<<(*pointerV1)-(*pointerV2);
cout<<"\npenjumlahan alamat = "<<pointerV1+1;
cout<<"\nUkuran tiap alamat ="<<sizeof(v1);
getch();
}
ARRAY DAN POINTER
// more pointers
#include <iostream.h>
#include <conio.h>
int main ()
{
char array[5];
char * p; //deklarasi pointer yg menunjuk var bertipe char
p = array; // p menunjuk array pada index 0
*p = 'a'; // mengisi var yang ditunjuk pointer dengan huruf a
p++; *p = 'b';
//mengisi index 1 dengan huruf b
p = &array[2]; *p = 'c'; //mengisi index 2 dengan huruf c
p = array + 3; *p = 'd';
//mengisi index 3 dengan huruf d
p = array; *(p+4) = 'e';
//mengisi index 4 dengan huruf e
for (int n=0; n<5; n++)
cout << array[n] << ", ";
getch();
}
PEMBERIAN NILAI ARRAY DGN POINTER
//Contoh Program7
#include <iostream.h>
#include <conio.h>
void main(){
int x[5], *p, k;
clrscr();
p = x;
x[0] = 5;
x[1] = x[0];
// x[1] diisi dengan x[0] sehingga x[1] = 5
x[2] = *p + 2;
// x[2] diisi dengan x[0] + 2 sehingga x[2] = 7
x[3] = *(p+1)-3; // x[3] diisi dengan x[1] - 3 sehingga x[3] = 2
//x[4] = *(p + 2);
// x[4] diisi dengan x[2] sehingga x[4] = 7
x[4]=*(p+2)-1;
for(k=0; k<5; k++)
cout<<"\nx["<<k<<"] = "<< x[k];
getch(); }
Tugas
• Buat input program di atas secara dinamis!
Contoh struct dengan pointer
#include <iostream.h>
#include <conio.h>
struct orang
{ char nama[30],alamat[30];
short umur; };
main(){
struct orang *saya ;
int i,n;
cout<<"Jumlah data : ";cin>>n;
for(i=1;i<=n;i++)
{ cout<<"Nama : ";cin>>saya->nama;
cout<<"Umur : ";cin>>saya->umur;
cout<<endl; }
for(i=1;i<=n;i++)
{ cout<<"Data ke ["<<i<<"] "<<"bernama "
<<saya->nama<<" dan berumur "
<<saya->umur<<" tahun";
cout<<endl; }
getch(); }
Download