Pemrograman Dasar C. Minggu 9

dokumen-dokumen yang mirip
Pemrograman Dasar C. Minggu 10

ALGORITMA DAN STRUKTUR DATA POINTER DAN FUNCTION

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

Pemrograman Dasar C. Minggu 6

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

ARRAY. Karakteristik

ALGORITMA DAN STRUKTUR DATA

POINTER. Tim Alpro Teknik Informatika

Algoritma dan Pemrograman Tahar Agastani Teknik Informatika UIN

POINTER. Tim Alpro Teknik Informatika

Algoritma dan Struktur Data. Pointer Pada Struct

Pertemuan 4 ELEMEN-ELEMEN BAHASA PEMROGRAMAN

MAKALAH POINTER PADA BAHASA C

Pengenalan C++ Oleh : Dewi Sartika

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

MODUL 10 Fungsi 10.1 Kompetensi 10.2 Alat Dan Bahan: 10.3 Ulasan Teori: Dasar Fungsi Deklarasi Fungsi

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

FAKULTAS TEKNIK UNIVERSITAS NEGERI YOGYAKARTA

Minggu ke-11 Fungsi (Function)

FUNCTION (FUNGSI) LOGO. Pendidikan Teknik Elektronika FT UNY. Muh. Izzuddin Mahali, M.Cs.

FAKULTAS TEKNIK UNIVERSITAS NEGERI YOGYAKARTA LAB SHEET BAHASA PEMROGRAMAN Fungsi : Passing Parameter by Value & Semester 3

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

Struktur Dasar Bahasa C Tipe Data Dalam bahasa C terdapat lima tipe data dasar, yaitu :

Pemrograman Dasar C. Minggu 8

A. TUJUAN 1. Menjelaskan tentang prinsip dasar fungsi. 2. Menjelaskan tentang.parameter formal dan parameter aktual

Fungsi : Dasar Fungsi

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

Tipe Data dan Operator

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

Fungsi DASAR PEMROGRAMAN

Bab 2. Dasar-Dasar Pemrograman C

Algoritma dan Struktur Data. Pertemuan 5 Pointer

Tipe data dasar merupakan tipe data yang disediakan oleh kompailer, sehingga dapat langsung dipakai Dalam algoritma dan pemrograman yang termasuk dala

Konsep Pemrograman. Bab 13. Pointer 3. Konsep Pemrograman Politeknik Elektronika Negeri Surabaya 2006 PENS-ITS. Umi Sa adah

Chapter 1 KONSEP DASAR C

VARIABEL, TIPE DATA DAN EKSPRESI Bab 2

Sedangkan bentuk umum pendefinisian fungsi adalah : Tipe_fungsi nama_fungsi(parameter_fungsi) { statement statement... }

Kurikulum Qt. { Basic OOP } Chapter 4. Function

Pemrograman Dasar C. Minggu 6

Fungsi (Function) Pendahuluan. Objektif. Bahan Bacaan

Achmad Solichin.

Pendahuluan Pemrograman Mikrokontroler

Pengenalan Struktur Data. Farah Zakiyah Rahmanti 2014

Minggu ke-14 Typedef, Struct & Command Line Argument

POINTER DASAR PEMROGRAMAN

1 MODUL 8 POINTER MODUL 8 POINTER

Konsep Pemrograman. Bab 11. Pointer 1. Konsep Pemrograman Politeknik Elektronika Negeri Surabaya 2006 PENS-ITS. Umi Sa adah

Pointer. ted = &andy;

MODUL PRAKTIKUM BAHASA PEMROGRAMAN TESTRUKTUR MODUL 8 POINTER

Bahasa C-M6 By Jamilah, Skom 1

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

Achmad Solichin.

A. TUJUAN 1. Memecah program dalam fungsi fungsi yang sederhana. 2. Menjelaskan tentang pemrograman terstruktur.

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

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

Pointer dan Array Dinamik. IF2121 / Algoritma dan Struktur Data Sem /2018

elemen Dasar Bahasa Pemrograman C

Algoritma Pemrograman 2B (Pemrograman C++)

VARIABEL & TIPE DATA PEMROGRAMAN C++


DIKTAT MATA KULIAH PEMROGRAMAN I BAB XI POINTER

