43
BAB 1 TIPE ARRAY Selama ini kita menggunakan satu variabel untuk menyimpan 1 buah nilai dengan tipe data tertentu. Misalnya : int a1, a2, a3, a4, a5. Deklarasi variabel diatas digunakan untuk menyimpan 5 data integer dimana masing-masing variabel diberi nama a1, a2, a3, a4, dan a5. Jika kita memiliki 10 data, 100 data integer bahkan mungkin data yang ingin kita proses tidak kita ketahui atau bersifat dinamis, kita tidak mungkin menggunakan variabel seperti diatas. Di dalam C dan pemrograman yang lain, terdapat suatu fasilitas untuk menyimpan data-data yang bertipe data sama dengan suatu nama tertentu. Array adalah kumpulan dari nilai-nilai data bertipe sama dalam urutan tertentu yang menggunakan sebuah nama yang sama. Nilai-nilai data di suatu array disebut elemen-elemen array. Letak urutan elemen array ditunjukkan dengan index atau subscript. Dilihat dari dimensinya array dapat dinagi menjadi array satu dimensi, array dua dimensi dan array tiga dimensi. 1.1 Array Satu Dimensi Mende klarasikan array satu dimensi : Tipe_data Nama_array[ukuran_array] Tipe data elemen array: int, float, char, long int, dll. Nama array: menunjukkan nama array yang dipakai Ukuran array: menunjukkan jumlah maksimal elemen array Contoh : int X[5] Dalam bahasa C, indeks array dimulai dengan nol. Ilustrasi array satu dimensi: #include "stdio.h" #include "conio.h" void main() {float X[]={5,3,7},Total=0; int i; clrscr(); for(i=0;i<=2;i++) Total=Total+X[i]; printf("Total=%f\n",Total); getch(); }

Modul Praktikum Pemrograman Dasar

Embed Size (px)

DESCRIPTION

Laporan Tugas

Citation preview

Page 1: Modul Praktikum Pemrograman Dasar

BAB 1TIPE ARRAY

Selama ini kita menggunakan satu variabel untuk menyimpan 1 buah nilai dengan tipe data tertentu.Misalnya : int a1, a2, a3, a4, a5.Deklarasi variabel diatas digunakan untuk menyimpan 5 data integer dimana masing-masing variabel diberi nama a1, a2, a3, a4, dan a5. Jika kita memiliki 10 data, 100 data integer bahkan mungkin data yang ingin kita proses tidak kita ketahui atau bersifat dinamis, kita tidak mungkin menggunakan variabel seperti diatas. Di dalam C dan pemrograman yang lain, terdapat suatu fasilitas untuk menyimpan data-data yang bertipe data sama dengan suatu nama tertentu.

Array adalah kumpulan dari nilai-nilai data bertipe sama dalam urutan tertentu yang menggunakan sebuah nama yang sama. Nilai-nilai data di suatu array disebut elemen-elemen array. Letak urutan elemen array ditunjukkan dengan index atau subscript.Dilihat dari dimensinya array dapat dinagi menjadi array satu dimensi, array dua dimensi dan array tiga dimensi.

1.1 Array Satu DimensiMende klarasikan array satu dimensi : Tipe_data Nama_array[ukuran_array] Tipe data elemen array: int, float, char, long int, dll. Nama array: menunjukkan nama array yang dipakai Ukuran array: menunjukkan jumlah maksimal elemen array Contoh : int X[5] Dalam bahasa C, indeks array dimulai dengan nol.

Ilustrasi array satu dimensi:

Contoh Program 1Program untuk menjumlahkan elemen dalam array satu dimensi.

#include "stdio.h"#include "conio.h"void main(){float X[]={5,3,7},Total=0; int i; clrscr(); for(i=0;i<=2;i++) Total=Total+X[i]; printf("Total=%f\n",Total); getch();}

Page 2: Modul Praktikum Pemrograman Dasar

Modul Praktikum Pemrograman Dasar dengan Bahasa C 2012

Output dari program setelah dijalankan:Total=15.000000

Contoh Program 2

1.2 Array Dua DimensiArray dua dimensi sering kali digambarkan/dianalogikan sebagai sebuah matriks. Jika array berdimensi satu hanya terdiri dari 1 baris dan banyak kolom, array berdimensi dua terdiri dari banyak baris dan banyak kolom yang bertipe sama.

Mende klarasikan array dua dimensi : Tipe_data Nama_array[baris][kolom] Tipe data elemen array: int, float, char, long int, dll. Nama array: menunjukkan nama array yang dipakai Ukuran array: menunjukkan jumlah maksimal elemen array Contoh : int Matrik[2][3] Dalam bahasa C, indeks array dimulai dengan nol.

Ilustrasi array dua dimensi:

Jurusan MatematikaUniversitas Brawijaya Malang

#include "stdio.h"#include "conio.h"void main(){float A[5]={75,73,78,81,80}; int i,x,indeks; clrscr(); printf("Masukkan nilai yang akan dicari:\n"); scanf("%d",&x); indeks=0; for(i=0;i<5;i++) if(A[i]==x) indeks=i; printf("Nilai ditemukan pada indeks ke- %d",indeks); getch();}

Page 3: Modul Praktikum Pemrograman Dasar

Modul Praktikum Pemrograman Dasar dengan Bahasa C 2012

Contoh Program 3Program untuk menampilkan array dua dimensi

Output setelah program dijalankan:12.340 25.360 17.450 18.37015.150 18.050 11.250 55.55043.210 17.110 62.850 13.010

Contoh Program 4Program untuk menampilkan array dua dimensi

Jurusan MatematikaUniversitas Brawijaya Malang

#include "stdio.h"#include "conio.h"void main(){float X[][4]={12.34,25.36,17.45,18.37, 15.15,18.05,11.25,55.55, 43.21,17.11,62.85,13.01}; int i,j; clrscr(); {for(i=0;i<3;i++) {for(j=0;j<4;j++) printf("%2.3f ",X[i][j]); printf("\n"); } printf("\n"); getch(); }}

#include "stdio.h"#include "conio.h"void main(){int MatriksA[100][100],MatriksB[100][100],MatriksC[100][100]; int i,j,barisAB,kolomAB; clrscr(); //Memasukkan Orde dari Matriks printf("Jumlah Baris Matriks A dan B? "); scanf("%d",&barisAB); printf("Jumlah Kolom Matriks A dan B? "); scanf("%d",&kolomAB); printf("\n");

//Memasukkan data matriks A printf("Masukkan nilai matriks A:\n"); for(i=0;i<barisAB;i++){ for(j=0;j<kolomAB;j++)

{printf("A (%3d,%3d)?",i+1,j+1); scanf("%d",&MatriksA[i][j]); }printf("\n");}

//Memasukkan data Matriks B printf("Masukkan nilai matriks B:\n"); for(i=0;i<barisAB;i++){ for(j=0;j<kolomAB;j++) {printf("B (%3d,%3d)?",i+1,j+1); scanf("%d",&MatriksB[i][j]); } printf("\n"); }

