• Tidak ada hasil yang ditemukan

LAPORAN PRAKTIKUM 1 STRUCT ARRAY DAN POI

N/A
N/A
Protected

Academic year: 2018

Membagikan "LAPORAN PRAKTIKUM 1 STRUCT ARRAY DAN POI"

Copied!
27
0
0

Teks penuh

(1)

LAPORAN PRAKTIKUM 1

STRUCT, ARRAY, DAN POINTER

Disusun untuk Memenuhi Matakuliah Praktikum Struktur Data Yang Dibimbing oleh Bapak Aji Prasetya Wibawa

Disusun Oleh:

Muhammad Nu’man Hakim (150535601253) Ni’matu Rohmah (150535602460)

S1 TI 2015 OFF B

UNIVERSITAS NEGERI MALANG

FAKULTAS TEKNIK

JURUSAN TEKNIK ELEKTRO

PRODI S1 TEKNIK INFORMATIKA

(2)

Modul 1

“Struct, Array, dan Pointer”

1. Tujuan

1.1 Mahasiswa memahami apakah yang dimaksud dengan struktur data. 1.2 Mahasiswa memahami apakah yang dimaksud dengan algoritma. 1.3 Mengingat kembali array, struktur, pointer dalam bahasa C/C++.

2. Dasar Teori

2.1 Pengenalan Struktur Data

Struktur data adalah sebuah skema organisasi, seperti struktur dan array, yang diterapkan pada data sehingga data dapat diinterprestasikan dan sehingga operasioperasi spesifik dapat dilaksanakan pada data tersebut

2.2 Pengenalan Algoritma

Algoritma adalah barisan langkah-langkah perhitungan dasar yang mengubah masukan (dari beberapa fungsi matematika) menjadi keluaran. Contoh : 

Perkalian

Input : integer positif a , b

Output : a X b

Algoritma perkalian :

Contoh kasus : a = 365, b = 24

Metode 1 : 365 * 24 = 365 + (365 * 23) = 730 + (365 *

22) …..

= 8760 + (365 * 0) = 8760

Metode 2 : 3 6 5 2 4 1 4 6 0 7 3 0 8 7 6 0

Manakah algoritma yang lebih baik ? 2.3 Array

(3)

int A[5]; artinya variabel A adalah kumpulan data sebanyak 5 bilangan bertipe integer. Operasi terhadap elemen di array dilakukan dengan pengaksesan langsung. Nilai di masing-masing posisi elemen dapat diambil dan nilai dapat disimpan tanpa melewati posisi-posisi lain.

Terdapat dua tipe operasi, yaitu:

1. Operasi terhadap satu elemen/posisi dari array 2. Operasi terhadap array sebagai keseluruhan

Dua operasi paling dasar terhadap satu elemen/posisi adalah 1. Penyimpanan nilai elemen ke posisi tertentu di array 2. Pengambilan nilai elemen dari posisi tertentu di array 2.3.1 Penyimpanan dan Pengambilan Nilai

Biasanya bahasa pemrograman menyediakan sintaks tertentu untuk penyimpanan dan pengambilan nilai elemen pada posisi tertentu di array.

Contoh:

A[10] = 78, berarti penyimpanan nilai 78 ke posisi ke-10 dari array A C = A[10], berarti pengambilan nilai elemen posisi ke-10 dari array A

2.3.2 Keunggulan dan Kelemahan Array Keunggulan array adalah sebagai berikut:

1. Array sangat cocok untuk pengaksesan acak. Sembarang elemen di array dapat diacu secara langsung tanpa melalui elemen-elemen lain.

2. Jika berada di suatu lokasi elemen, maka sangat mudah menelusuri ke elemen-elemen tetangga, baik elemen-elemen pendahulu atau elemen-elemen penerus

3. Jika elemen-elemen array adalah nilai-nilai independen dan seluruhnya harus terjaga, maka penggunaan penyimpanannya sangat efisien

Kelemahan array. Array mempunyai fleksibilitas rendah, karena array mempunyai batasansebagai berikut:

1. Array harus bertipe homogen. Kita tidak dapat mempunyai array dimana satu elemen adalah karakter, elemen lain bilangan, dan elemen lain adalah tipe-tipe lain

2. Kebanyakan bahasa pemrograman mengimplementasikan array statik yang sulit diubah ukurannya di waktu eksekusi. Bila penambahan dan pengurangan terjadi terus-menerus, maka representasi statis

Tidak efisien dalam penggunaan memori Menyiakan banyak waktu komputasi Pada suatu aplikasi, representasi statis tidak dimungkinkan

2.4 Pointer

