MODUL ARSIKOM POINTER DAN ARRAY. Disusun oleh : Afif Setyo Nugroho ( ) Agus Setyawan ( ) Maulana Akhsan ( )

dokumen-dokumen yang mirip
TEKNIK ELEKTRO ITB. Modul Praktikum Arsitektur Sistem Komputer I EL3110

ALGORITMA DAN STRUKTUR DATA POINTER DAN FUNCTION

E STRUKTUR DATA & E PRAKTIK STRUKTUR DATA. Pointer & Function. Alfa Faridh Suni, S.T., M.T. PTIK

Tabel Informasi. Hal di atas dapat dilakukan dengan menambah dan mengambil atribut identifier yang digunakan pada program, melalui tabel informasi.

PERTEMUAN VI POINTER 6.1 Tujuan Praktikum 6.2 Teori Penunjang Pointer

MODUL. Pointer. Modul Praktikum C++ Dasar Pemrograman Komputer JURUSAN TEKNIK ELEKTRO FAKULTAS TEKNIK

PERTEMUAN V PEMROGRAMAN TERSTRUKTUR DENGAN VISUAL C Setiap bahasa C mempunyai satu fungsi dengan nama main (program utama).

Algoritma Pemrograman & Struktur Data

MODUL PRAKTIKUM BAHASA PEMROGRAMAN TESTRUKTUR MODUL 8 POINTER

1 MODUL 8 POINTER MODUL 8 POINTER

Pertemuan 2 ARRAY DIMENSI 1 & 2

PENGERTIAN VARIABEL, KONSTANTA DAN TIPE DATA

Pengenalan Bahasa C week 1

Turbo C adalah tool yang dipakai untuk membuat code program dalam bahasa C ataupun C++. Berikut adalah jendela utama Turbo C

Tipe Data dan Operator

Sejarah C. Dirancang oleh Denis M. Ritchie tahun 1972 di Bell Labs.

Pendahuluan Pemrograman Mikrokontroler

Modul Praktikum 4 Pemograman Berorientasi Objek

ARRAY DIMENSI 1 & 2. Array dapat didefinisikan sebagai suatu himpunan hingga elemen yang terurut dan homogen.

VARIABEL & TIPE DATA PEMROGRAMAN C++

PEMROGRAMAN JAVA. Petunjuk Penulisan Program Token Aturan Penamaan Identifier Lingkungan /Scope dari variabel Tipe Data (i) Yoannita

VI. FUNGSI. Fungsi Main ( ) Fungsi a ( ) Fungsi b ( ) Fungsi c ( ) Fungsi c1 ( ) Fungsi c2 ( ) Fungsi c3 ( ) Bentuk umumnya :

MODUL V POINTER DAN STRING

Cara pertama adalah pada saat deklarasi variabel ditambahkan ke- yword const sebelum nama tipe data seperti

Pertemuan 4 ELEMEN-ELEMEN BAHASA PEMROGRAMAN

KARAKTER DAN STRING, ARRAY, STRUCT DAN REVIEW PADA BAHASA C

Algoritme dan Pemrograman

MODUL 1 STANDAR INPUT DAN OUTPUT

Modul Praktikum Algoritma dan Struktur Data

Modul Praktikum Bahasa Pemrograman 1

TIPE DATA, VARIABLE, dan OPERATOR DELPHI

Larik/ Array int a1, a2, a3, a4, a5;

Algoritme dan Pemrograman

Konsep Dasar Pemrograman Dan Pengenalan C++

Bab 9 Pointer. 9.1 Pendeklarasian pointer

VARIABEL, TIPE DATA DAN EKSPRESI Bab 2

Pertemuan 2 ARRAY DIMENSI 1 & 2

BAB 4 PENGENALAN BAHASA C

Pemrograman Dasar C. Minggu 9

Struktur Data adalah : suatu koleksi atau kelompok data yang dapat dikarakteristikan oleh organisasi serta operasi yang didefinisikan terhadapnya.

Modul 1 Dasar Dasar Bahasa Pemrograman C

Tipe Data dan Variabel