POINTER II. Oleh : Mike Yuliana PENS-ITS

ARRAY & POINTER. Listing 8.1. EXPENSES.C demonstrates the use of an array. AP3: Array & Pointer

Pemrograman Dasar C. Minggu 1: Pengenalan C Programming

Bahasa C melengkapi fasilitas modular dengan menggunakan fungsi pada setiap SubProgram. Contoh pembagian program menjadi beberapa subprogram.

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

Struct. Tim ALPRO Teknik Informatika

Fungsi DASAR PEMROGRAMAN

A. TUJUAN 1. Menjelaskan tentang konsep dari variabel pointer. zzzz. Address. Gambar 8.1 Variabel pointer px menunjuk ke variabel x

BAB VIII POINTER. Tujuan :

Konsep Pemrograman. Bab 7. Fungsi1. Konsep Pemrograman Politeknik Elektronika Negeri Surabaya 2006 PENS-ITS. Umi Sa adah

PEMROGRAMAN BERORIENTASI OBJEK. Tipe Data. Budhi Irawan, S.Si, M.T

MODUL 7 FUNGSI A. Tujuan. B. Petunjuk. C. Dasar Teori

PRAKTIKUM 7 FUNGSI 1

Linked List 6.3 & 7.3 NESTED LOOP

Pemrograman Dasar C. Minggu 4

Konsep Pemrograman. Bab 12. Pointer 2. Konsep Pemrograman Politeknik Elektronika Negeri Surabaya 2006 PENS-ITS. Umi Sa adah

C V.S. C++ Oleh : Rasim

Algoritma & Pemrograman

12/29/2011 ILKOM IPB 1. Algoritme dan Pemrograman. Address and Pointers. Pointer

Pemrograman Dasar C. Minggu 2

BAB 6 FUNGSI TUJUAN PRAKTIKUM

ALGORITMA DAN PEMROGRAMAN 2. 3 SKS By : Sri Rezeki Candra Nursari

Algoritma Pemrograman. Fery Updi,M.Kom

Pointer. Objektif. Bahan Bacaan

OPERATOR BAHASA C. Obyektif : 4. Mengetahui macam-macam operator dalam Bahasa C. 5. Mengetahui dan dapat menggunakan format pada tiap tipe data..

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

PRAKTIKUM 11 POINTER 1

Program pendek dan simple = mudah dihandle. Program besar, banyak dan kompleks = tidak

PRAKTIKUM 12 POINTER 2

01. Review Array, Pointer dan Struktur

Function nama dipisahkan

Pertemuan 6. Pemrograman Modular

Dasar Pemrograman Java

Pointer. Pointer adalah variabel yang menyimpan alamat dari variabel yang lainnya. Deklarasi pointer : datatype *ptr_name; Contoh:

POINTER I. Oleh : Mike Yuliana PENS-ITS

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

Kuliah III - Dasar Pemrograman

PRAKTIKUM 11 POINTER 1

DASAR PEMROGRAMAN. PENGANTAR BAHASA C ( Sejarah, Struktur Pemrograman, Tipe Data, Operator ) Djoko Soerjanto, M.Kom

Transkripsi:

Pemrograman Dasar C Minggu 9

Topik Bahasan Struktur (Structure) Mengelompokkan variabel-variabel yang bertipe beda secara bersama-sama Definisi Tipe (Type Definition) Mendefinisikan tipe anda sendiri Bekerja dengan pointer Bagaimana variabel disimpan Operator address & Operator indirection * Menggunakan pointer untuk variabel

Struktur (Structure) Variabel tunggal adalah sebuah elemen tunggal dari sebuah tipe, contohnya int atau float. Array mempunyai elemen yang banyak untuk tipe yang sama. Structure memungkinkan variabel-variabel dengan elemen-elemen (dikenal sebagai member) dari lebih dari satu tipe untuk dibuat. Contoh: Misalkan kita ingin mencatat nama orang (nama keluarga), umur (dalam tahun), dan tingginya (dalam meter), untuk melakukannya kita akan menyimpan: sebuah string (array dari karakter) sebuah integer (sebuah int) dan sebuah bilangan riil (float)