Misalnya kita ingin membuat beberapa penunjuk ke blok penyimpan yang berisi integer. Deklarasi pada C adalah:

(4)

Tanda asterik (*) yang berada sebelum nama variable IntegerPointer menandakan ‘pointer pada suatu int’. Jadi deklarasi diatas berarti ‘definisikan sebuah tipe yang terdiri dari pointer bertipe integer yang bernama IntegerPointer’. Apabila didepannya ditambahkan typedef sebagai berikut

Typedef int *IntegerPointer;

Berarti IntegerPointer merupakan suatu tipe pointer berbentuk integer. Apabila akan mendeklarasikan dua variable A dan B sebagai penunjuk ke bilangan integer :

IntegerPointer A, B;

Berarti kompiler C akan berisi nilai dari variable A dan B yang ‘menunjuk ke integer’. Untuk membuat beberapa penunjuk ke beberapa penyimpan integer yang kosong dan untuk membuat A dan B menunjuk tempat tersebut, digunakan prosedur dinamis untuk alokasi penyimpan yang disebut malloc

A = (IntegerPointer *) malloc (sizeof(int));

B = (int *) malloc (sizeof(int));

Misalnya kita akan menyimpan integer 5 pada blok penyimpan yang ditunjuk pointer pada variable A. Untuk menuimpan angka 5 pada blok penyimpan integer itu melalui pointer A, digunakan pernyataan :

*A = 5; 5

(5)

2.5 Struktur

Struktur adalah koleksi dari variabel yang dinyatakan dengan sebuah nama, dengan sifat setiap variabel dapat memiliki tipe yang berlainan. Struktur biasa dipakai untuk mengelompokkan beberapa informasi yang berkaitan menjadi sebuah satu kesatuan. Contoh sebuah struktur adalah informasi data tanggal, yang berisi: tanggal, bulan dan tahun.

2.5.1 Mendeklarasikan Struktur

Contoh pendefinisian tipe struktur adalah sebagai berikut:

Struct data_tanggal { int tanggal;

int bulan; int tahun; };

Yang mendefinisikan tipe struktur bernama data_tanggal, yang terdiri dari tiga buah elemen (field) berupa : tanggal, bulan dan tahun. Pendefnisian dan pendeklarasian struktur dapat juga ditulis sebagai berikut:

struct data_tanggal { int tanggal;

Int bulan; int

tahun; } tgl_lahir ;

Bentuk umum dalam mendefinisikan dan mendeklarasikan struktur adalah sebagai berikut

struct nama_tipe_struktur { tipe field1;

tipe field2; ...

...

(6)

}variabel_struktur1, ... , variabel_strukturM;

Masing-masing tipe dari elemen struktur dapat berlainan. Adapun variabel_struktur1 sampai dengan variabel_strukturM menyatakan bahwa variabel struktur yang dideklarasikan bisa lebih dari satu. Jika ada lebih dari satu variabel, antara variabel struktur dipisahkan dengan tanda koma.

2.5.2 Mengakses Elemen Struktur

Elemen dari struktur dapat diakses dengan menggunakan bentuk

variabel_struktur.nama_field

Antara variabel_struktur dan nama_field dipisahkan dengan operator titik (disebut operator anggota struktur). Contoh berikut merupakan instruksi untuk mengisikan data pada field tanggal

tgl_lahir.tanggal = 30;

3. Latihan

3.1

Latihan 1

Penggunaan Array pada Bilangan Fibonacci

(7)

3.1.2 Tampilan

3.1.3 Algoritma

1. mulai

2. Definisi maksimal MAX = 10 3. Integer i

4. Bilangan fibo[1] = 1 dan fibo[2] = 1

5. Untuk i = 3 , i <=MAX dan i bertambah , fibo[i] = fibo [i-2] + fibo [i-1] 6. Tampilkan “%d bilangan Fibonaci pertama adalah :” \n, MAX

7. Untuk i = 1 , i < MAX dan i bertambah , output fibo[i] 8. Tampilkan %d, fibo[i]

9.

Selesai

3.1.4 Penjelasan

(8)

menggunakan variabel i. Header yang digunakan adalah <stdio.h> untuk perintah untuk perintah printf.

Pendefinisian max data yang digunakan adalah 10, menggunakan perulangan for. Dalam program ini digunkan header <stdio.h> untuk perintah printf. Program tidak dapat diexecute apabila menggunakan syntax “void”, maka diganti dengan “int”.

3.2

Latihan 2

Program mengubah isi variabel melalui pointer

3.2.1 Syntax

3.2.2 Tampilan

3.2.3 Algoritma

(9)