Struktur Data adalah : suatu koleksi atau kelompok data yang dapat dikarakteristikan oleh organisasi serta operasi yang didefinisikan terhadapnya.

Bab 2. Dasar-Dasar Pemrograman C

LARIK (ARRAY) Latar Belakang Array

Kurikulum Qt. Chapter 5 Pointer dan References. Agenda. Apa itu Pointer? Memory Komputer. Mengambil Alamat Memory dari Variabel

Praktikum Dasar Pemrograman 2014 MODUL 3: Array dan String

Kuliah III - Dasar Pemrograman

1. Mempelajari konsep dasar array, array ganda, pengiriman array ke fungsi dan string 2. Membuat program menggunakan array, array ganda

Dasar Pemrograman Java

PENGENALAN BAHASA C. A. Struktur Kode Program dalam Bahasa C Secara garis besar, suatu kode program dalam bahasa C memiliki struktur umum seperti ini:

Algoritma & Pemrograman #11. by antonius rachmat c, s.kom, m.cs

POINTER. Tim Alpro Teknik Informatika

JENIS DATA SEDERHANA & INPUT/OUTPUT DATA

Pendahuluan Struktur Data. Nisa ul Hafidhoh

1. Tipe Data Sederhana Hanya dimungkinkan untuk menyimpan sebuah nilai data dalam sebuah variabel Ada 5 macam : int, float, double, char, boolen

Struktur Program. Rinta Kridalukmana

Pengenalan C++ Oleh : Dewi Sartika

A. TUJUAN PEMBELAJARAN

LANGKAH-LANGKAH MENULISKAN PROGRAM DALAM TURBO C++

Seluruh elemen di dalam struktur array mempunyai tipe data yang sama. Random Access

Fungsi (Function) Pendahuluan. Objektif. Bahan Bacaan

BAHASA PEMROGRAMAN C

Langkah Mudah Belajar Struktur Data Menggunakan C/C++

Chapter 1 KONSEP DASAR C

MODUL 1 Operasi Dasar dalam PHP

Pemrograman Dasar C. Minggu 2

Pointer. ted = &andy;

Kurikulum Qt. { Basic OOP } Chapter 3. Array dan String

P11 Array. A. Sidiq Purnomo Program Studi Teknik Informatika Universitas Mercu Buana Yogyakarta

Fungsi : Dasar Fungsi

Algoritma dan Pemrograman

PRAKTIKUM 12 POINTER 2

ARRAY. Array atau Larik merupakan Struktur Data Sederhana yang dapat didefinisikan sebagai pemesanan alokasi memory sementara pada komputer.

PENGENALAN C++ Bab 1

MODUL. Fungsi (Function) Modul Praktikum C++ Dasar Pemrograman Komputer JURUSAN TEKNIK ELEKTRO FAKULTAS TEKNIK

SUMBER BELAJAR PENUNJANG PLPG

OPERATOR-OPERATOR DALAM JAVA

JAVA BASIC PROGRAMMING Joobshet

Tipe data primitif adalah tipe data dasar yang dikenali oleh Java dan bukan merupakan class. Tipe data primitif ini dapat dikenali dengan ciri

Pemrograman Dasar C. Minggu 10

Struktur Data adalah : suatu koleksi atau kelompok data yang dapat dikarakteristikan oleh organisasi serta operasi yang didefinisikan terhadapnya.

Kurikulum Qt. { Basic OOP } Chapter 4. Function

ANALISIS DAN PERANCANGAN PERANGKAT LUNAK

Kurikulum Qt. Chapter 4 Function. Fungsi

Modul PVB-POLINEMA V1.0

ARRAY. Array atau Larik merupakan Struktur Data Sederhana yang dapat didefinisikan sebagai pemesanan alokasi memory sementara pada komputer.

Algoritme dan Pemrograman

MODUL. Array (Larik) Modul Praktikum C++ Dasar Pemrograman Komputer JURUSAN TEKNIK ELEKTRO FAKULTAS TEKNIK

a[0] a[1] a[2] a[3] a[4] a[5] x