Struktur (Structure) Berikut adalah structure C untuk menyimpan data diatas: struct { char nama [12]; int umur; float tinggi; } orang_a, orang_b; Kita telah menciptakan 2 variable struktur orang_a dan orang_b yang mempunyai elemenelemen yang dibutuhkan. umur, tinggi dll dikenal sebagai member

Alternatif Deklarasi Struktur Cara alternatif untuk mendefinisikan struktur (perhatikan kesamaan dengan cara mendefinisikan tipe enum): struct orang { char nama [12]; int umur; float tinggi; }; Disini sebuah tag orang telah dideklarasikan untuk struktur ini yang dapat digunakan seperti nama tipe, jadi untuk mendeklarasikan variable dengan struktur ini pada setiap saat: struct orang orang_a, orang_b;

Alternatif Deklarasi Struktur CATATAN: kita menggunakan kata kunci struct diikuti dengan tag yang kita definisikan sebelumnya (orang pada kasus ini) dan kemudian variabel sebanyak yang kita inginikan dari struktur tsb. dipisahkan dengan koma. Dengan metode tag, kita dapat terus mendefiniskan struktur lebih lanjut dengan pengaturan yang sama kapan saja yang kita inginkan, jika tag ini dapat dilihat (dengan aturan lingkup yang biasanya)

Mengakses Member Struktur Mengakses member dari struktur dengan menggunakan nama struktur, diikuti sebuah titik. diikuti nama member. Contoh: untuk mengakses member tinggi... orang_a.tinggi = 1.32; atau Lihat penggunaan strcpy, sebuah fungsi library C strcpy(orang_a.nama, Peter ); Struktur keseluruhan dapat diassign dari satu ke yang lain (tidak seperti array!) orang_a = orang_b;

Mengakses Member Struktur Struktur dapat dikirimkan sebagai parameter fungsi dan digunakan sebagai nilai return fungsi: struct orang cek_tinggi (struct orang x) { if(x.tinggi > 2.0) { printf( Terlalu tinggi! ); x.tinggi = 0; } return (x); }

Array dari Struktur Kita sudah lihat bahwa array dapat digunakan sebagai member dari sebuah struktur, struktur sendiri dapat menjadi elemen dari array: struct orang banyak_orang[10]; Mendefinisikan sebuah array 10 elemen dari struktur ber-tag orang, anda dapat mengakses elemen individu sbb: banyak_orang[2].umur = 32; Mengakses member umur pada struktur ketiga dari array struktur bernama banyak_orang

Inisialisasi Struktur Inisialisasi dapat dilakukan hanya dengan: struct orang baru = { Peter, 38, 1.78}; Berarti: baru.nama berisi Peter baru.umur berisi 38 baru.tinggi berisi 1.78 Catatan: urutannya sesuai dengan urutan dimana member dari struktur yang terdefinisi

Definisi Tipe (Type Definition) Cara lain mendefinisikan struktur typedef struct { char nama [12]; int umur; float tinggi; } orang; Kemudian gunakan tipe baru orang ini seperti tipe lain untuk membuat variabel dari tipe baru ini: orang orang_a, orang_b; Dimana orang sekarang tipe yang merepresentasikan struktur dan jadi orang_a dan orang_b adalah variabel dengan tipe struktur diatas.

Definisi Tipe (Type Definition) typedef dapat digunakan untuk mendefinisikan semua jenis nama tipe baru, disini mendefinisikan tipe float baru: typedef float rupiah, hari_gajian [5]; Kemudian kita bisa mendeklarasikan variabel menggunakan nama ini: rupiah gaji_dia; hari_gajian gaji_kerjaan1, gaji_kerjaan2; typedef meningkatkan kemampuan baca dan membuat mudah perubahan global (misalnya membuat semua penggunaan rupiah dengan double bukan float), hanya mengubah typedef!

Penyimpanan Variabel Ketika kita mendeklarasikan variabel dalam sebuah program, kompiler menyediakan ruangan (space) yang besarnya sesuai untuk tipe variabel itu. Ketika program run, variabel itu dialokasikan sebuah lokasi spesifik di dalam memory komputer: Jadi jika kita menulis: int a; kita mendeklarasikan sebuah variabel integer yang disebut a. Ketika statemen C ini dikompile di PC, sebuah space memory dengan besar yang sesuai akan dialokasikan untuk memegang sesuatu dengan ukuran int.