2. Variabel integer y, x =87 3. Variabel integer *px 4. Nilai px = alamat x(&x) 5. Nilai y = *px

6. Output alamat x = &x (alamat x) 7. Output isi px = px yaitu &x (alamat x) 8. Output isi x = x yaitu 87

9. Output nilai yang di tunjuk px = *px(nilai yang ada di alamat x) yaitu 87 10. Output nilai y = y yaitu *px(nilai yang ada di alamat x)

11. Selesai

3.2.4 Penjelasan

Program ini digunakan untuk menampilakan nilai dari varibel yang didenifisikan berupa x dan y berupa alamat x, isi px, isi x, nilai yang ditunjuk oleh px, dan nilai y. Header yang digunakan adalah <stdio.h> untuk perintah printf dengan tipe data integer. Ini menunjukkan bagaimana cara pointer bekerja, *px (variabel integer pointer x).

Tanda asterik (*) di baca sebagai nilai yang ada dalam alamat pointer, sedangkan tanda & dibaca sebagai alamat dari pointer. Diketahui bahwa nilai px=&x, nilai y = *px. Tidak terdapat kesalahan sintax pada program ini.

3.3

Latihan 3

Program mengakses dan mengubah isi suatu variabel pointer

(10)

3.3.2 Tampilan

3.3.3 Algoritma

1.

mulai

2. Variabel d = 54,5f, *pd

3. Tampilkan “isi d mula – mula = %g\n”,d (sebelum increment) 4. Diketahui pd = &d(alamat d)

5. Penambahan(increment) 10 pada *pd(nilai yang ditunjuk pada alamat pd yaitu alamat d) *pd += 10

6. Tampilkan “isi d sekarang = %g\n”,d (setelah incement) 7. Selesai

3.3.4 Penjelasan

Program ini digunakan untuk menampilakan isi d mula-mula dan sekarang setelah dilakukan increment. Header yang digunakan adalah <stdio.h> untuk perintah printf. Tipe data Float dan juga menggunakan pointer.

(11)

memiliki nilai. nilai penanmbahan sebesar 10. Tampilannya adalah menampilakan isi d mula-mula dan sekarang. Sebelum increment dan sesudah increment,.

3.4

Latihan 4

Penggunaan pointer untuk bilangan fibonacci

3.4.1 Syntax

3.4.2 Tampilan

3.4.3 Algoritma

1. Start

2. Definisi maksimal MAX = 10 3. Integer *fibo

4. Integer i

(12)

(fibo +i) = (*(fibo + i -2)+*(fibo +i-1))

8. Tampilkan “ %d Bilangan fibonaci pertama adalah : \n”, MAX 9. Untuk i = 1 , i < MAX dan i bertambah , (fibo+i))

10. Output %d - *(fibo+i) 11. Stop

3.4.4 Penjelasan

Program yang digunakan untuk menampilkan bilangan fibonanci 10 pertama, deklarasi max data adalah 10 data. Header yang digunakan adalah <stdio.h> yang merupakan header program utama untuk perintah printf dan <stdlib.h> yang merupakan header untuk prototipe alokasi memori. Menggunakan perulangan for dan pointer.

Malloc (Mx*Sizeof(int)) merupakan alokasi memory dinamis, Perulangan digunakan untuk mengisi memori ke tiga dan seterusnya serta perulangan untuk menampilkan isi memori.

Tipe data yang digunakan adalah int (integer ) yang merupakan bilangan bulat dengan menggunakan variabel i.

3.5

Latihan 5

Penggunaan struktur pada konversi koordinat polar ke koordinat

catersian

3.5.1 Syntax

(13)

3.5.3 Algoritma

1. Begin

2. Input koordinat r polar = r

3. Input kordinat alpha polar = alpha

4. Tampilkan “masukkan nilai r untuk koordinat polar :” 5. Proses kl.x = pl.r * cos (pl.alpha)

6. Tampilkan “masukkan nilai alpha untuk koordinat polar :” 7. Proses kl.y = pl.r * sin (pl.alpha)

8. Tampilkan “nilai koordinat kartesian untuk koordinat polar r =” 9. Tampilkan output nilai

x = kl.x y = kl.y 10. End

3.5.4 Penjelasan

Program ini digunakan untuk menentukan nilai koordinaat kartesian untuk koordinat polar dengan memasukkan nulai r dan alpha dengan berdasarkan rumus kl.x = pl.r * cos (pl.alpha) dan kl.y = pl.r * sin (pl.alpha).

Header yang digunakan adlah <stdio.h> untuk perintah printf dan <math.h>untuk oporasi matematika trigonometri dalam program.