Silabus Struktur Data. Bandung 2013

Pencipta bahasa C adalah Brian W. Kernighan dan Dennis M. Ritchie pada. sekitar tahun C adalah bahasa pemrograman terstruktur, yang membagi

By : Agus Priyanto, M.Kom ST3 Telkom Purwokerto Structure and Pointer

Fungsi. Tim PHKI Modul Dasar Pemrograman Fakultas Ilmu Komputer UDINUS Semarang

Dasar Pemrograman Mikrokontroler dengan Bahasa C

6 Modul Praktikum Pemrograman Berorientasi Objek Common Laboratory 2009/2010


POINTER DASAR PEMROGRAMAN

Algoritma Pemrograman. Fery Updi,M.Kom

Algoritma dan Struktur data

Transkripsi:

MODUL ARSIKOM POINTER DAN ARRAY Disusun oleh : Afif Setyo Nugroho (4611412001) Agus Setyawan (4611412001) Maulana Akhsan (4611412010) Imam Ahmad Ashari (4611412015) Ahmad Asif Qolbi (4611412026) JURUSAN ILMU KOMPUTER FAKULTAS MIPA UNIVERSITAS NEGERI SEMARANG 2013

PRAKTIKUM ARSIKOM POINTER DAN ARRAY TUJUAN Memahami konsep array, pointer dan alokasi memori Melatih penggunaan array dan pointer dalam C dan assembler ALAT PERCOBAAN Personal Computer PC Software compiler C misalnya MinGW atau GCC DASAR TEORI Array adalah kumpulan lokasi penyimpanan data, setiap data menyimpan tipe data yang sama. Setiap lokasi penyimpanan disebut elemen array. Anda tahu bahwa semua bahasa pemrograman tingkat tinggi menggunakan variabel. Sedangkan pada bahasa pemrograman tingkat rendah variabel didefinisikan dengan cara yang lebih rumit. Di sinilah salah satu kelebihan C ditunjukkan, dimana ia dapat menjembatani antara bahasa kelas tinggi (unggul dengan kemudahan karena konsepnya manusiawi) dengan bahasa tingkat rendah (powerfull, karena akses maksimal terhadap hardware). Dalam C, programmer memiliki akses terhadap memory secara langsung dengan menggunakan pointer. Untuk memahami konsep pointer, anda perlu mempelajari konsep pengalamatan memory. Definisi pointer adalah variabel yang menyimpan alamat memory.

PERCOBAAN Percobaan 1 : a) Masukkan kode program berikut dengan menggunakan teks editor. Simpan kode program tersebut dengan nama coba.c void coba(int* x, int* y, int* z) { int a = *x; int b = *y; int c = *z; int d = a + b; *y = d ; *z = b ; *x = c ; } b) Kemudian kompilasi program tersebut agar didapat coba.s, pada file coba.s terdapat angka angka yang menunjukkan penggunaan memory, apa arti angka angka tersebut. c) pada file coba.c ganti keyword int dengan double, kemudian kompilasi file coba.c yang sudah diubah, lihat kode assembler yang dihasilkan, apakah berbeda dengan yang sebelumnya? Mengapa? seperti sebelumnya pada kode assembler yang dihasilkan akan muncul angka angka, apa arti angka angka ini dalam penggunaan memory?

Percobaan 2 : Pada percobaan ini anda diminta untuk membuat beberapa fungsi yang berkaitan dengan array dan pointer. Berikan juga penjelasan cara kerja programnya di laporan, terutama yang berhubungan dengan array dan pointer. Fungsi 1 : Buat fungsi yang dapat membaca beberapa karakter dalam array (1 elemen array terdapat 1 karakter) dan menghasilkan output dalam susunan yang terbalik. Contoh: H E L L O menjadi O L L E H Fungsi 2 : Buat fungsi yang dapat melakukan penyimpanan sebuah list (Nama) dalam two dimensional array of char untuk menampilkan nama. Contoh: Bob Alice Jude Newton Fungsi 3 : Buat fungsi seperti pada Fungsi 2, namun dengan menggunakan array of pointers yang menunjuk pada penyimpanan (Nama). Jelaskan perbedaan antara Fungsi 3 dengan Fungsi 2. Fungsi 4 : Buat fungsi yang dapat melakukan perkalian pada dua matriks. Keluaran dari fungsi merupakan matriks hasil perkalian tersebut. Dalam melakukan operasi perkalian matriks gunakan proses loop Contoh : mulmatriks(int A[m][n], int B[n][o]) = C[m][o] = A[m][n] * B[n][o]

