modul-i

15
1 STTIKOM INSAN UNGGUL CILEGON KULIAH ALGORITMA DAN STRUKTUR DATA (BAHASA C++) Disusun oleh : Subandi Wahyudi Ssi Pertemuan : I Substansi : Mahasiswa akan mengerti dan memahami jenis tipe data yang dipakai dalam pemrograman serta pemakaiannya Setiap bahasa pemrograman menggunakan tipe data dasar (basic data type). Pada Bahasa C++ secara umum terdapat 2 tipe data besar yaitu : Tipe data sederhana dan Struktur Data (tipe data bentukan). Untuk tipe data dasar terdiri Character, Integer, Floating Point Single ,precision, dan floating point double precision dan secara terinci sbb: I. Tipe Data Dasar Jika untuk menghasilkan atau output dari type data di atas pada format printf atau class stdio.h adalah sbb: Dan karakter khusus yang digunakan oleh printf

Upload: eddy-purwoko

Post on 12-Jun-2015

378 views

Category:

Documents


3 download

DESCRIPTION

Struktur Data C++Perkuliahan Teknik Informatika ( Semester III )

TRANSCRIPT

Page 1: modul-I

1

STTIKOM INSAN UNGGUL CILEGONKULIAH ALGORITMA DAN STRUKTUR DATA

(BAHASA C++)

Disusun oleh : Subandi Wahyudi SsiPertemuan : ISubstansi : Mahasiswa akan mengerti dan memahami jenis tipe

data yang dipakai dalam pemrograman sertapemakaiannya

Setiap bahasa pemrograman menggunakan tipe data dasar (basic data type). Pada BahasaC++ secara umum terdapat 2 tipe data besar yaitu : Tipe data sederhana dan Struktur Data(tipe data bentukan). Untuk tipe data dasar terdiri Character, Integer, Floating Point Single,precision, dan floating point double precision dan secara terinci sbb:I. Tipe Data Dasar

Jika untuk menghasilkan atau output dari type data di atas pada format printf atau classstdio.h adalah sbb:

Dan karakter khusus yang digunakan oleh printf

Page 2: modul-I

2

Operator yang digunakan

Selain itu ada karakter lain yaitu :

Sedangkan proses input data atau parameter atau scanf (stdio.h) adalah sbb:

Sedangkan ouput yang menggunakan cout atau class iostream adalah sbb:

Page 3: modul-I

3

Serta perintah lain di iostream.h

Berikut ini contoh latihan yang anda bisa buat :

Latihan 1/* input & output */#include <stdio.h>#include <conio.h>void main(){ int a = 10; float b = 7.50; clrscr(); printf( Bilangan A = %d \n , a); printf( Bilangan B = %f \n , b); printf( Bilangan B = %0.2f \n , b); getch();}

Latihan 2

#include <iostream.h>

void main(){char nama[20] = "Subandi";cout<<"Hallo, saya bernama "<<nama<<" saya sedang belajarC++"<<endl;}

Latihan 3

/* input & output */#include <iostream.h>#include <iomanip.h>#include <conio.h>void main (){ int A=10, B=20; clrscr(); cout << hex << setiosflags(ios::uppercase); cout << setiosflags(ios::showbase); cout << A << endl; cout << oct; cout << B << endl; getch();}

Latihan 4

Page 4: modul-I

4

/* input & output */#include <stdio.h>#include <conio.h>void main(){ int a, b, c = 0; clrscr(); printf( Masukkan Nilai A : ); scanf( %d , &a); printf( Masukkan Nilai B : ); scanf( %d , &b); c = a + b; printf( Hasil Penjumlahan = %d , c); getch();}

Latihan 5

/* input & output */#include <iostream.h>#include <conio.h>void main(){ int a, b, c = 0; clrscr(); cout << Masukkan Nilai A : ; cin >> a; cout << Masukkan Nilai B : ; cin >> b; c = a + b; cout << Hasil Penjumlahan = << c << endl; getch();}

Latihan 6

#include <stdio.h>#include <conio.h>void main(){