Tipe data yang digunakan adalah struct yaitu struct polar dengan element double r dan double alpha, dan struct kartesian dengan element double x dan double y. Dan tipe data yang digunakan lainnya adalah double karena mengandung bilangan desimal.

3.6

Latihan 6

Program struktur dalam array

(14)
(15)

3.6.3 Algoritma

1. Mulai

2. Input NRP, nama, dan nilai tes

3. Jika ada data lagi tekan Y, lalu input data sesuai format 4. Jika tidak tekan T

5. Output tampilkan data yang telah diinputkan dalambentuk tabel 6. Selesai

3.6.4 Penjelasan

Program ini digunakan untuk menampilkan data berupa NRP, nama, nilai test dan apabila data yang dimasukkan lebih dari satu maka akan terus melanjutkan seperti yang diinginkan namun apabila tidak otomatis program akan berhenti.

Tipedata yang digunakan adalah <stdio.h> dan <string.h>, tipe data struct, char dan double dan perulangan while dan menyatakan suatu kondisi dengan if else serta digunakan pula array.

4. Tugas Rumah

4.1

Tugas Rumah 1

Aritmatika Poligon

(16)
(17)
(18)
(19)
(20)
(21)
(22)

4.1.2 Tampilan

4.1.3 Algoritma

1. Start

2. Masukkan pangkat terbesar polinom 1 3. Masukkan pangkat terbesar polinom 2 4. Masukkan nilai koefisien dari polinom 1 5. Masukkan nilai koefisien dari polinom 2 6. Pilih menu operasi aritmatikan polinom

a. Penjumlahan b. Pengurangan c. Perkalian d. Turunan 7. Tampilkan hasil

8. Ulangi? Y : Kembali ke langkah 6 9. Stop

4.1.4

Penjelasan

Program ini menggunakan header <conio.h>, <stdio.h>, dan <iostream>, tipe data integer dan perulangan for. Program ini berguna untuk melakukan operasi hitung aritmatika polinom, pertama inputkan pangkat terbesar dari bilangan polinom 1 dan 2. Lalu memasukkan nilai koefisien untuk setiap pangkat.

(23)

akan menjalankan operasi aritmatika sesuai permintaan. Jika telah selesai menjalankan perintah, program akan menanyakan apakah pengguna ingin melakukan perhitungan atau tidak. Jika iya, program akan kembali pada pilihan menu. Jika tidak maka program akan berhenti.

4.2

Tugas Rumah 2

Bilangan Kompleks

4.2.1 Syntax

#include<stdio.h> #include<windows.h> #include <math.h> struct { int a,b,c,d; }bil; void kali() {

printf("\tPERKALIAN BILANGAN KOMPLEKS \t");

int angka1 = (bil.a * bil.c) - (bil.b * bil.d);

int angka2 = (bil.a *bil.d) + (bil.b * bil.c);

printf(

"Hasil perkalian dari (%d + %di) * (%d + %di) = (%d.%d - %d.%d)+(%d. %d + %d.%d)i adalah %d +

%di",bil.a,bil.b,bil.c,bil.d,bil.a,bil.c,bil.b,bil.d,bil.a,bil.d,bil.b,b il.c,angka1, angka2);

}

void bagi()

{

printf("\tPEMBAGIAN BILANGAN KOMPLEKS \t");

int angka1 = ((bil.a*bil.c)+(bil.b*bil.d));

int angka2 = (bil.a*bil.a)+(bil.b*bil.b);

int angka3 = ((bil.b*bil.c)-(bil.a*bil.d));

int angka4 = (bil.c*bil.c)+(bil.d*bil.d);

(24)

}

void jumlah()