Catatan: Pada fungsi di atas, anda harus dapat membuat agar fungsi mengoutput sebuah matriks. Ada beberapa cara untuk melakukan ini, misalnya cara paling sederhana adalah membuat matriks hasilnya sebagai parameter fungsi dan diubah ubah nilainya di dalam fungsi (misal C adalah outputnya): void addmatriks(int A[m][n], int B[m][n], int C[m][n]); Tetapi prototype ini memunculkan pertanyaan mengenai kemungkinan implementasi dan cara pemakaian fungsinya: apakah dari fungsi yang memanggil matriks C hanya merupakan pointer dan akan dialokasikan nilainya di dalam fungsi, atau matriks C sudah terbentuk sebagai array dan tinggal diubah nilainya? Biasanya prototype seperti ini lebih cenderung ke cara yang kedua, yaitu array C sudah ada dan tinggal digunakan. Yang menjadi masalah, dari dalam fungsi tidak ada jaminan bahwa array C sudah teralokasikan dengan benar dan memiliki ukuran yang benar. Apabila ternyata salah, ada kemungkinan fungsi menulis data ke alamat memori yang sebetulnya bukan milik C (misalnya karena melebihi batas indeks maksimum array yang dialokasikan untuk C). Cara lain yang lebih aman adalah membuat fungsi mereturn pointer dari matriks yang dialokasikan secara dinamik di dalam fungsi: int** addmatriks(int A[m][n], int B[m][n]); Perhatikan juga bahwa anda harus dapat memberitahukan kepada fungsi berapa nilai m, n, dan o (ukuran matriks) dari fungsi yang memanggilnya. Cara paling mudah adalah membuat m, n, dan o sebagai global variable. Namun demikian cara ini biasanya tidak disukai karena penggunaan global variable membuat alur dan struktur program menjadi kurang jelas, selain membuat fungsi anda menjadi kurang fleksibel. Cara lain adalah membuat m, n, dan o menjadi parameter fungsi, : int** mulmatriks(int m, int n, int o, int A[m][n], int B[n][o]); tetapi ini membuat jumlah parameter fungsi menjadi banyak. Selain itu, dengan menyimpan ukuran matriks pada variabel terpisah, berarti perlu dibuat dua variabel tambahan, yang secara struktural dalam program tidak ada hubungannya dengan array matriksnya, untuk menyimpan ukuran matriks.