clrscr();char nama[20];int umur;

printf( Hallo Selamat Belajar C++\n );

printf( Masukkan nama : );

scanf( %s ,nama);

printf( Masukkan umur: );

scanf( %d ,&umur);printf( Anda bernama : %s dan berumur %d ,nama,umur);if(umur < 20){

for(int i=0;i<umur;i++) printf( %d\n ,i);printf( Anda masih muda\n );

} elseif(umur > 50){

printf( Anda sudah berumur!\n );} else printf( Lainnya\n );getch();

}

Page 5: modul-I

5

Latihan 7

#include <iostream.h>#include <iomanip.h>

void main(){

int p, l, Luas;cout << Panjang = ; cin >> p; cout << Lebar = ; cin >> l; Luas = p * l;cout << Luas Segi Empat = << Luas << endl;

}

Latihan 8

#include <iostream.h>void main(){

int i ;for (i=1;i<=10;i++){

cout << nilai I adalah : << i <<endl; }}

Latihan 9

#include <iostream.h>void main(){

int i;int bil;int max;int min;max = 0;min =1000;for (i=1;i<=10;i++){ cout << masukkan sebuah bilangan (0..1000) : ; cin >> bil; if (max < bil) { max = bil; } If (min > bil ) { min = bil; }}

cout << \n Dari 10 bilangan yang dimasukkan \n ; cout << Bilangan << max << adalah bilangan terbesar \n ; cout << Bilangan << min << adalah bilangan terkecil ;}

Tugas I

1. Buatlah program untuk menghitung nilai rata-rata dari seorang siswa denganketentuan sebagai berikut:nama siswa, nilai Tugas I, nilai Tugas II, nilai Tugas III diinput.

Page 6: modul-I

6

nilai rata-rata merupakan hasil dari nilai Tugas I, II dan III dibagi dengan 3.tampilan yang diinginkan adalah sebagai berikut:

Layar Masukan

Program Hitung Nilai Rata-RataNama Siswa : . . . <diinput>Nilai Tugas I : . . . <diinput>Nilai Tugas II : . . . <diinput>Nilai Tugas III : . . . <diinput>

Layar Keluaran

Siswa yang bernama . . . <tampil data>Memperoleh nilai rata-rata ... <hasil proses>dari hasil tugas yang diikutinya.

Page 7: modul-I

7

II. Tipe Struktur Data

Pengantar Struktur Data- Bagaimana cara mengatasi masalah implementasi data dengan

komputer?o Pemahaman masalah secara menyeluruh dan persiapan datao Keputusan operasi-operasi yang dilakukan terhadap datao Penyimpanan data-data pada memori sehingga tersimpan danterstruktur secara logis, operasinya efisieno Pengambilan keputusan terhadap bahasa pemrograman mana yang paling cocokuntuk jenis data yang ada

Perbedaan antara Tipe Data, Obyek Data dan Struktur Data- Tipe data adalah jenis data yang ditangani oleh suatu bahasa

pemrograman pada komputer.- Tiap-tiap bahasa pemrograman memiliki tipe data yang memungkinkan:

o Deklarasi terhadap variabel tipe data tersebuto Menyediakan kumpulan operasi yang mungkin terhadap variabel bertipe datatersebuto Contoh tipe data di C? Java? Pascal? .NET?

- Obyek Data adalah kumpulan elemen yang mungkin untuk suatu tipe data tertentu.o Mis: integer mengacu pada obyek data -32768 s/d 32767, byte 0 s/d 255, stringadalah kumpulan karakter maks 255 huruf

- Struktur Data adalah cara penyimpanan dan pengorganisasian data-data padamemori komputer maupun file pada media penyimpanan secara efektif sehinggadapat digunakan secara efisien, termasuk operasi- operasi di dalamnya.

- Di dalam struktur data kita berhubungan dengan 2 aktivitas:o Mendeskripsikan kumpulan obyek data yang sah sesuai dengan tipe data yang adao Menunjukkan mekanisme kerja operasi-operasinyaContoh: integer (-32768 s/d 32767) dan jenis operasi yangdiperbolehkan adalah +, -, *, /, mod, ceil, floor, <, >, != dsb.o Struktur data = obyek data + [operasi manipulasi]