//Menghitung matriks C yang merupakan hasil jumlahan matriks A dan Bfor(i=0;i<barisAB;i++){ for(j=0;j<kolomAB;j++){ MatriksC[i][k]=MatriksA[i][j]+MatriksB[i][j]; }}

//Menampilkan hasil jumlahan matriks A dan Bprintf("Hasil jumlahan matriks:\n");for(i=0;i<barisAB;i++){ for(j=0;j<kolomAB;j++) printf("%d ",MatriksC[i][k]); printf("\n"); }printf("\n");

getch();}

Page 4: Modul Praktikum Pemrograman Dasar

Modul Praktikum Pemrograman Dasar dengan Bahasa C 2012

Output setelah program dijalankan:Jumlah Kolom Matriks A dan B? 2Jumlah Kolom Matriks A dan B? 3

Masukkan nilai matriks A:A ( 1, 1)?1A ( 1, 2)?2A ( 1, 3)?3

A ( 2, 1)?4A ( 2, 2)?5A ( 2, 3)?6

Jurusan MatematikaUniversitas Brawijaya Malang

Page 5: Modul Praktikum Pemrograman Dasar

Modul Praktikum Pemrograman Dasar dengan Bahasa C 2012

Masukkan nilai matriks B:B ( 1, 1)?7B ( 1, 2)?8B ( 1, 3)?9

B ( 2, 1)?10B ( 2, 2)?11B ( 2, 3)?12

Hasil jumlahan matriks:8 10 1214 16 18

Latihan1. Buatlah program untuk mengurutkan bilangan-bilangan berikut: 8,3,7,1,6,4,2 dan 5

dalam sebuah array satu dimensi dengan hasil pengurutannya meningkat dan menurun.

2. Buatlah program untuk menghitung selisih 2 buah matriks.3. Buatlah program untuk menghitung perkalian matriks dengan sebuah skalar positif.

BAB 2SUB PROGRAM

Jurusan MatematikaUniversitas Brawijaya Malang

Page 6: Modul Praktikum Pemrograman Dasar

Modul Praktikum Pemrograman Dasar dengan Bahasa C 2012

(FUNGSI DAN PROSEDUR)

Fungsi dan prosedur merupakan bagian dari program yang dibuat untuk tugas tertentu. Fungsi dan prosedur banyak dilibatkan dalam pemrograman yang bertujuan untuk menjadikan program lebih terstruktur sehingga mudah dipahami dan mudah dikembangkan karena dengan adanya fungsi dan prosedur akan mengurangi pengulangan penulisan kode. Fungsi dan prosedur letaknya terpisah dari program yang memanggil fungsi dan prosedur itu sendiri.

Fungsi akan memberikan nilai akhir yang dinyatakan dengan pernyataan return, sedangkan prosedur tidak memberikan nilai akhir.

2.1 Dasar fungsiTugas khusus yang diemban sebuah fungsi dapat kita lihat pada beberapa fungsi standart, misalnya:- getch(), dengan tugas membaca kode tombol.- printf(), dengan tugas untuk menampilkan informasi atau data ke layar.Pada umumnya fungsi memerlukan masukan yang dinamakan argumen atau parameter. Masukan ini selanjutnya diolah oleh fungsi. Hasil akhir fungsi berupa sebuah nilai (disebut nilai keluaran fungsi atau nilai balik fungsi).

Bentuk umum fungsiTipe_fungsi Nama_fungsi(Parameter_fungsi){Pernyataan_1 Pernyataan_2 ....................... .......................} Sebuah fungsi yang sederhana bisa saja tidak mengandung parameter sama sekali dan tentu saja untuk keadaan ini deklarasi parameter juga tidak ada. Sebagai contoh:

inisialisasi(){ return(0);}

Pada tipe fungsi diatas:- Tipe fungsi tidak disebutkan, berarti keluaran fungsi bertipe int.- inisialisasi adalah nama fungsi- Tanda () sesudah nama fungsi menyatakan bahwa fungsi tak memiliki parameter.- return (0); merupakan sebuah pernyataan dalam tubuh fungsi.

2.2 Memberikan nilai akhir fungsiSebuah fungsi terlihat memiliki nilai keluaran. Didalam fungsi, pernyataan yang diberikan untuk memberikan nilai akhir fungsi berupa pernyataan return. Sebagai contoh fungsi inisialisasi yaitu return (0); merupakan pernyataan untuk memberikan nilai akhir pada fungsi berupa nol,

Contoh Program 1

Jurusan MatematikaUniversitas Brawijaya Malang

#include"stdio.h"#include"conio.h"inisialisasi(); //deklarasi fungsi