Salah satu solusi adalah dengan menyimpan matriks dalam suatu struktur data, misalnya yang sederhana saja: struct Matriks { int jumlahbaris; int jumlahkolom; int** nilai; // ini akan menjadi dynamic array 2 dimensi }; sehingga prototype fungsi menjadi: struct Matriks mulmatriks(struct Matriks A, struct Matriks B); atau jika ingin lebih efisien memori: struct Matriks* mulmatriks(struct Matriks* pa, struct Matriks* pb); Anda bebas memilih cara apapun yang disebutkan di atas, atau menggunakan cara lain jika menurut anda lebih baik. TUGAS Buatlah sebuah program yang mensimulasikan operasi aritmatika pada level bit 2 s complement dengan menggunakan array. Array yang digunakan terdiri dari 8 bit saja dan hanya boleh diisi oleh angka 1 dan 0. Operasi aritmatika yang akan disimulasikan hanya penjumlahan dan pengurangan. Contoh : penjumlahan antara 7 dan 8. Angka 7 dimasukkan ke dalam array menjadi 00000111 dan angka 8 menjadi 00001000, maka hasil penjumlahan adalah 00001111 dan kemudian diubah kembali menjadi angka desimal, yaitu 15. Buatlah makefile yang akan mengkompilasi program ini.

PEMBAHASAN Percobaan 1 Dari percobaan ini, pada assembly hasil coba.c baris : subl $16, %esp Berarti program menyediakan 16 byte data untuk menyimpan variabel-variabel yang diperlukan. Karena ada 4 variabel yang digunakan (a,b,c,d) yang masing-masing bertipe int, bisa diketahui bahwa masing-masing variabel menggunakan 4 byte data.

Percobaan 2 : Fungsi 1 Pada Fungsi 1 ini yaitu Fungsi 1: membaca beberapa karakter dalam array (1 elemen array terdapat 1 karakter) dan menghasilkan output dalam susunan yang terbalik. kata = HELLO Output: OLLEH Fungsi 1: Fungsi ini meminta panjang teks yang akan diinput lebih dulu, lalu membaca karakter yang diinput satu persatu, dan mencetaknya terbalik dari huruf paling belakang. Untuk mempersingkat program, bagian pembacaan karakter dilakukan seperti membaca string pada c. Karena itu, sebenarnya meminta panjang teks yang akan diinput tidak diperlukan, karena bisa menggunakan fungsi strlen(). Hasil percobaan menunjukkan fungsi sudah berjalan dengan benar

Fungsi 2 Fungsi 2: Fungsi ini meminta jumlah data yang akan diinput lebih dulu, lalu membaca setiap string masukan satu per satu, dan mencetaknya lagi dengan urutan yang sama

Fungsi ini menyimpan list nama sebagai tabel kontigu, dengan array statik. Hasil percobaan menunjukkan fungsi sudah berjalan dengan benar.

Fungsi 3

Fungsi 3: Sama dengan fungsi 2, tetapi menggunakan array of pointer yang masing-masing elemennya menunjuk pada array of character (string). Array of pointer sebelumnya hanya dideklarasikan sebagai pointer, lalu dialokasikan space untuk menyimpan sebanyak 10 pointer pada program ini. Masing-masing pointer pada array tersebut kemudian dialokasikan lagi untuk menyimpan array of character. Hasil percobaan menunjukkan fungsi sudah berjalan dengan benar.

Fungsi 4 Fungsi 4: Untuk menghemat penggunaan memori, fungsi ini mengalokasikan memori untuk matriks setelah menerima input panjang dan lebar matriks. Cara mengalokasikannya sama dengan fungsi 3, pertama dialokasikan dulu untuk array of pointer. Kemudian masing-masing elemennya dialokasikan lagi untuk menyimpan data bertipe int. Perkalian matriks mengikuti persamaan berikut: O_ij= _(k=1)^(k=m.brs) m_ik*n_kj Hasil percobaan menunjukkan fungsi sudah berjalan dengan benar.

TUGAS 2.3 Tugas Program ini dibagi ke 3 file: mtugas.c (berisi main program dan prosedur cetak), convert.c (berisi prosedur konversi), dan adder.c (berisi prosedur penjumlahan). Awalnya, kedua data input dalam desimal dikonversi ke biner menggunakan array of integer. Kemudian, karena fungsi yang ada hanya adder, untuk melakukan pengurangan input pengurangan harus dinegasikan dulu. Penjumlahan dilakukan perbit pada baris berikut: outp[i]=carry^(arg1[i]^arg2[i]);

carry=(arg1[i]&arg2[i]) (carry&(arg1[i]^arg2[i])); Kedua baris tersebut diulang dari LSB ke MSB, dengan nilai awal carry = 0. Array hasil (array outp) kemudian di konversi ke desimal untuk di-output. Hasil percobaan menunjukkan fungsi sudah benar.

KESIMPULAN a) Tipe data int menggunakan 4 byte data dan double menggunakan 8 byte data. b) Array pada bahasa C sebenarnya adalah data bertipe pointer yang menunjuk ke alamat data pertama array. c) Two-dimensional array bisa menggunakan array kontigu atau array of pointer yang setiap elemennya menunjuk pada array lain