- Dengan pemilihan struktur data yang baik, maka problem yang kompleks dapat diselesaikan dengan algoritma yang dapat digunakan secaraefisien, operasi-operasi penting dapat dieksekusi dengan sumber daya yang lebihkecil, memori lebih kecil, dan waktu eksekusi yang lebih cepat.

- Ciri algoritma yang baik menurut Donald E.Knuth:o Input: ada minimal 0 input atau lebiho Ouput: ada minimal 1 output atau lebiho Definite: ada kejelasan apa yang dilakukano Efective: langkah yang dikerjakan harus efektifo Terminate: langkah harus dapat berhenti (stop) secara jelas

- Tidak semua struktur data baik dan sesuai. Contoh untuk problem data bank,problem pengurutan dan pencarian data berbeda.

ADT (Abstract Data Type) atau Tipe Data Bentukan- Bahasa pemrograman bisa memiliki tipe data:

o Built-in : sudah tersedia oleh bahasa pemrograman tersebut° Tidak berorientasi pada persoalan yang dihadapi.

o UDT : User Defined Type, dibuat oleh pemrogram.° Mendekati penyelesaian persoalan yang dihadapi° Contoh: record pada Pascal, struct pada C, class pada Java

o ADT : Abstract Data Type° memperluas konsep UDT dengan menambahkan pengkapsulan

atau enkapsulasi, berisi sifat-sifat dan operasi- operasi yang bisadilakukan terhadap kelas tersebut.

° Contoh: class pada Java

Page 8: modul-I

8

- Bahasa C memiliki tipe data numerik dan karakter (seperti int, float, char dan lain-lain). Disamping itu juga memiliki tipe data enumerasi dan structure.Bagaimana jika kita ingin membuat tipe data baru?

- Untuk pembuatan tipe data baru digunakan keyword typedef- Bentuk umum:

typedef <tipe_data_lama> <ama_tipe_data_baru>Contoh:

#include <stdio.h>#include <conio.h>typedef int angka;typedef float pecahan;typedef char huruf;void main(){

clrscr(); angka umur;pecahan pecah; huruf h;huruf nama[10];printf("masukkan umur anda : ");scanf("%d",&umur);printf("Umur anda adalah %d",umur);printf("\nmasukkan bilangan pecahan : ");scanf("%f",&pecah);printf("Bilangan pecahan %f",pecah);printf("\nmasukkan huruf : ");h=getche();printf("\nHuruf anda %c",h);printf("\nmasukkan nama : ");scanf("%s",nama);printf("Nama anda %s",nama);getch();

}

Hasil :

Struct- Struct adalah tipe data bentukan yang berisi kumpulan variabel-variabel yang

bernaung dalam satu nama yang sama dan memiliki kaitan satu sama lain.- Berbeda dengan array hanya berupa kumpulan variabel yang bertipe data sama,

struct bisa memiliki variabel-variabel yang bertipe data sama atau berbeda, bahkanbisa menyimpan variabel yang bertipe data array atau struct itu sendiri.

- Variabel-variabel yang menjadi anggota struct disebut dengan elemen struct.- Bentuk umum:

typedef struct{tipe_data <nama_var>;tipe_data <nama_var>;....

Page 9: modul-I

9

}

Ilustrasi StructStruct bisa diumpamakan sebagai sebuah obyek, misalnya: obyek MahasiswaStruct Mahasiswa memiliki property atau atribut atau variabel yang melekat padanya:- NIM yaitu karakter sejumlah 8- Nama yaitu karakter- IPK yaitu bilangan pecahan

Struct tidak memiliki operasi (method) atau function.Struct dapat digunakan dengan cara membuat variabel yang bertipe struct tersebut.Misalnya :variabel anton bertipe struct Mahasiswa variabel erick bertipe struct MahasiswaDengan demikian variabel anton dan erick memiliki NIM, Nama, dan IPK masing- masing