void main(){int x,y; clrscr(); x=inisialisasi(); //pemanggilan fungsi inisialisasi printf("x=%d\n",x); y=inisialisasi(); //pemanggilan fungsi inisialisasi printf("y=%d\n",y); getch(); }

inisialisasi() //fungsi inisialisasi {return(0); }

Page 7: Modul Praktikum Pemrograman Dasar

Modul Praktikum Pemrograman Dasar dengan Bahasa C 2012

Output setelah program dijalankan:x=0y=0

Program di atas menjelaskan bahwa suatu fungsi cukup didefinisikan satu kali tetapi bisa digunakan beberapa kali. Pada keadaan semacam ini, seandainya tubu fungsi banyak mengandung pernyataan, maka pemakaian fungsi dapat menghindari duplikasi kode dan tentu saja menghemat penulisan program maupun kode dalam memori.Bagi suatu fungsi, jika suatu pernyataan return dieksekusi maka eksekusi terhadap fungsi akan berakhir dan nilai pada parameter return akan menjadi keluaran fungsi.

Contoh Program 2Program untuk menghitung penjumlahan dan pengurangan dua buah bilangan dengan pembuatan masing-masing fungsi jumlah dan kurang.

Jurusan MatematikaUniversitas Brawijaya Malang

#include "stdio.h"#include "conio.h"float tambah(float a,float b); //deklarasi fungsi jumlah//float kurang(float x,float y); //deklarasi fungsi kurang//

void main() {float a,b,c,x,y,z; clrscr(); printf("A= "); scanf("%f",&a); printf("B= "); scanf("%f",&b); printf("X= ");

scanf("%f",&x); printf("Y= "); scanf("%f",&y);

c=tambah(a,b); z=kurang(x,y);

printf("A+B=%f\n",c); //pemanggilan fungsi jumlah//printf("X-Y=%f",z); //pemanggilan fungsi kurang//getch();}

float tambah(float a,float b) //definisi fungsi jumlah//{return(a+b);}

float kurang(float x,float y) //definisi fungsi kurang//{return(x-y);}

Page 8: Modul Praktikum Pemrograman Dasar

Modul Praktikum Pemrograman Dasar dengan Bahasa C 2012

Output setelah program dijalankan:A= 7B= 3X= 9Y= 2A+B=10.000000X-Y=7.000000

Latihan1. Tentukan output dari program setelah program dijalankan!

Jurusan MatematikaUniversitas Brawijaya Malang

#include ”stdio.h”#include “conio.h”int ubah(int y);

void main(){int x,temp; clrscr();

temp=ubah(x); //pemanggilan fungsi ubah// printf("x=%d\n",temp); getch();}

int ubah(int y) //definisi fungsi ubah//{y=85; return(y);}

Page 9: Modul Praktikum Pemrograman Dasar

Modul Praktikum Pemrograman Dasar dengan Bahasa C 2012

2. Buatlah program untuk menentukan suatu bilangan apakah termasuk bilangan ganjil, genap, prima, kelipatan 3 atau kelipatan 5. Buatlah fungsi atau prosedur dalam program tersebut untuk melaksanakan perintah tersebut.

3. Buatlah program untuk menentukan nilai maksimum dan minimum diantara beberapa nilai yang dimasukkan sebagai inputan. Buatlah fungsi atau prosedur dalam program tersebut untuk melaksanakan perintah tersebut.

4. Tentukan output dari program berikut

BAB 3OPERASI DASAR STRING

Jurusan MatematikaUniversitas Brawijaya Malang

#include ”stdio.h”#include “conio.h”void fung_a(void);void fung_b(void);int x=20;

void main(){ clrscr();x+=2;fung_a();fung_b();printf(“x=%d\n”,x);getch();}

void fung_a(void){static int x=5;x++;printf(“x=%d\n”,x);fung_b();}

void fung_b(void){ x--;printf(“x=%d\n”,x);}

Page 10: Modul Praktikum Pemrograman Dasar

Modul Praktikum Pemrograman Dasar dengan Bahasa C 2012

String merupakan bentuk data yang biasa dipakai dalam bahasa pemrongraman untuk keperluan menampung dan memanipulasi data teks. Misalnya untuk menampung (menyimpan) suatu kalimat yaitu nama, alamat, dll. Dalam bahasa C, string bukanlah sebagai data tersendiri, melainkan array dari karakter.Konstanta string ditulis dengan diawali dan diakhiri tanda petik, misalnya: “Matematika AB”.Konstanta string disimpan didalam memory secara berurutan sebagai berikut:

M A T E M A T I K A A B NULL0 1 2 3 4 5 6 7 8 9 10 11 12 13

Setiap karakter akan menempati memory sebesar 1 byte. Byte terakhir secara otomatis akan berisi karakter NULL (\0).

3.1 Variabel stringVariabel string adalah variabel yang dipakai untuk menyimpan string.Misal: char nama[15];

3.2 Memasukkan data string dalam program Pemasukan data string ke dalam suatu variabel biasa dilakukan dengan

memakai gets(nama_array). Pemasukan data string ke dalam suatu program juga bisa menggunakan

scanf(“%s, nama_array). Jika menggunakan perintah scanf maka data inputan string tidak bisa mengandung spasi karena data yang terbaca akan selalu data sebelum spasi, kebalikannya terjadi pada gets(nama_array).

3.3 Menampilkan isi variabel string ke layarPernyataan yang sering digunakan untuk menampilkan isi variabel string adalah:puts(var_string);printf(“%s”,var_string);printf(var_string);

3.4 Mengakses elemen stringVariabel string merupakan bentuk khusus dari array bertipe char. Oleh karen itu, elemen dari variabel string dapat diakses seperti halnya pengaksesan elemen pada array.

3.5 Beberapa fasilitas untuk operasi karakter yang didefinisikan pada file ctype.hisalnum() : menghasilkan nilai benar (bukan nol) kalau c adalah sebuah huruf (huruf kapital ataupun huruf kecil) atau sebuah karakter digit (0 sampai dengan 9). isalpha() : menghasilkan nilai benar apabila c adalah sebuah huruf (huruf kapital ataupun huruf kecil).isdigit() : menghasilkan nilai benar (bukan nol) kalau c adalah sebuah karakter digit (0 sampai dengan 9).islower() : menghasilkan nilai benar (bukan nol) jika c adalah huruf kecil (a sampai dengan z).isupper() : menghasilkan nilai benar (bukan nol) jika c adalah huruf kapital (A sampai dengan Z).

Jurusan MatematikaUniversitas Brawijaya Malang

String indeks

Page 11: Modul Praktikum Pemrograman Dasar

Modul Praktikum Pemrograman Dasar dengan Bahasa C 2012

tolower() : Jika c adalah huruf kapital maka hasil funngsi beripa huruf kecilnya. Apabila c tidak berupa huruf kapital, output fungsi sama dengan c.toupper() : Jika c adalah huruf kecil (a sampai dengan z) maka hasil fungsi berupa huruf kapitalnya. Kalau c tidak berupa huruf kecil, maka output fungsi akan sama dengan c.

Contoh penulisan: int isalpa(int c)

Contoh Program 1Program untuk menginputkan dan menampilkan string

Output setelah program dijalankan:Nama anda: Ummu HabibahHalo, Ummu Habibah mahasiswa matematika.

Contoh Program 2Program untuk menghitung jumlah karakter dari suatu string yang diinputkan memalui keybord.

Output setelah program dijalankan:Masukkan suatu kalimat.Saya akan menghitung jumlah karakternya.

Jurusan MatematikaUniversitas Brawijaya Malang

#include "stdio.h"#include "conio.h"

void main(){char nama[15]; clrscr(); printf("Nama anda: "); gets(nama); printf("Halo, %s mahasiswa matematika.\n", nama); getch();}

#include "stdio.h"#include "conio.h"#define MAKS 256void main(){int i,jumkar; char teks[MAKS]; clrscr(); puts("Masukkan suatu kalimat."); puts("Saya akan menghitung jumlah karakternya."); gets(teks); jumkar=0; for(i=0;teks[i];i++)jumkar++; printf("Jumlah karakter=%d\n",jumkar); getch();}

Page 12: Modul Praktikum Pemrograman Dasar

Modul Praktikum Pemrograman Dasar dengan Bahasa C 2012

Saya sedang belajar bahasa c.Jumlah karakter=29

3.6 Beberapa Fungsi Mengenai StringMenyalin suatu string ke string lain ataupun menghitung banyaknya karakter ke dalam suatu string sesungguhnya tidak perlu diimplementasikan sendiri karena Turbo C menyediakan fasilitas tersebut. Fungsi-fungsi tersebut tersimpan dalam header file “string.h”, diantaranya:1. strcpy() : digunakan untuk menyalin string asal ke variabel string tujuan.

Penulisan : strcpy(variabel_tujuan,”string_x”);2. strlen() : digunakan untuk memperoleh banyaknya karakter dalam string yang

merupakan argumennya.Penulisan : strlen(string_x);

3. strcat() : digunakan untuk menambahkan string sumber ke bagian akhir dari string tujuan.Penulisan : strcat(tujuan,sumber);

4. strcmp() : digunakan untuk membandingkan string str1 dengan string str2. Hasil fungsi bertipe int berupa nilai- negatif, jika str1 kurang dari str2- nol, jika str1 sama dengan str2- positif, jika str1 lebih dari str2Penulisan : var_int=strcmp(str1,str2);

5. strlwr() : digunakan untuk mengubah setiap huruf kapital dalam string_x menjadi huruf kecil.Penulisan : strlwr(string_x);

6. strupr() : digunakan untuk mengubah setiap huruf kecil dalam string_x menjadi huruf kapital.Penulisan : strupr(string_x);

Latihan1. Buatlah program untuk memasukkan suatu kalimat dari keybord dengan

menggunakan gets(). Kemudian melaporkan jumlah huruf kecil dan huruf kapitalnya.2. Buatlah program untuk menentukan suatu kalimat termasuk palindrom atau tidak.

Misal:Kalimat : KASUR RUSAKTermasuk : PALINDROM

Kalimat : MAKAN MALAMTermasuk : BUKAN PALINDROM

Ket: Palindrom adalah bila urutan kalimat dibalik akan menghasilkan kalimat yang sama.

3. Buatlah program yang menghasilkan output sebagai berikut:AKA

Jurusan MatematikaUniversitas Brawijaya Malang

Page 13: Modul Praktikum Pemrograman Dasar

Modul Praktikum Pemrograman Dasar dengan Bahasa C 2012

IKATIKAATIKAMATIKAEMATIKATEMATIKAATEMATIKAMATEMATIKA

BAB 4RECORD/STRUCT/STRUKTUR

Jurusan MatematikaUniversitas Brawijaya Malang

Page 14: Modul Praktikum Pemrograman Dasar

Modul Praktikum Pemrograman Dasar dengan Bahasa C 2012

Struktur adalah koleksi dari variabel yang dinyatakan dengan sebuah nama, dengan sifat setiap variabel dapat memiliki tipe yang berlainan. Struktur bisa dipakai untuk mengelompokkan beberapa informasi yang berkaitan menjadi sebuah kesatuan (Pada Bahasa Pascal, struktur disebut dengan record).

Contoh sebuah struktur adala informasi data tanggal, yang berisi:- Tanggal- Bulan, dan- Tahun.

4.1 Bentuk umum mendeklarasikan/mendefinisikan strukturStruct nama_tipe_struktur{tipe field1; tipe field2; ................... ................... tipe fieldN;}variabel_struktur1,...,variabel_strukturM;

Adapun variabel_struktur1,...,variabel_strukturM menyatakan bahwa variabel struktur yang dideklarasikan bisa lebih dari satu.

Contoh mendefinisikan struktur struct data_tunggal{int tanggal; int bulan; int tahun;};tgl_lahir;

Yang mendefinisikan tipe struktur bernama data_tunggal, yang terdiri dari tiga buah elemen (field) berupa tanggal, bulan dan tahun. Field adalah sebutan untuk elemen struktur. Sedangkan variabel tgl_lahir betipe struktur data_tunggal yang mengandung tiga field yaitu tanggal, bulan dan tahun.

Note: nama_tipe_struktur atau variabel_struktur boleh dihilangkan tetapi tidak boleh kedua-duanya dihilangkan.

4.2 Pemanggilan elemen strukturElemen struktur dapat dipanggil dalam program menggunakan bentukVariabel_struktur.nama_fieldAntara variabel_struktur dan nama_field dipisahkan dengan operator titik (disebut operator titik anggota struktur).

Sedangkan untuk memberikan data nama ke field nama, pernyataan yang diperlukan misalnya berupastrcpy(info_rekan.nama,”Ummu Habibah”);

Contoh Program 1Program untuk mengakses elemen struktur

Jurusan MatematikaUniversitas Brawijaya Malang

#include"stdio.h"#include"conio.h"#include"string.h"void main(){struct data_tanggal //definisi tipe data_tunggal {int tanggal; int bulan; int tahun; }; clrscr(); struct data_rekan //definisi tipe data_rekan {char nama[31]; struct data_tanggal tgl_lahir; };

struct data_rekan info_rekan; //deklarasi variabel

strcpy(info_rekan.nama,"UMMU HABIBAH");

info_rekan.tgl_lahir.tanggal=15; info_rekan.tgl_lahir.bulan=5; info_rekan.tgl_lahir.tahun=1985;

//penampilan elemen variabel struktur printf("Nama : %s\n",info_rekan.nama); printf("Tanggal lahir : %d-%d-%d\n", info_rekan.tgl_lahir.tanggal, info_rekan.tgl_lahir.bulan, info_rekan.tgl_lahir.tahun);getch();}

Page 15: Modul Praktikum Pemrograman Dasar

Modul Praktikum Pemrograman Dasar dengan Bahasa C 2012

Output setelah program dijalankanNama : UMMU HABIBAHTanggal lahir : 15-5-1985

Contoh Program 2

Jurusan MatematikaUniversitas Brawijaya Malang

#include"stdio.h"#include"conio.h"#include"string.h"#include"math.h"

struct{char nama[20];char alamat[20];float gaji;}pegawai1;

void main(){char g[15];float gj;clrscr();

printf("Nama pegawai 1:");gets(pegawai1.nama);printf("Alamat pegawai 1:");gets(pegawai1.alamat);printf("Gaji pegawai 1:");gets(g);

//konversi string ke floatgj=atof(g);pegawai1.gaji=gj;

printf("\n\nData yang telah anda ketikkan:");printf("\n%-20s%-30s%10.2f",pegawai1.nama,pegawai1.alamat,pegawai1.gaji);printf("\n\nTekan sembarang tombol");getch();}

Page 16: Modul Praktikum Pemrograman Dasar

Modul Praktikum Pemrograman Dasar dengan Bahasa C 2012

Output setelah program dijalankanNama pegawai 1:ummuAlamat pegawai 1:malangGaji pegawai 1:1000

Data yang telah anda ketikkan:ummu malang 1000.00

Tekan sembarang tombol

4.3 Array dan strukturPenggunaan struktur sering dikaitkan dengan array, membentuk array dari struktur. Contoh dari array struktur adalah array yang dipakai untuk menyimpan data rekan. Array yang diperlukan untuk masalah ini berupa

Jurusan MatematikaUniversitas Brawijaya Malang

#define MAKS 20...

struct data_rekan larik_rekan[MAKS];

Page 17: Modul Praktikum Pemrograman Dasar

Modul Praktikum Pemrograman Dasar dengan Bahasa C 2012

Setelah array larik_rekan dideklarasikan, ruang yang disediakan akan ditunjukkan pada gambar berikut

Tanggal lahirNo Nama Tanggal Bulan Tahun012...n

Array dari struktur

Contoh Program 3Program berikut merupakan contoh mengenai array dari struktur. Mula-mula seluruh data dimasukkan ke dalam array, kemudian ditampilkan sehingga membentuk tabel.

Jurusan MatematikaUniversitas Brawijaya Malang

#include"stdio.h"#include"conio.h"void main(){struct zodiak {char nama[11]; int tgl_awal; int bln_awal; int tgl_akhir; int bln_akhir; };

struct zodiak bintang= {"Sagitarius",23,11,20,12};

int tg_lhr,bl_lhr,th_lhr;clrscr();

printf("Bintang anda bukanlah %s\n",bintang.nama); getch(); }printf("Tanggal lahir anda (XX-XX-XXXX): "); scanf("%d-%d-%d",&tg_lhr,&bl_lhr,&th_lhr);

if((tg_lhr>=bintang.tgl_awal&& bl_lhr==bintang.bln_awal)|| (tg_lhr<=bintang.tgl_akhir&& bl_lhr==bintang.bln_akhir))

printf("Bintang anda adalah %s\n",bintang.nama); else printf("Bintang anda bukanlah %s\n",bintang.nama); getch(); }

Page 18: Modul Praktikum Pemrograman Dasar

Modul Praktikum Pemrograman Dasar dengan Bahasa C 2012

Output setelah program dijalankanTanggal lahir anda (XX-XX-XXXX): 15-05-1985Bintang anda bukanlah Sagitarius

4.3 Struktur dan fungsiPada bagian ini masalah yang dibahas meliputi Cara melewatkan elemen struktur meupun struktur ke dalam fungsi

Cara melewatkan elemen struktur ke dalam fungsi dapat dilihat pada contoh program berikutContoh program 4

Output setelah program dijalankanx, y semula --> 21, 34x, y kini --> 34, 21

Cara melewatkan struktur ke dalam fungsi.Contoh Program 5

Jurusan MatematikaUniversitas Brawijaya Malang

#include <stdio.h>#include <conio.h>void tukar_xy(int *x, int *y); /* deklarasi fungsi */

void main(){ struct koordinat { int x; int y; }; struct koordinat posisi = { 21, 34 }; clrscr(); printf("x, y semula --> %d, %d\n", posisi.x, posisi.y); tukar_xy(&posisi.x, &posisi.y); printf("x, y kini --> %d, %d\n", posisi.x, posisi.y); getch();}

void tukar_xy(int *x, int *y){ int z; z = *x; *x = *y; *y = z; }

#include"stdio.h"#include"conio.h"struct data_tanggal{int tanggal; int bulan; int tahun;};

void cetak_info_tanggal(struct data_tanggal unit_tgl);void main(){struct data_tanggal saat_proses = {12,9,1989}; clrscr(); cetak_info_tanggal(saat_proses); getch();}

void cetak_info_tanggal(struct data_tanggal unit_tgl){static char *nama_bulan[]= {"Kode bulan salah!", "Januari","Februari","Maret","April","Mei", "Juni","Juli","Agustus","September","Oktober", "November","Desember"};

printf("%d %s %d\n",unit_tgl.tanggal, nama_bulan[unit_tgl.bulan], unit_tgl.tahun);}

Page 19: Modul Praktikum Pemrograman Dasar

Modul Praktikum Pemrograman Dasar dengan Bahasa C 2012

Output setelah program dijalankan12 September 1989

Latihan 1. Kembangkanlah contoh program 2 sehingga dapat dipakai untuk menentukan

bintang kelahiran. Sebagai acuan gunakan data berikut:Aries : 21 Maret-19 AprilTaurus : 20 April-20 MeiGemini : 21 Mei-20 JuniCancer : 21 Juni-22 JuliLeo : 23 Juli-22 AgustusVirgo : 23 Agustus-22 SeptemberLibra : 23 September-22 OktoberScorpio : 23 Oktober-21 NovemberSagitarius : 22 November-21 DesemberAquarius : 20 Januari-18 FebruariPisces : 19 Februari-20 MaretGunakan array untuk mengimplementasikan program.

Jurusan MatematikaUniversitas Brawijaya Malang

Page 20: Modul Praktikum Pemrograman Dasar

Modul Praktikum Pemrograman Dasar dengan Bahasa C 2012

2. Buatlah program untuk menginputkan data-data nilai nama mahasiswa, QUIS, UTS dan UAS dalam suatu struktur daftar nilai mahasiswa dalam suatu kelas mata kuliah pemrograman dasar.

BAB 5FILE

File adalah sebuah organisasi dari sejumlah record. Masing-masing record bisa terdiri dari satu atau beberapa field. Setiap field terdiri dari satu atau beberapa byte.

Jurusan MatematikaUniversitas Brawijaya Malang

Page 21: Modul Praktikum Pemrograman Dasar

Modul Praktikum Pemrograman Dasar dengan Bahasa C 2012

5.1 Membuka File* Untuk membuka atau mengaktifkan file, fungsi yang digunakan adalah fungsi fopen().* File dapat berupa file biner atau file teks.* File biner adalah file yang pola penyimpanan di dalam disk dalam bentuk biner,

yaitu seperti bentuk pada memori (RAM) computer.* File teks adalah file yang pola penyimpanan datanya dalam bentuk karakter.* Penambahan yang perlu dilakukan untuk menentukan mode teks atau biner adalah

“t” untuk file teks dan “b” untuk file biner.* Prototype fungsi fopen() ada di header fungsi “stdio.h”* Bentuk umum :

file *fopen(char *namafile, char *mode);Keterangan :¨ namafile adalah nama dari file yang akan dibuka/diaktifkan.¨ mode adalah jenis operasi file yang akan dilakukan terhadap file.

5.2 Jenis-jenis operasi file :* r : menyarakan file hanya dapat dibaca (file harus sudah ada)* w : menyatakan file baru akan dibuat/diciptakan (file yang sudah ada akan

dihapus)* a : untuk membuka file yang sudah ada dan akan dilakukan proses penambahan

data (jika file belum ada, otomatis akan dibuat)* r+ : untuk membuka file yang sudah ada dan akan dilakukan proses pembacaan

dan penulisan.* w+ : untuk membuka file dengan tujuan untuk pembacaan atau penulisan. Jika file

sudah ada, isinya akan dihapus.* a+ : untuk membuka file, dengan operasi yang akan dilakukan berupa

perekaman maupun pembacaan. Jika file sudah ada, isinya akan dihapus.* Contoh :

pf = fopen(“COBA.TXT”, “w”);

5.3 Menutup File* Untuk menutup file, fungsi yang digunakan adalah fcloseØ.* Prototype fungsi fclose() ada di header file “stdio.h”* Bentuk Umum :

int fclose(FILE *pf);atau

int fcloseall(void);

5.4 MELAKSANAKAN PROSES FILEMenulis KarakterUntuk menulis sebuah karakter, bentuk yang digunakan adalah : putc(int ch, file *fp)Dimana:

* fp adalah pointer file yang dihasilkan oleh fopen().

Jurusan MatematikaUniversitas Brawijaya Malang

Page 22: Modul Praktikum Pemrograman Dasar

Modul Praktikum Pemrograman Dasar dengan Bahasa C 2012

* ch adalah karakter yang akan ditulis.

Contoh Program 1

5.6 Membaca KarakterUntuk membaca karakter dari file, fungsi yang digunakan adalah : getc(file *fp);Dimana:* fp adalah pointer file yang dihasilkan oleh fopen()* Fungsi feof(), digunakan untuk mendeteksi akhir file.* Pada saat membaca data foef(file *fp)

Contoh Program 2

Jurusan MatematikaUniversitas Brawijaya Malang

#include “stdio.h”#include “conio.h”#define CTRL_Z 26void main(){ file *pf; /* pointer ke file */

char kar;if((pf = fopen(“COBA.TXT”, “w”)) == NULL) /* ciptakan file */{ cputs(“File tak dapat diciptakan !\r\n”);

exit(1); /* selesai */}while((kar=getche()) != CTRL_Z)putc(kar, pf); /* tulis ke file */fclose(pf); /* tutup file */

}