{

printf("\tPENJUMLAHAN BILANGAN KOMPLEKS \t");

int angka1 = (bil.a + bil.c);

int angka2 = (bil.b + bil.d);

printf(

"Hasil penjumlahan dari (%d + %di) + (%d + %di) = (%d + %d)+(%d + %d)i adalah %d +

%di",bil.a,bil.b,bil.c,bil.d,bil.a,bil.c,bil.b,bil.d,angka1,angka2);

}

void kurang()

{

printf("\tPENGURANGAN BILANGAN KOMPLEKS \t");

int angka1 = (bil.a - bil.c);

int angka2 = (bil.b - bil.d);

printf(

"Hasil pengurangan dari (%d + %di) - (%d + %di) = (%d - %d)+(%d - %d)i adalah %d +

%di",bil.a,bil.b,bil.c,bil.d,bil.a,bil.c,bil.b,bil.d,angka1, angka2); } int main() { char hasil; do { char menu; system("cls");

printf("Masukkan bilangan A : ");

scanf("%d",&bil.a);

printf("Masukkan bilangan B : ");

scanf("%d",&bil.b);

printf("Masukkan bilangan C : ");

scanf("%d",&bil.c);

printf("Masukkan bilangan D : ");

scanf("%d",&bil.d);

(25)

printf("\n1. Perkalian \n2. Pembagian \n3. Penjumlahan \n4. Pengurangan\n");

printf("\nPilih Menu : ");

scanf("%s",&menu); if(menu=='1') kali(); else if(menu=='2') bagi(); else if(menu=='3') jumlah(); else if(menu=='4') kurang(); else

printf("Error, try again!!");

printf("\n Coba Lagi ? [y/t] ");

scanf("%s",&hasil);

}

while ((hasil=='Y' || hasil=='y'));

printf("\n\n THX. EXIT!");

}

4.2.2 Tampilan

4.2.3 Algoritma

1. Start

2. Masukkan nilai bilangan kompleks pertama a. Masukkan bilangan real

(26)

a. Masukkan bilangan real b. Masukkan bilangan imajiner 4. Pilih a. Perkalian

b. Pembagian c. penjumlahan d. Pengurangan 5. Tampilkan hasil Penjumlahan 6. Tampilkan hasil Pengurangan 7. Tampilkan hasil Perkalian 8. Tampilkan hasil Pembagian

4.2.4 Penjelasan

Program ini menggunakan header <stdio.h> <windows.h> dan<math.h>. Tipe data integer dan character, dan perulangan while.

Program kalkulator bilangan kompleks ini beguna untuk melakukan operasi hitung antara dua buah bilangan kompleks. Program ini hanya menggunakan 4 buah variabel, 2 untuk bilangan real dan 2 untuk bilangan imajiner. Setelah memasukkan bilangan kompleks pertama dan kedua maka selanjutnya program akan memilih operasi apa yang diinginkan yaitu menjalankan 4 operasi hitung yang dipilih yaitu penjumlahan,

pengurangan, perkalian, dan pembagian.

5. Kesimpulan

Struktur Data adalah sebuah skema organisasi yang diterapkan pada data sehingga data dapat diinterprestasikan dan sehingga operasi-operasi spesifik dapat dilaksanakan pada data tersebut

Apabila kita membuat program dengan data yang sudah kita ketahui batasnya, maka kita bisa menggunakan array (tipe data statis), namun apabila data kita belum kita ketahui batasnya, kita bisa menggunakan pointer (tipe data dinamis)

Untuk sekumpulan data dengan tipe data yang berlainan, namun merupakan satu-kesatuan, kita dapat menggunakan struktur untuk merepresentasikannya.

Perbedaan Mingw dan CodeBlock yaitu :

Perbedaan keduanya terletak pada User interface dan systemnya.

(27)

CodeBlocks bisa digunakan bersama dengan banyak kompilator, Walau sebenarnya lebih untuk C++, masih ada terdapat juga kompilator untuk bahasa pemrograman selain C++, contohnya GNU Fortran, Digital Mars D, dan GNU GDC. Dengan sistem "plugin"-nya CodeBlocks, kegunaan untuk bahasa-bahasa lainnya juga bisa turut dipasang.

Mingw lebih efisien dan tidak banyak memekan ruang memory, berbeda dengan codeblock yang lebih berat untuk diinstal.

6. Daftar Pustaka

Referensi

Dokumen terkait

Pengaruh Strategi Diferensiasi dan Positioning Produk Terhadap Motivasi Nasabah ( Studi Kasus Pada Produk Tabungan Investa Cendekia di BSM KCP Banyumanik2. Semarang )

Reducing levels of ROS allows ”uchu to interrupt the pathogenesis of ”PH by reducing tissue injury, DN“ damage, neoplastic transformation, and activation of growth factors that lead

 Secara Nasional produksi padi Provinsi Sulawesi Tengah tahun 2015 mempunyai kontribusi sebesar 1,35 persen dari total produksi padi nasional sebesar 75,36 juta ton

[r]

/MODEL=LINEAR LOGARITHMIC INVERSE POWER EXPONENTIAL /PRINT ANOVA.

Berdasarkan hasil Penelitian maka didapatkan data sebagai berikut: Analisis Hasil validasi atau penilaian oleh keenam validator (internal dan eksternal) terhadap satuan

Apakah terdapat wakaf benda bergerak di Masjid Baitul Muttaqien Bawen?... Apakah ada wakaf berjangka di Masjid Baitul Muttaqien

Menurut Muslich (2009: 44) menyebutkan prinsip dasar konstruktivisme dalam pembelajaran harus dipegang guru adalah sebagai berikut: (1) proses pembelajaran lebih