Pendeklarasian dan penggunaan Struct (1) (menggunakan typedef)

typedef struct Mahasiswa{

char NIM[8];char nama[50];

float ipk;};//untuk menggunakan struct Mahasiswa dengan membuat variabel mhs dan mhs2Mahasiswa mhs,mhs2;

//untuk menggunakan struct Mahasiswa dengan membuat variabel array m;Mahasiswa m[100];

Pendeklarasian dan penggunaan Struct (2) (tanpa menggunakan typedef)struct {char NIM[8]; char nama[50]; float ipk;} mhs;

Berarti kita sudah mempunyai variabel mhs yang bertipe data struct seperti diatas.

Cara penggunaan struct dan pengaksesan elemen-elemennya

- Penggunaan/pemakaian tipe data struct dilakukan dengan membuat suatu variabelyang bertipe data struct tersebut

- Pengaksesan elemen struct dilakukan secara individual denganmenyebutkan nama variabel struct diikuti dengan operator titik (.)

- Misalnya dengan struct mahasiswa seperti contoh di atas, kita akan akses elemen-elemennya seperti contoh berikut:

Contoh 1

#include <stdio.h>#include <conio.h>

//Pendeklarasian tipe data baru struct Mahasiswatypedef struct Mahasiswa{

char NIM[9];char nama[30]; float ipk;

};

void main()

Page 10: modul-I

10

{

//Buat variabel mhs bertipe data Mahasiswa

Mahasiswa mhs;clrscr();printf("NIM = ");scanf("%s",mhs.NIM);printf("Nama = ");scanf("%s",mhs.nama);printf("IPK = ");scanf("%f",&mhs.ipk);

printf("Data Anda : \n");printf("NIM : %s\n",mhs.NIM);printf("Nama : %s\n",mhs.nama);printf("IPK : %f\n",mhs.ipk);getch();

}

Hasilnya:

Contoh 2

#include <stdio.h>#include <conio.h>#define phi 3.14

//langsung dianggap variabel 'lingkaran'struct{

float jari2;float keliling;float luas;

} lingkaran;

//fungsi void untuk menghitung luas ingkaranvoid luasLingkaran(){

//langsung menggunakan luas lingkaran aslilingkaran.luas = lingkaran.jari2 * lingkaran.jari2 * phi;printf("\nLuas lingkaran = %f",lingkaran.luas);

}

//fungsi yang mengembalikan nilai float untuk menghitung keliling lingkaran floatkelLingkaran(float j){

return 2*phi*j;}

Page 11: modul-I

11

int main(){

clrscr();printf("Jari-jari = ");scanf("%f",&lingkaran.jari2);//panggil fungsi luasLingkaranluasLingkaran();//panggil fungsi keliling, nilai kembaliannya dikirim ke keliling lingkaran aslilingkaran.keliling = kelLingkaran(lingkaran.jari2);//tampilkan keliling lingkaran asliprintf("\nKeliling lingkaran = %f",lingkaran.keliling);getch();

}

Hasilnya:

Struct yang berisi struct lain

Contoh 3:

#include <stdio.h>#include <conio.h>

typedef struct Date{ int dd;

int mm; int yyyy;

};

typedef struct Time{ int h;

int m; int s;

};

typedef struct Login{ int ID;

Date tglLogin;Time waktuLogin;

};

int main(){

Login user1;printf("USER 1\n");printf("ID : ");scanf("%d",&user1.ID);printf("Tanggal Login\n");printf("Hari : ");scanf("%d",&user1.tglLogin.dd);

Page 12: modul-I

12

printf("Bulan : ");scanf("%d",&user1.tglLogin.mm);printf("Tahun : ");scanf("%d",&user1.tglLogin.yyyy);printf("Waktu Login\n");printf("Jam : ");scanf("%d",&user1.waktuLogin.h);printf("Menit : ");scanf("%d",&user1.waktuLogin.m);printf("Detik : ");scanf("%d",&user1.waktuLogin.s);printf("Terimakasih\n");printf("Data Anda :\n"); printf("ID : %d\n",user1.ID);

printf("Date : %d - %d -%d\n ", user1.tglLogin.dd,user1.tglLogin.mm,user1.tglLogin.yyyy);printf("ID :%d:%d:%d\n ",user1.waktuLogin.h,user1.waktuLogin.m,user1.waktuLogin.s);

getch();}