#include “stdio.h”#include “conio.h”void main(){ file *pf; /* pointer ke file */

char kar;clrscr();

if((pf = fopen(“COBA.TXT”, “r”)) == NULL) /* buka file */{ cputs(“File tak dapat dibuka !\r\n”);

exit(1); /* selesai */}

while((kar=getc(pf)) != EOF)putch(kar); /* tampilkan ke layar */

fclose(pf); /* tutup file */}

Page 23: Modul Praktikum Pemrograman Dasar

Modul Praktikum Pemrograman Dasar dengan Bahasa C 2012

5.7 Membaca dan Menulis StringFungsi untuk membaca dan menulis string adalah : fgets() dan fputs()Bentuk Umum :fgets(char *str, int p, file *fp)fputs(char *str, file *fp)

5.8 Membaca dan Menulis Blok DataFungsi untuk membaca dan menulis blok data adalah : fread() dan fwrite()Bentuk umum :fread(void *buffer, int b_byte, int c, file *fp);fwrite(void *buffer, int b_byte, int c, file *fp);

Keterangan : * buffer adalah pointer ke sebuah area di memori yang menampung data yang

akan dibaca dari file.* b_byte adalah banyaknya byte yang akan dibaca atau ditulis ke file.* c adalah banyaknya item dibaca/ditulis.