Penyimpanan Variabel Byte wide memory addresses PC Random Access Memory 0401 0400 03FF 03FE 03FD 03FC 03FB 03FA a Seperti yang anda lihat, a telah dialokasikan 2 bytes dari memory (cukup untuk int) dan alamat dasarnya (base address) dari a adalah 03FE16

Menemukan Alamat (Address) Bukan hal yang mudah untuk memperkirakan di mana di dalam memory variabel tertentu akan ditempatkan: C adalah bahasa pemrograman yang portabel, berarti sebuah program yang ditulis di C dapat dikompile (dengan kompiler yang sesuai) untuk berjalan di system komputer yang berbeda (PC, SUN, Main Frame, dll) masing-masing dengan struktur memory yang sangat berbeda. Pada saat tertentu ketika sebuah program berjalan, tempat yang sebenarnya dalam memory dimana operating system mengalokasikan untuk variabel mungkin bervariasi tergantung pada apa saja yang terjadi pada komputer pada saat itu.

Menemukan Alamat (Address) Operator address & dalam C adalah operator tunggal (unary) yang menyediakan sarana untuk mendapatkan address pada saat waktu berjalan (run time) dari sebuah objek, jadi &a akan mengembalikan lokasi saat ini dari variabel a yang berarti memberikan address dari a. Kita telah menggunakan operator ini dengan scanf, contohnya scanf( %c, &a); menggunakan & operator untuk memberikan fungsi scanf alamat dari tempat dimana untuk menaruh karakter yang akan diterima.

Pointer Kita telah melihat bahwa kita dapat mendapatkan address dari sesuatu dengan operator &, C menyediakan sebuah sarana menyimpan alamat: tipe pointer. Variabel pointer adalah kontainer yang didesain untuk menyimpan alamat (address) dari sesuatu (variabel yang lain, dll)

Pointer Kita dapat mendeklarasikan variabel pointer menjadi tipe pointer yang sesuai untuk menyimpan address dari sebuah tipe tertentu dari objek C, contohnya deklarasi dibawah mendefinisikan variabel pointer yang sesuai untuk menyimpan address yang mengarah pada variabel dengan tipe yang terkait. Catatan: * di depan dari identifier pada deklarasi membuatnya pointer untuk tipe itu dan bukan variabel untuk tipe itu. int *p_to_int; float *p_to_float; int *p_to_int adalah variabel pointer yang cocok untik menyimpan alamat dari variabel integer (penggunaan istilah p_ juga membantu daya baca, tapi bukan esensial) dan variabel pointer yang lain yang cocok untuk menampung alamat dari float bernama float *p_to_float.

Mereferensi Pointer Sekarang kita mempunyai sarana untuk mendapatkan alamat dari objek, operator & dan sarana untuk menciptakan sebuah tempat penyimpanan untuk menampung alamat itu, sebuah pointer (diciptakan dengan meletakkan sebuah * sebelum identifier pada deklarasi). Mari kita gunakan: Sebuah var. data dan pointer ke int int a, *p_int;... p_int = &a;

Mereferensi Pointer Sekarang pointer p_int menyimpan alamat dimana variabel a terletak. Byte wide memory addresses PC Random Access Memory 0401 0400 03FF 03FE 03FD 03FC 03FB 03FA a p_int 03FE menunjuk ke a

Indirection atau Dereferencing Pointer Kita dapat mengakses sebuah lokasi dengan alamat yang disimpan dalam sebuah pointer. Kita gunakan operator indirection tunggal (unary) * yang berarti lokasi yang ditunjukkan oleh, contoh: int a, *p_a;... p_a = &a; *p_a = 10; Disini kita telah mendeklarasikan sebuah variabel int a dan sebuah pointer ke int p_a. Kemudian kita meng-assign kepada pointer alamat dari variabel a dengan menggunakan operator alamat & dan mereferensi ke a dengan tidak langsung dengan pointer ini menggunakan operator indirection * dan meng-assign kepada a nilai 10

Indirection atau Dereferencing Contoh lain: int a = 20, b, *p_1; p_1 = &a; b = *p_1 * 2; p_1 = &b; a = *p_1; printf( a = %d, a); Pointer Tampilan: a = 40