Hasil:

Array of Struct

Contoh 4 :

#include <stdio.h>#include <conio.h>

typedef struct Date{ int dd;

int mm; int yyyy;

};

typedef struct Time{ int h;

int m; int s;

};

typedef struct Login{ int ID;

Date tglLogin;Time waktuLogin;

};

int main(){

Page 13: modul-I

13

Login user[3];//3 user

for(int i=0;i<3;i++){

printf("\nUSER ke-%d\n",i+1);printf("ID : ");scanf("%d",&user[i].ID);printf("Tanggal Login\n");printf("Hari : ");scanf("%d",&user[i].tglLogin.dd);printf("Bulan : ");scanf("%d",&user[i].tglLogin.mm);printf("Tahun : ");scanf("%d",&user[i].tglLogin.yyyy);printf("Waktu Login\n");printf("Jam : ");scanf("%d",&user[i].waktuLogin.h);printf("Menit : ");scanf("%d",&user[i].waktuLogin.m);printf("Detik : ");scanf("%d",&user[i].waktuLogin.s);printf("Terimakasih Atas Pengisiannya\n");printf("\nData User ke-%d:\n",i+1);printf("Login ID : %d\n",user[i].ID);

printf("Login Date : %d - %d -%d\n", user[i].tglLogin.dd, user[i].tglLogin.mm,user[i].tglLogin.yyyy);printf("Login Time :%d:%d:%d\n", user[i].waktuLogin.h, user[i].waktuLogin.m,user[i].waktuLogin.s);

}getch();

}Hasil

Contoh penggunaan class pada C++:

#include <iostream.h>class Dog{private:

int age;I nt weight;public:

Dog(); //Constructor

Page 14: modul-I

14

~Dog(); //Destructorvoid setAge(int age);int getAge();void setWeight(int weight);int getWeight();void speak();

};

Dog::Dog(){

age = 0;weight = 0;cout << "Dog Constructor Called" << endl;

}

Dog::~Dog(){

cout << "Dog Destructor Called" << endl;}

void Dog::setAge(int age){

this->age = age;}

int Dog::getAge(){

return age;}

void Dog::setWeight(int weight){

this->weight = weight;}

int Dog::getWeight(){

return weight;}

void Dog::speak(){

cout << "BARK!!" << endl;}

int main(){

Dog fido;Dog rover;cout << "Rover is " << rover.getAge() << " years old." << endl;cout << "He weighs " << rover.getWeight() << " lbs." << endl;cout << endl;cout << "Updating Rover's Age and Weight" << endl;rover.setAge(1);rover.setWeight(10);cout << "Rover is " << rover.getAge() << " years old." << endl;cout << "He weighs " << rover.getWeight() << " lbs." << endl; cout << endl;cout << "Fido is " << fido.getAge() << " years old." << endl;cout << "He weighs " << fido.getWeight() << " lbs." << endl;

Page 15: modul-I

15

cout << "Setting Fido to be the same as Rover" << endl;fido = rover;cout << "Fido is " << fido.getAge() << " years old." << endl;cout << "He weighs " << fido.getWeight() << " lbs." << endl;rover.speak();fido.speak();return 0;

}

Hasil:

Tugas II1. anda ubah dari contoh 1 sampai contoh 4 dengan menggunakan class iostream.h

bukan stdio.h (penggunaan cout and cin serta yang lain)

Tugas III 1. Buatlah program menu yang berisi data-data KTP penduduk yang

disimpan dalam array struct 1 dimensi dan dapat dilakukan penambahan data,pencarian data, penampilan data dan penghapusan data.