Contoh Program 3

5.9 Membaca dan Menulis File yang TerformatJika diinginkan, data bilangan dapat disimpan ke dalam file dalam keadaan terformat.Fungsi yang digunakan adalah :fprintf(ptr_file, “string control”, daftar argument); fscanf(pts_file, “string control”, daftar argument);

Contoh Program 4

Jurusan MatematikaUniversitas Brawijaya Malang

#include “stdio.h”#include “conio.h” void main()

{ file *f_struktur; char jawaban; struct data_pustaka{ char judul[26];char pengarang[20];int jumlah;} buku;/* variabel buku bertipe struktur *//* buka file */

if((f_struktur = fopen(“DAFBUKU.DAT”, “wb”)) == NULL)/* buka file */ { cputs(“File tak dapat diciptakan !\r\n”);

exit(1); /* selesai */}

do{ clrscr();

cputs(“Judul Buku : “);gets(buku.judul);cputs(“Nama Pengarang : ”);gets(buku.pengarang);cputs(“Jumlah buku : “);scanf(“%i”, $buku.jumlah);fflush(stdin); /* Hapus isi penampung keyboard */

/*Rekam sebuah data bertipe struktur */

fwrite(&buku, sizeof(buku), 1, f_struktur);

cputs(“\r\nMau merekam data lagi (Y/T) ?”);

jawaban = getche();}while(jawaban == ‘Y’ || jawaban == ‘y’); fclose(f_struktur);

}