Pengiriman Parameter By Reference Parameter Aktual dikirim ke fungsi biasanya dikirim by value (jadi nilai dari variabel dikopi ke fungsi) Untuk memberikan kepada fungsi akses langsung kepada, jadi kemampuan untuk memodifikasi, beberapa variabel diluar, kita dapat menggunakan pointer sebagai parameter yang mengirim alamat (address) dari variabel kepada fungsi jadi dapat menggunakan address by reference menggunakan operator indirection untuk mengakses variabel aktual. Perhatikan contoh berikut:

Pengiriman Parameter By Reference void swap_int (int *x, int *y) { int temp; pointer temp = *x; *x = *y; indirection *y = temp; Parameter formal dari fungsi adalah tipe pointer ke int. jadi di dalam fungsi x dan y tersedia sebagai pointer. Statemen di dalam fungsi menggunakan operator indirection * untuk mengakses sesuatu di luar yang ditunjukkan oleh x dan y dan pada kenyataannya memanipulasinya, dalam hal ini men-swap isi keduanya!

Contoh #include <stdio.h> void swap_int (int *x, int *y) { int temp; temp = *x; *x = *y; *y = temp; } int main (void) { int a = 1, b = 20; /* lokal untuk main */ swap_int (&a, &b); printf( \na = %d, b = %d, a, b); return (0); }

Penjelasan Contoh Jadi main mempunyai dua variabel integer, a dan b yang diinisialisi seperti diatas. Ketika main memanggil swap_int ia mengirimkan (mengkopi) alamat dari a dan b ke swap_int (dimana mereka disimpan di pointer a & b). Maka, swap_int meng-assign nilai dari a milik main ke temp, dan meng-assign nilai dari b milik main ke a milik main, sebelum meng-assign nilai dari temp ke b milik main. Maka swap_int telah dapat memanipulasi (menswap) a & b meskipun tidak kelihatan di swap_int karena lokal untuk main saja. Tampilan akhir a = 20, b = 1

Konvensi Dokumentasi Menambahkan komentar pada sumber program C akan memudahkan anda dan orang lain untuk membaca dan memahami. Menggunakan sebuah template komentar fungsi adalah disiplin yang baik, dapat menyertakan detail dari tujuan (& bagaimana menggunakan), detail dari parameter dan tipe return, dan ketergantungan (fungsi lain atau variabel yang dibutuhkan) ditambah sebuah daftar revisi. Buatlah sendiri.

Contoh void swap_int (int *x, int *y) /* TUJUAN: fungsi untuk men-swap dua variabel DIBUAT OLEH: AWR 06 FEB 2004 INPUT: dua pointer ke integer, digunakan dengan me-load dengan alamat dari dua variabel yang akan di-swap. RETURN: tidak mengembalikan apapun REVISI: --- { int temp; temp = *x; *x = *y; *y = temp; }

Konvensi Dokumentasi (lanjutan) Untuk membantu daya baca (readability) lebih lanjut beberapa organisasi mengadopsi kebijakan konvensi penamaan untu variabel untuk meningkatkan daya baca, contoh: Variabel lokal mempunyai nama dimulai dengan l_nama Variabel global mempunyai nama dimulai dengan g_nama Variabel pointer mempunyai nama dimulai dengan p_nama Variable temporer (sementara) (contohnya yang digunakan untuk menghitung loop) mempunyai nama yang dimulai dengan t_nama

Konvensi Dokumentasi (lanjutan) void swap_int (int *p_x, int *p_y) /* TUJUAN... REVISI: 7 FEB 04 tambahan komentar oleh AWR 8 FEB 04 nama identifier diubah oleh AWR */ { int t_temp; t_temp = *p_x; *p_x = *p_y; *p_y = t_temp; }

Ringkasan Structure Menyimpan kelompok dari variable yang berbeda tipe tapi berhubungan secara bersamasama Dapat dikirimkan sebagai parameter Dapat dikirimkan lewat assignment Type Definition Mendefinisikan tipe sendiri

Ringkasan Bekerja dengan Pointer Bagaimana variabel disimpan Operator alamat dari & Operator lokasi yang ditunjuk oleh * Pointer ke variabel Passed by address parameter Konvensi dokumentasi Template komentar untuk program/fungsi Konvensi penamaan untuk meningkatkan daya baca