#include “stdio.h:#include “conio.h”void main(){ FILE *pformat;char jawaban;struct{ int x;int y;} koordinat;/* Buka dan ciptakan file. Periksa kalau gagal dibuka */if((pformat = fopen(“KOORDINAT.TXT”, “w”)) == NULL) /* buka file */{ cputs(“File tak dapat dibuka !\r\n”);exit(1); /* selesai */}do{ clrscr();cputs(“Masukkan data koordinat (bilangan integer)\r\n”);cputs(“Format : posisi x posisi y\r\n”);cputs(“Contoh : 20 30 [ENTER]\r\n”);scanf(“%i %i, &koordinat.x, &koordinat.y);fflush(stdin);/* Rekam ke file */fprintf(pformat, %5i %5i\n”, koordinat.x, koordinat.y);cputs(“\r\nMenyimpan data lagi (Y/T) ??”);jawaban = getche();}

Page 24: Modul Praktikum Pemrograman Dasar

Modul Praktikum Pemrograman Dasar dengan Bahasa C 2012

Contoh Program 5

Jurusan MatematikaUniversitas Brawijaya Malang

while(jawaban == ‘y’ || jawaban == ‘Y’);fclose(pformat);getch();}

#include <stdio.h>FILE *in;void BACA( int[ ] );void CETAK( int[ ] );void main() {int tabel[26] = {0};BACA(tabel);CETAK(tabel);}void BACA ( int huruf[] ) {char c;if (( in = fopen("data.txt" , "r")) == NULL)printf ("File tidak bisa dibaca\n");elsewhile ( (ch = fgetc(in)) != EOF ) {c = ( (( c >= 97) || ( c <= 122)) ? c - 32 : c );if ( (c >= 65) || (c <= 90) )++huruf [ c - 65 ];}fclose(in);}void CETAK ( int huruf[] ) {int counter;for ( counter = 0 ; counter <= 25 ; counter++ )printf ("\n%c%5d", counter + 65, huruf[counter] );}

Page 25: Modul Praktikum Pemrograman Dasar

Modul Praktikum Pemrograman Dasar dengan Bahasa C 2012

5.10 File SequensialFile sekuensial berisi rekord-rekord data yang tidak mengenal posisi baris atau nomor rekord pada saat aksesnya, dan setiap record dapat mempunyai lebar yang berbeda-beda. Akses terhadapnya selalu dimulai dari awal file dan berjalan satu persatu menuju akhir dari file. Dengan demikian, penambahan file hanya dapat dilakukan terhadap akhir file, dan akses terhadap baris tertentu harus dimulai dari awal file.

Fungsi baku yang terkait dengan file sekuensial ini antara lain adalah fprintf,fscanf, dan rewind . Program berikut menyajikan penanganan file sekuensial tentang data nasabah yang berisi tiga field, yaitu nomor identitas (account), nama (name), dan posisi tabungannya (balance) untuk (1) menyajikan yang tabungannya bernilai nol, (2) berstatus kredit, dan (3) berstatus debet. File data tersimpan dengan nama klien.dat.Contoh Program 6

Jurusan MatematikaUniversitas Brawijaya Malang

#include <stdio.h>void main() {int request, account;float balance;char name[25];FILE *cfPtr;if ( (cfPtr = fopen("klien.dat", "r+") ) == NULL )printf("File could not be opened\n");else {printf ( "Enter request\n""1 - List accounts with zero balances\n""2 - List accounts with credit balances\n""3 - List accounts with debit balances\n""4 - End of run\n? " ) ;scanf( "%d", &request );while (request != 4) {fscanf (cfPtr, "%d%s%f", &account, name, &balance);switch (request) {case 1:printf ("\nAccounts with zero balances:\n");while ( !feof(cfPtr) ) {if (balance == 0)printf ("%-10d%-13s7.2f\n", account, name, balance);fscanf (cfPtr, "%d%s%f", &account, name, &balance);}break;case 2:printf ("\nAccounts with credit balances:\n");while ( !feof(cfPtr) ) {if (balance < 0)printf ("%-10d%-13s7.2f\n", account, name, balance);fscanf (cfPtr, "%d%s%f", &account, name, &balance);}break;case 3:printf ("\nAccounts with debit balances:\n");while ( !feof(cfPtr) ) {if (balance > 0)printf ("%-10d%-13s7.2f\n", account, name, balance);fscanf (cfPtr, "%d%s%f", &account, name, &balance);}break;}

Page 26: Modul Praktikum Pemrograman Dasar

Modul Praktikum Pemrograman Dasar dengan Bahasa C 2012

Latihan1. Buatlah program untuk menambahkan tulisan

BORLAND INTERNATIONALKe dalam file COBA.TXT. Caranya ubahlah mode “w” pada contoh program 1 menjadi a dan gantilah komentar “File tak dapat diciptakan!” menjadi “File tak dapat dibuka”

2. Lihatlah isi file COBA.TXT dengan perintah TYPE atau dengan menjalankan contoh program 2. Perhatikan hasilnya.

Jurusan MatematikaUniversitas Brawijaya Malang 26

rewind(cfPtr);printf( "\n? ");scanf ("%d", &request);}printf ("End of run.\n");fclose(cfPtr);}}

Page 27: Modul Praktikum Pemrograman Dasar

Modul Praktikum Pemrograman Dasar dengan Bahasa C 2012

BAB 6TIPE POINTER

Konsep pointer sebenarnya cukup sederhana. Pointer sesungguhnya berisi alamat dari suatu data, bukan data sebagaimana variabel yang telah anda kenal dalam pembahasan sebelumnya. Setiap byte di dalam memori komputer memiliki sebuah alamat. Di dalam memori inilah variabel disimpan. Tetapi tentu saja programmer tidak perlu menyebutkan alamat dari suatu variabel secara explisit. Pada saat program dimuat di dalam memori, variabel akan diletakkan dengan sendirinya pada alamat tertentu. Suatu pointer di dalam program dimaksudkan untuk menunjuk suatu alamat memori. Misalnya kalau pint adalah pointer, dan vint adalah variabel yang terletak di memori beralamat 0xfff2, maka pointer pint dapat diatur agar menunjuk ke variabel vint. Seperti terlihat pada gambar dibawah ini:

Variabel pointer pint menunjuk ke variabel vint

3.7 Mengetahui Alamat Suatu VariabelAlamat suatu variabel dapat diketahui dengan mudah, caranya tambahkan operator

alamat, berupa simbol & di depan nama variabel.

6.2 Mengetahui Alamat Suatu VariabelPerlu diketahui, notasi 0x pada hasil program di depan menyatakan notasi heksadesimal.Pada C++, tanda & juga dipakai untuk referensi (alias dari suatu variabel).

6.3 Mendeklarasikan Variabel PointerSuatu variabel pointer dideklarasikan dengan bentuk sebagai berikut:

Dimana:tipe_data dapat berupa sembarang tipe data seperti halnya variabel bukan pointer.nama_variabel adalah variabel pointer.

Contoh:

Jurusan MatematikaUniversitas Brawijaya Malang 27

Tipe_data *nama_variabel;

Tipe *px;Char *pch1,pch2;

Page 28: Modul Praktikum Pemrograman Dasar

Modul Praktikum Pemrograman Dasar dengan Bahasa C 2012

6.4 Mengatur pointer agar menunjuk ke variabel lainAgar suatu pointer menunjuk ke variabel lain, mula-mula pointer harus diisi dengan alamat dari variabel yang akan ditunjuk. Untuk menyatakan alamat dari suatu variabel, operator & (operator alamat, yang bersufat unary) bisa dipergunakan, dengan cara menempatkan operator di depan nama variabel. Sebagai contoh, apabila x dideklarasikan sebagai variabel bertipe int, maka

&xBerarti “alamat dari variabel x”. Adapun contoh pemberian alamat ke suatu variabel pointer px (yang dideklarasikan sebagai pointer yang menunjuk ke data bertipe int) yaitu

px=&xPernyataan diatas berarti bahwa px diberi nilai berupa alamat dari variabel x. Setelah pernyataan tersebut dieksekusi baruah dapat dikatakan bahwa px menunjuk ke variabel x.

6.5 Mengakses isi suatu variabel melalui pointerKalau suatu variabel sudah ditunjuk oleh pointer, variabel yang ditunjuk oleh pointer dapat diakses melaui variabel itu sendiri (dikatakan sebagai pengaksesan langsung) ataupun melaui pointer (dikatakan sebagai pengaksesan tak langsung). Pengaksesan tak langsung dilakukan dengan menggunakan operator indirection (tak tangsung) berupa simbol * (bersifat unary). Contoh penerapan operator * yaitu:

*pxYang menyatakan “isi atau nilai variabel/data yang ditunjuk oleh pointer px”. Sebagai contoh jika y bertipe int, maka sesudah dua pernyataan berikut

px=&x;y=*px;

y akan berisi nilai yang sesuai dengan nilai x.

Contoh Program 1

Jurusan MatematikaUniversitas Brawijaya Malang 28

#include"stdio.h"#include"conio.h"void main(){int x,y; int *px; clrscr(); x=87; px=&x; y=*px; printf("Alamat x=%p\n",&x); printf("Isi px=%p\n",px); printf("Isi x=%d\n",x); printf("Nilai yang ditunjuk oleh px=%d\n",*px); printf("Nilai y=%d\n",y); getch(); }

Page 29: Modul Praktikum Pemrograman Dasar

Modul Praktikum Pemrograman Dasar dengan Bahasa C 2012

Output setelah program dijalankanAlamat x=FFF4Isi px=FFF4Isi x=87Nilai yang ditunjuk oleh px=87Nilai y=87

Pada program diatas, dua pernyataanpx=&x;y=*px;

sebenarnya dapat digantikan dengan sebuah pernyataan berupay=x.

Seandainya pada program 1 tidak terdapat pernyataan px=&x;

Namun terdapat pernyataan y=*px;

maka, y tidaklah berisi x, sebab px belum diatur agar menunjuk variabel x.

Kalau program melibatkan pointer dan pointer belum diinisialisi, ada kemungkinan akan terjadi masalah yang dinamakan dengan “bug” yang bisa menyebabkan komputer tak dapat dikendalikan lagi (“hang”).

6.6 Tipe variabel pointer dan tipe obyek yang ditunjukAntara tipe pointer (sesuai dengan pendeklarasian pointer) dan tipe obyek yang akan ditunjuk oleh pointer haruslah sejenis.Kalau misalnya pointer pu dimaksudkan untuk menunjuk data bertipe int maka data yang akan ditunjuk oleh pointer pu juga harus bertipe int. Sesuatu kesalahan akan terjadi kalau misalnya pointer float digunakan untuk menunjuk data bertipe int. Seperti pada contoh berikut:

Contoh program 2

Jurusan MatematikaUniversitas Brawijaya Malang 29

#include"stdio.h"#include"conio.h"void main(){float *pu; float nu; int u=1234; clrscr(); pu=&u; //pernyataan ini salah karena pu adalah pointer float, //sedangkan u bertipe int nu=*pu; printf("u=%d\n",u); printf("nu=%f\n",nu); getch(); }

Page 30: Modul Praktikum Pemrograman Dasar

Modul Praktikum Pemrograman Dasar dengan Bahasa C 2012

6.7 Mengubah isi suatu variabel melalui pointerContoh berikut memberikan gambaran tentang pengubahan isi suatu variabel secara tak langsung (melalui pointer). Mula-mula pd dideklarasikan sebagai pointer yang menunjuk ke suatu data bertipe float dan d sebagai variabel bertipe float. Selanjutnya

d=54.5;Digunakan untuk mengisikan nilai 54.5 secara langsung ke variabel d. Adapun

Pd=&d;Digunakan untuk memberikan alamat dari d ke pd. Dengan demikian pd mununjuk ke variabel d. Sedangkan berikutnya

*pd=*pd+10; (atau *pd+=10;)Merupakan instruksi untuk mengubah nilai variabel d secara tak langsung. Perintah di atas berarti “jumlahkan yang ditunjuk oleh pd dengan 10 dan kemudian berikan ke yang ditunjuk oleh pd”, atau identik dengan pernyataan

d=d+10;Akan tetapi, seandaniya tidak ada instruksi

pd=&d;Pernyataan

*pd=*pd+10;Tidaklah sama dengan

d=d+10;Contoh Program 3

Output setelah program dijalankanIsi d semula = 54.5Isi d kini = 64.5

6.8 Pointer dan ArrayHubungan antara pointer dan array pada C sangatlah erat sebab sesungguhnya array secara internal akan diterjemahkan dalam bentuk pointer. Pembahasan berikut akan memberikan gambaran hubungan antara pointer dan array.Misalnya dideklarasikan didalam suatu fungsi

static int tgl_lahir[3]={01,09,64};Dan

int*ptgl;Kemudian diberikan instruksi

ptgl=&tgl_lahir[0];

Jurusan MatematikaUniversitas Brawijaya Malang 30

#include"stdio.h"#include"conio.h"void main(){float d,*pd; clrscr(); d=54.5; printf("Isi d semula = %g\n",d); pd=&d; *pd=*pd+10; printf("Isi d kini = %g\n",d); getch();}

Page 31: Modul Praktikum Pemrograman Dasar

Modul Praktikum Pemrograman Dasar dengan Bahasa C 2012

Maka ptgl akan berisi alamat dari elemen array tgl_lahir yang berindeks nol. Instruksi diatas bisa juga ditulis menjdi

ptgl=tgl_lahir;Sebab nama array tanpa tanda kurung menyatakan alamat awal dari array. Sesudah penugasan seperti di atas,

*ptglDengan sendirinya menyatakan elemen pertama (berindeks sama dengan nol) dari array tgl_lahir. Hal ini bisa dilihat melalui bukti program berikut:

Contoh Program 4

Output setelah program dijalankanNilai yang ditunjuk oleh ptgl = 24Nilai dari tgl_lahir[0] = 24

Kalau ingin menampilkan seluruh elemen array tgl_lahir, perintah yang biasa digunakan berupa

for(i=0;i<3;i++)printf(“%d”,tgl_lahir[i]);

Dengan menggunakan pointer,tgl_lahir[i]

dapat digantikan menjadi*(ptgl+i)

Dengan terlebih dahulu mengatur ptgl agar menunjuk array tgl_lahir sehingga penulisan instruksi penampilan isi array tgl_lahir dapat diubah menjadi

ptgl= tgl_lahir;for(i=0;i<3;i++)printf(“%d*(ptgl+i));

Jurusan MatematikaUniversitas Brawijaya Malang 31

#include"stdio.h"#include"conio.h"void main(){static int tgl_lahir[]={24,6,1965}; int *ptgl; clrscr(); ptgl=tgl_lahir; //ptgl berisi alamat array printf("Nilai yang ditunjuk oleh ptgl = %d\n",*ptgl); printf("Nilai dari tgl_lahir[0] = %d\n",tgl_lahir[0]); getch();}

Page 32: Modul Praktikum Pemrograman Dasar

Modul Praktikum Pemrograman Dasar dengan Bahasa C 2012

Contoh Program 5

Output setelah program dijalankan2461965

Secara umum operasi pointer bisa diterangkan sebagai berikut. Katakanlah a adalah suatu array, dan pa adalah pointer yang menunjuk array a, maka

*(pa+i)Akan menyatakan elemen array dengan indeks sama dengan i. Jadi

*(pa+0) identik dengan a[0]*(pa+1) identik dengan a[1]*(pa+2) identik dengan a[2]

Ungkapan seperti pa+i

Memiliki arti “tambahkan nilai pa (berisi alamat) dengan i kali ukuran dari obyek yang ditunjuk oleh pa”. Kalau pa dideklarasikan sebagai

int *paMaka obyek dari pa adalah data int.Cara lain dalam menampilkan isi suatu array yaitu dengan menaikkan isi variabel pointer memakai operator ++. Contoh berikut ,erupakan bentuk lain dari program 5. Pada program ini

*(ptgl+i)Diganti menjadi

ptgl++Contoh Program 6

Jurusan MatematikaUniversitas Brawijaya Malang 32

#include"stdio.h"#include"conio.h"void main(){static int tgl_lahir[]={24,6,1965}; int i; int *ptgl; clrscr(); ptgl=tgl_lahir; for(i=0;i<3;i++) printf("%d\n",*(ptgl+i)); getch(); }

#include"stdio.h"#include"conio.h"void main(){static int tgl_lahir[]={24,6,1965}; int i; int *ptgl; clrscr();

Page 33: Modul Praktikum Pemrograman Dasar

Modul Praktikum Pemrograman Dasar dengan Bahasa C 2012

Output setelah program dijalankan2461965

Latihan1. Apa output dari program berikut:

Jurusan MatematikaUniversitas Brawijaya Malang 33

#include"stdio.h"#include"conio.h"void main(){int z,s,*pz,*ps; z=20; s=30; pz=&z; ps=&s; *pz=*pz+*ps; printf("z = %d,s=d\n",z,s); getch();}

ptgl=tgl_lahir; for(i=0;i<3;i++) printf("%d\n",*(ptgl+i)); getch(); }