117
[REFERENSI PEMROGRAMAN BAHASA C] Pemrograman Dasar C PERCOBAAN 1 1.1 JUDUL : FUNGSI & TIPE VARIABEL DASAR 1.2 TUJUAN : Mahasiswa mampu mempelajari dan mengamati penggunaan fungsi-fungsi dasar C seperti main(), printf(), getch(), getche() yang dipadukan dengan tipe 1ariable dasar yaitu int (bilangan bulat) dan float (bilangan pecahan) 1.3 TEORI : Struktur suatu bahasa C adalah terdiri dari bagian #include, deklarasi konstanta, deklarasi variable, deklarasi fungsi-fungsi, dan fungsi main().Void berarti fungsi tersebut tidak mempunyai nilai balik, karena setiap fungsi dalam C bila tidak tidak diberikan void di depannya maka dianggap bertipe integer. Untuk fungsi- fungsi standar seperti printf()&scanf() menggunakan stdio.h sedangkan fungsi clrscr() dan getch() menggunakan conio.h, Politeknik Elektronika Negeri Surabaya 1

Buku Praktikum Pemrograman Dasar

Embed Size (px)

DESCRIPTION

Memenuhi Project Mata Kuliah Pemrograman Dasar

Citation preview

Page 1: Buku Praktikum Pemrograman Dasar

[REFERENSI PEMROGRAMAN BAHASA C]Pemrograman Dasar C

PERCOBAAN 1

1.1 JUDUL : FUNGSI & TIPE VARIABEL DASAR

1.2 TUJUAN : Mahasiswa mampu mempelajari dan mengamati penggunaan fungsi-fungsi dasar C seperti main(), printf(), getch(), getche() yang dipadukan dengan tipe 1ariable dasar yaitu int (bilangan bulat) dan float (bilangan pecahan)

1.3 TEORI : Struktur suatu bahasa C adalah terdiri dari bagian #include, deklarasi konstanta, deklarasi variable, deklarasi fungsi-fungsi, dan fungsi main().Void berarti fungsi tersebut tidak mempunyai nilai balik, karena setiap fungsi dalam C bila tidak tidak diberikan void di depannya maka dianggap bertipe integer. Untuk fungsi-fungsi standar seperti printf()&scanf() menggunakan stdio.h sedangkan fungsi clrscr() dan getch() menggunakan conio.h,

1.4 PROGRAM PERCOBAAN 1.4.1 Membuat program utama dengan menggunakan fungsi

main() dan mencetak string dengan karakter khusus ‘\n’, untuk ganti baris baru. Karakter khusus lainnya adalah ‘/*’ dan ‘*/’ yaitu digunakan untuk baris komentar dimana tidak dijalankan. Sedangkan fungsi getch() digunakan untuk pause atau berhenti sejenak menunggu tombol Enter ditekan.

Politeknik Elektronika Negeri Surabaya 1

Page 2: Buku Praktikum Pemrograman Dasar

[REFERENSI PEMROGRAMAN BAHASA C]Pemrograman Dasar C

/*nama File : INTRO1.C*/#include<stdio.h>#include<conio.h>void main(){printf("Assalamualaikum!\n");printf("Hello world\n”);getch();}

1.4.2 Menggunakan variable integer (bulat) sebagai penyimpanan hasil penambahan dan pengurangan, kemudian menampilkan hasilnya dengan fungsi printf(). Menggunakan karakter format khusus ‘%d’.

/*Nama File : INTRO2.C*/#include<stdio.h>#include<conio.h>

void main(){int jumlah, selisih;

jumlah=123+456;

Politeknik Elektronika Negeri Surabaya 2

Page 3: Buku Praktikum Pemrograman Dasar

[REFERENSI PEMROGRAMAN BAHASA C]Pemrograman Dasar C

selisih=456-123;printf("Jumlah dari 123 dan 445 adalah %d\n\n",jumlah);printf("Selisih dari 123 dan 445 adalah %d\n",selisih);

getch();}

1.4.3 Mengisi suatu variable menggunakan assignment operator ‘=’ (sama dengan), kemudian dilakukan proses perhitungan, penjumlahan, dan pengurangan, dimana hasil penjumlahan disimpan pada variable jumlah, dan hasil pengurangan disimpan pada variable selisih. Setelah hasilnya didapatkan maka hasilnya dicetak menggunakan karakter format khusus ‘%d’. Operator ‘=’ dapat digunakan pada baris deklarasi variable seperti pada percobaandibawah ini, yaitu pada int var1=339.

/*Nama File : INTRO3.c*/#include<stdio.h>#include<conio.h>

void main()

Politeknik Elektronika Negeri Surabaya 3

Page 4: Buku Praktikum Pemrograman Dasar

[REFERENSI PEMROGRAMAN BAHASA C]Pemrograman Dasar C

{int var1=339, var2, jumlah, selisih;var2=259;jumlah=var1+var2;selisih=var1-var2;printf("Hasil penjumlahan %d dan %d = %d\n\n",var1,var2,jumlah);printf("Hasil pengurangan %d dan %d = %d\n\n",var1,var2,selisih);

getch();}

1.4.4 Penggunaan fungsi getche() untuk mengambil karakter tombol yang ditekan, karakter disimpan pada suatu variable dan dapat digunakan untuk keperluan pemrograman, misalnya mendeteksi penekanan tombol tertentu. Untuk dapat mencetak karakter tersebut maka digunakan karakter format khusus ‘%c’, untuk mencetak 1 karakter saja.

/*Nama File : INTRO4.c*/#include<stdio.h>#include<conio.h>

Politeknik Elektronika Negeri Surabaya 4

Page 5: Buku Praktikum Pemrograman Dasar

[REFERENSI PEMROGRAMAN BAHASA C]Pemrograman Dasar C

void main(){char karakter;

printf("\nMempelajari penggunaan getche() dengan variable");

printf("\nTekan tombol yang dikehendaki ");karakter=getche();printf("\n\nAnda menekan tombol %c",karakter);getch();}

1.4.5 Menghitung perkalian dan pembagian suatu bilangan menggunakan variable float (pecahan), dan mencetak hasilnya menggunakan karakter format khusus ‘%f’ dengan menggunakan fungsi clrscr() yang digunakan untuk membersihkan tampilan yang diberikan, terutama pada hasil pembagian.

/*Nama File : INTRO5.C*/#include<stdio.h>#include<conio.h>void main()

Politeknik Elektronika Negeri Surabaya 5

Page 6: Buku Praktikum Pemrograman Dasar

[REFERENSI PEMROGRAMAN BAHASA C]Pemrograman Dasar C

{float harga, jumlah, total, hasil;harga=132.055;jumlah=50;total=harga*jumlah;hasil=total/jumlah;

printf("Harga total = %f\n\n",total);printf("Hasil pembagian = %f",hasil);getch();}

Politeknik Elektronika Negeri Surabaya 6

Page 7: Buku Praktikum Pemrograman Dasar

[REFERENSI PEMROGRAMAN BAHASA C]Pemrograman Dasar C

PERCOBAAN 2

2.1 JUDUL: EXPRESSION (OPERATOR & OPERAND) & STATEMENT

2.2 TUJUAN : Mempelajari dan mengamati penggunaan operator aritmatika seperti +, -, *, / dan % (modulus) dan operator unary seperti – (minus), ++ (increment) dan – (decrement) yang dipadukan dengan tipe variable dasar yaitu int (bilangan bulat) dan float (presisi tunggal), double (presisi ganda) dan char.

2.3 TEORI: Suatu Expression adalah terdiri atas dua bagian yaitu operator dan operand, yang dikombinasikan menjadi satu. Operator adalah symbol yang digunakan untuk melakukan proses operasi satu atau beberapa operand. Operand adalah bagian yang paling sederhana dari Expression. Operand dapat berupa konstanta seperti 339, 55, 132 dan seterusnya atau berupa variable seperti x, y, jumlah, selisih dan sebagainya. Statement (steitmen) adalah unsur dasar pembentuk suatu program. Ada 3 jenis statement, yaitu: expression statement, compound statement, dan control statement. Suatu expression statement adalah suatu expression yang diikuti dengan tanda titik koma [;] (semi colon). Suatu compound statement (dikenal dengan block statement) adalah dua atau lebih statement yang dikelompokkan menjadi satu dengan cara member batas tanda kurung awal dan tanda kurung akhir, sehingga tidak perlu diakhiri dengan tanda titik koma pada akhir conmpund. Control statement

Politeknik Elektronika Negeri Surabaya 7

Page 8: Buku Praktikum Pemrograman Dasar

[REFERENSI PEMROGRAMAN BAHASA C]Pemrograman Dasar C

adalah statement yang mengedalikan langkah-langkah program, contohnya for loop, while loop, dan if-else. Symbolic Constant adalah suatu nama dimana digunakan untuk menggantikan suatu nilai tertentu, contohnya #define PI 3.14, untuk membedakan dengan variable maka nama ditulis dengan huruf besar seperti PI.

2.4 PROGRAM PERCOBAAN

2.4.1 Mengamati tipe variable yang digunakan untuk menyimpan suatu nilai sesuai dengan tipe dari masing-masing nilai yang diberikan pada suatu variable, kemudian mencetak isi variable tersebut dengan melihat hasilnya. Misalnya bilangan bulat, maka dapat ditampung menggunakan tipe variable integer yang mempunyai jangkauan dari -32768 sampai 32767. Bilangan pecahan dengan presisi tunggal dapat disimpan pada tipe variable dengan tipe float yang mempunyai jangkauan 3.4 x 10-38 sampai 3.4 x 1038 (7 angka presisi), bilangan pecahan dengan presisi ganda dapat disimpan pada tipe variable dengan tipe double yang mempunyai jangkauan dari 1.7 x 10-308 sampai dengan 1.7 x 10308 (15 angka presisi ), long double mempunyai jangkauan dari 3.4 x 10-4932 sampai dengan 3.4 x 10 4932 (19 angka presisi) dan tipe variable char dengan jangkuan nilai dari -128 sampai 127 (satu karakter).

/* Nama File : EXPRESS1.C */#include <stdio.h>#include <conio.h>void main()

Politeknik Elektronika Negeri Surabaya 8

Page 9: Buku Praktikum Pemrograman Dasar

[REFERENSI PEMROGRAMAN BAHASA C]Pemrograman Dasar C

{

int bulat= 32767;float pecahan= 339.1234567;double ganda= 3.4567890e+11;char karakter= 'W';

printf("Variabel bilangan bulat = %d\n\n", bulat);

printf("Variabel bilangan pecahan = %f\n\n", pecahan);

printf("Variabel bilangan pecahn2 = %lf\n\n", ganda);

printf("Variabel bilangan karakter = %c\n\n", karakter);

getch();}

2.4.2 Mengamati hasil dari suatu persamaan aritmatika, dimana nilai-nilai operandnya dimasukkan melalui keyboard serta hirarki dari operator.

/* Nama File : EXPRESS2.C */

Politeknik Elektronika Negeri Surabaya 9

Page 10: Buku Praktikum Pemrograman Dasar

[REFERENSI PEMROGRAMAN BAHASA C]Pemrograman Dasar C

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

int a,b,c,d,hasil;

printf("\nMasukkan nilai a b=");scanf("%d %d", &a,&b);printf("\nMasukkan nilai c d=");scanf("%d %d", &c,&d);

hasil= a-b;printf("\nHasil dari: a-b adalah %d\n", hasil);hasil= c+d;printf("\nHasil dari: c+d adalah %d\n", hasil);hasil= b*c;printf("\nHasil dari: b*c adalah %d\n", hasil);hasil= a/c;printf("\nHasil dari: a/c adalah %d\n", hasil);hasil= a+b*c;printf("\nHasil dari: a+b*c adalah %d\n", hasil);hasil= a*b+c*d;printf("\nhasil dari: a*b+c*d adalah %d\n", hasil);getch();

}

Politeknik Elektronika Negeri Surabaya 10

Page 11: Buku Praktikum Pemrograman Dasar

[REFERENSI PEMROGRAMAN BAHASA C]Pemrograman Dasar C

2.4.3 Mengamati perbedaan penggunaan tipe variable integer dan tipe variable flot pada proses pembagian, bila pembagian dilakukan menggunakan tipe integer maka pecahan akan dibuang.Perhatikan hasil dari pembagian isi variable a dibagi dengan d. Perhatikan juga penggunaan operator unari minus (-).

/* Nama File : EXPRESS3.C */#include <stdio.h>#include <conio.h>void main(){

int a=12, b=8, hasil;float c=11.0, d=7.0;

printf("6+a/5*b= %d\n\n", 6+a/5*b);printf("a/b*b= %d\n\n", a/b*b);printf("c/d*d= %f\n\n", c/d*d);

Politeknik Elektronika Negeri Surabaya 11

Page 12: Buku Praktikum Pemrograman Dasar

[REFERENSI PEMROGRAMAN BAHASA C]Pemrograman Dasar C

printf("-a= %d\n", -a);getch();

}

2.4.4 Untuk menghitung sisa dari hasil bagi maka telah disediakan operator modulus yaitu (%), dimana hasil dari operator ini akan menghasilkan sisa pembagian. Jika operator modulus ingin ditampilakan, maka penulisan operator ini harus ditulis dua kali (%%).

/* Nama File : EXPRESS4.C */#include <stdio.h>#include <conio.h>void main(){

int a=14,b=2,c=3,d=4;printf("a%%b= %d\n\n", a%b);printf("a%%c= %d\n\n", a%c);printf("a%%d= %d\n\n", a%d);printf("a/d*d+a%%d= %d\n", a/d*d+a%d);

getch();}

Politeknik Elektronika Negeri Surabaya 12

Page 13: Buku Praktikum Pemrograman Dasar

[REFERENSI PEMROGRAMAN BAHASA C]Pemrograman Dasar C

2.4.5 Suatu variable dapat menampung isi dari suatu tipe variable yang berbeda asalkan tipe variable tersebut lebih besar atau sama dengan variable sumber. Contoh tipe variable float dapat menampung isi dari tipe variable integer dan tidak sebaliknya.

/* Nama File : EXPRESS5.C */#include <stdio.h>#include <conio.h>void main(){

float p1= 123.45678, p2;int b1, b2= -150;

b1=p1;printf("%f disimpan ke int menghasilkan %d\n\n",p1,b1);

p1=b2;printf("%f disimpan ke float menghasilkan %d\n\n", p1,b2);

p1=b2/100;printf("%f dibagi 100 menghasilkan %d\n\n", p1,b2);

p2=b2/100.0;

Politeknik Elektronika Negeri Surabaya 13

Page 14: Buku Praktikum Pemrograman Dasar

[REFERENSI PEMROGRAMAN BAHASA C]Pemrograman Dasar C

printf("%f dibagi 100 menghasilkan %d\n\n", p2,b2);

getch();}

Politeknik Elektronika Negeri Surabaya 14

Page 15: Buku Praktikum Pemrograman Dasar

[REFERENSI PEMROGRAMAN BAHASA C]Pemrograman Dasar C

PERCOBAAN 3

3.1. JUDUL : RELATIONAL, LOGICAL, ASSIGNMENT, DAN CONDITIONAL

3.2. TUJUAN : Mempelajari dan mengamati penggunaan operator yang digunakan sebagai pembanding antara operand satu dengan operand yang lain, yang dapat berupa sebagai variable atau konstanta.

3.3. TEORI :

Relational operator adalah operator yang dapat digunakan untuk membandingkan antara dua operand, misalkan lebih besar mana antara a dan b, manakah yang lebih kecil antara c dan 12. Dari perbandingan diatas maka akan didapatkan suatu hasil yaitu benar atau salah (true/ false) yang berupa nilai 1 (selain nol) untuk benar dan 0 untuk salah. Operator ini terdiri dari tanda-tanda khusus yaitu: < (lebih

kecil), > (lebih besar), == (sama dengan), <= ( lebih kecil

atau sama dengan), >= (lebih besar atau sama dengan) dan != (tidak sama dengan). Sedangkan untuk mengkombinasikan antara operator-operator diatas maka dapat digunakan Logical Operator yang terdiri dari && (and/ dan). || (or/ atau) dan ! (not/ tidak). Assignment Operator identic dengan tanda ‘=’ (sama dengan), operator ini dapat dipadukan dengan operator aritmatika sehingga menjadi : +=, -=, *=, /=, dan %=.

Conditional Operator adalah operator yang dapat digunakan untuk menentukan (pengambilan keputusan) secara sederhana (satu baris statement), dimana hanya digunakan karakter khusus ‘?’ (tanda tanya) dan ‘:’ (colon/ titik dua).

Politeknik Elektronika Negeri Surabaya 15

Page 16: Buku Praktikum Pemrograman Dasar

[REFERENSI PEMROGRAMAN BAHASA C]Pemrograman Dasar C

3.4 PROGRAM PERCOBAAN :

3.4.1 Mengamati hasil dari perbandingan dua operand yang nilainya dimasukkan melalui keyboard, dimana perbandingan dilakukan menggunakan semua Relational Operator, yaitu meliputi operator-operator <, >, <=, >= dan !=.

/*nama file: OPER1.C*/#include<stdio.h>#include<conio.h>

void main(){int x,y;printf("masukkan nilai x = "); scanf("%d",&x);printf("masukkan nilai y = "); scanf("%d",&y);printf("\nnilai %d < %d adalah %d\n", x, y, x < y);printf("\nnilai %d > %d adalah %d\n", x, y, x > y);printf("\nnilai %d == %d adalah %d\n", x, y, x == y);printf("\nnilai %d <= %d adalah %d\n", x, y, x <= y);printf("\nnilai %d >= %d adalah %d\n", x, y, x >= y);printf("\nnilai %d != %d adalah %d\n", x, y, x != y);

Politeknik Elektronika Negeri Surabaya 16

Page 17: Buku Praktikum Pemrograman Dasar

[REFERENSI PEMROGRAMAN BAHASA C]Pemrograman Dasar C

getch();}

3.4.2 Mengamati hasil dari perbandingan dua operand yang

nilainya dimasukkan melalui keyboard., dimana perbandingan dilakukan menggunakan semua Logical Operator, yaitu meluputi operator-operator &&, ||, dan

!.

/*nama file: OPER2.C*/

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

void main(){int x,y;

Politeknik Elektronika Negeri Surabaya 17

Page 18: Buku Praktikum Pemrograman Dasar

[REFERENSI PEMROGRAMAN BAHASA C]Pemrograman Dasar C

printf("masukkan nilai x = "); scanf("%d",&x);printf("masukkan nilai y = "); scanf("%d",&y);printf("\nnilai dari %d & %d adalah %d\n",x,y,x & y);printf("\nnilai dari %d | %d adalah %d\n",x,y,x | y);printf("\nnilai dari %d && %d adalah %d\n",x,y,x && y);printf("\nnilai dari %d || %d adalah %d\n",x,y,x || y);printf("\nnilai dari !0 adalah %d\n", !0);printf("\nnilai dari !1 adalah %d\n", !1);printf("\nnilai dari !%d adalah %d\n",x,!x);printf("\nnilai dari !%d adalah %d\n",y,!y);getch();}

3.4.3 Untuk mendapatkan kombinasi dua atau beberapa operator relasional maka dapat digunakan operator logika,

Politeknik Elektronika Negeri Surabaya 18

Page 19: Buku Praktikum Pemrograman Dasar

[REFERENSI PEMROGRAMAN BAHASA C]Pemrograman Dasar C

sehingga didapatkan beberapa kondisi harus dipenuhi untuk mendapatkan nilai 1 (benar)

/*nama file: OPER3.C*/#include<stdio.h>#include<conio.h>void main(){int x,y,n,m;printf("masukkan nilai x = "); scanf("%d",&x);printf("masukkan nilai y = "); scanf("%d",&y);

n=(x < 10) && (y > 10);m=(x > 10) || (y < 10);printf("\nnilai dari %d < 10 && %d > 10 adalah = %d",x,y,n);printf("\nnilai dari %d > 30 || %d < 70 adalah = %d\n",x,y,m);getch();}

Politeknik Elektronika Negeri Surabaya 19

Page 20: Buku Praktikum Pemrograman Dasar

[REFERENSI PEMROGRAMAN BAHASA C]Pemrograman Dasar C

3.4.4 Mengamati penggunaan operator assignment, yang dipadukan dengan operator aritmatika.

/*nama file: OPER4.C*/

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

{int a,b,x,y;

printf("masukkan nilai a = "); scanf("%d",&a);printf("masukkan nilai b = "); scanf("%d",&b);printf("masukkan nilai x = "); scanf("%d",&x);printf("masukkan nilai y = "); scanf("%d",&y);printf("\nnilai y dari y *= x adalah = %d\n",y*=x);printf("\nnilai y dari y /= x adalah = %d\n",y/=x);printf("\nnilai y dari y += x adalah = %d\n",y+=x);printf("\nnilai y dari y -= x adalah = %d\n",y-=x);printf("\nnilai y dari y %%= x adalah = %d\n",y%=x);puts("");

Politeknik Elektronika Negeri Surabaya 20

Page 21: Buku Praktikum Pemrograman Dasar

[REFERENSI PEMROGRAMAN BAHASA C]Pemrograman Dasar C

printf("\nnilai y dari y*=(a+b) adalah = %d\n", y*=(a+b));printf("\nnilai y dari y/=(a-b) adalah = %d\n", y/=(a-b));printf("\nnilai y dari y+=(a%b) adalah = %d\n", y+=(a%b));printf("\nnilai y dari y-=(a/b) adalah = %d\n", y-=(a/b));getch();}

3.4.5 Mengamati penggunaan operator conditional untuk menentukan suatu keputusan mana yang benar dan yang salah, dimana operator ini merupakan prinsip dasar dari statement “if-else” .

/*nama file: OPER5.C*/

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

Politeknik Elektronika Negeri Surabaya 21

Page 22: Buku Praktikum Pemrograman Dasar

[REFERENSI PEMROGRAMAN BAHASA C]Pemrograman Dasar C

void main(){int a,b,c,d;

printf("masukkan nilai a = "); scanf("%d", &a);printf("masukkan nilai b = "); scanf("%d", &b);printf("masukkan nilai c = "); scanf("%d", &c);printf("masukkan nilai d = "); scanf("%d", &d);printf("\nnilai a dibanding b adalah a lebih");printf("%s daripada b", (a>b)?"besar":"kecil");printf("\nnilai c dibanding d adalah c lebih");printf("%s daripada d\n", (c<d)?"kecil":"besar");getch();}

Politeknik Elektronika Negeri Surabaya 22

Page 23: Buku Praktikum Pemrograman Dasar

[REFERENSI PEMROGRAMAN BAHASA C]Pemrograman Dasar C

PERCOBAAN 4

1.1. JUDUL : STATEMENT PENENTU KEPUTUSAN

1.2. TUJUAN : Mempelajari dan mengamati penggunaan statement penentu keputusan yaitu statement if-else. Memanfaatkan statement if-else untuk membuat proses perulangan. Mempelajari statement if-else bersarang (nested if). Mempelajari bentuk lain dari statement if-else yaitu statement else-if. Mempelajari penggunaan dari statement switch-case sebagai alternated pengganti dari statement else-if.

1.3. TEORI : Statement if-else digunakan untuk menentukan pilihan dari suatu kondisi yang diberikan. Cara kerjanya adalah melakukan perbandingan menggunakan Relational Operator dan/atau Logical Operator, apabila suatu kondisi terpenuhi (benar) maka akan mengerjakan proses A dan apabila kondisi tidak terpenuhi (salah) maka tidak akan mengerjakan proses A atau dapat juga mengerjakan proses lain misalkan proses B. Statement if-else bersarang merupakan kombinasi dari beberapa if-else, dimana apabila ada beberapa kondisi yang harus diuji kebenarannya secara bersama (if difalam if). Statement else-if adalah cara lain dari bentuk if-else, yang digunakan untuk menentukan satu kondisi yang benar dari bebera[a kondisi yang tersedia. Statement switch-case adalah bentuk lain dari statement else-if, dengan mendaftar kondisi secara vertical dalam satu kolom sehingga memudahkan dalam hal evaluasi program.

Politeknik Elektronika Negeri Surabaya 23

Page 24: Buku Praktikum Pemrograman Dasar

[REFERENSI PEMROGRAMAN BAHASA C]Pemrograman Dasar C

1.4. PROGRAM PERCOBAAN

1.4.1. Mengamati penggunaan statement penentu keputusan sederhana, yaitu menentukan apakah bilangan yang dimasukkan lebih kecil dari nol?

/* nama file: IF-ELSE1.C */

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

void main(){int bil, absolut;printf("masukkan bilangan bulat: ");scanf("%d",&bil);

if(bil < 0) absolut = -bil;printf("nilai absolute dari %d adalah = %d\n", bil, absolut);

getch();

}

1.4.2. Suatu bilangan apabila dapat dibagi dengan bilangan yang lain, maka tidak menghasilkan suatu sisa nilai,

Politeknik Elektronika Negeri Surabaya 24

Page 25: Buku Praktikum Pemrograman Dasar

[REFERENSI PEMROGRAMAN BAHASA C]Pemrograman Dasar C

sehingga dengan cara ini program dapat menentukan apakah suatu bilangan habis dibagi atau tidak.

/* nama file: IF-ELSE2.C */

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

void main(){int pembilang, penyebut, sisa;

printf("masukkan pembilang: ");scanf("%d",&pembilang);printf("masukkan penyebut: ");scanf("%d",&penyebut);

sisa = pembilang % penyebut;

puts("");if(sisa)printf("%d tidak habis dibagi %d\n", pembilang, penyebut);elseprintf("%d habis dibagi %d\n", pembilang, penyebut);getch();}

Politeknik Elektronika Negeri Surabaya 25

Page 26: Buku Praktikum Pemrograman Dasar

[REFERENSI PEMROGRAMAN BAHASA C]Pemrograman Dasar C

1.4.3. Menentukan keputusan bahwa suatu nilai termasuk dalam suatu batas jangkauan suatu nilai tertentu. Contoh, semua karakter huruf kecil mempunyai kode ASCII mulai dari huruf a sampai z, yaitu dari 97 sampai 122

/* nama file: IF-ELSE3.C */

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

void main(){char c;printf("masukkan suatu karakter: "); scanf("%c", &c);if(c>='a' && c<='z')printf("\nkarakter tersebut termasuk huruf kecil.\n");elseprintf("\nkarakter tersebut bukan huruf kecil.\n");getch();}

Politeknik Elektronika Negeri Surabaya 26

Page 27: Buku Praktikum Pemrograman Dasar

[REFERENSI PEMROGRAMAN BAHASA C]Pemrograman Dasar C

1.4.4. Suatu proses ada kalanya dilakukan berulang, untuk mendapatkan nilai perhitungan yang lebih teliti (iterasi) atau untuk mengolah suatu data nilai secara table seperti pada daftar nilai siswa. Berikut diberikan contoh sederhana, yaitu menampilkan penambahan suatu nilai index dimana sering digunakan untuk proses perulangan. Dengan menggunakan kombinasi if-goto maka didapatkan suatu statement perulangan.

/* nama file: IF-ELSE4.C */

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

void main(){int i=0, hasil=1;ulang:i++;hasil*=2;printf("iterasi ke %2: %5d\n",i,hasil);if(i<10) goto ulang;getch();}

Politeknik Elektronika Negeri Surabaya 27

Page 28: Buku Praktikum Pemrograman Dasar

[REFERENSI PEMROGRAMAN BAHASA C]Pemrograman Dasar C

1.4.5. Compound Statement adalah mengelompokkan suatu proses menjadi satu blok. Didalam if-else penggunaan Compound Statement adalah untuk mengelompokkan proses-proses yang harus dikerjakan bila kondisi terpenuhi ataupun bila kondisi tidak terpenuhi.

/* nama file: IF-ELSE5.C */

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

void main(){char tag;printf("masukkan tipe tag (2 / 4): "); scanf("%c", &tag);if(tag=='2'){printf("merk sepeda motor bertipe 2 tag\n\n");printf("1. YA MAHA\n");printf("2. YA SUZUKI\n");printf("3. YA HONDA\n");}

Politeknik Elektronika Negeri Surabaya 28

Page 29: Buku Praktikum Pemrograman Dasar

[REFERENSI PEMROGRAMAN BAHASA C]Pemrograman Dasar C

else{printf("merk sepeda motor bertipe 4 tag\n\n");printf("1. HONDA\n");printf("2. SUZUKI\n");printf("3. YAMAHA\n");}getch();}

1.4.6. Statement if-else tidak dapat digunakan untuk menentukan satu pilihan yang benar diantara beberapa pilihan yang ada, oleh karena itu dapat digunakan statement else-if dimana dapat digunakan untuk menguji kondisi yang benar diantara beberapa kondisi yang diberikan. Bila suatu operator dikenal maka dilanjutkan proses perhitungan sesuai dengan operator yang dikenal tersebut, sedangkan bila tidak dikenal maka diberikan komentar “Operator SALAH!”. Pengujian operator dilakukan secara bertahap dari operator ‘*’, ‘/’, ‘+’ dan ‘=’, bila keempat operator tidak ditemukan maka pada statement pengujian cukup dituliskan else tanpa if, yang menandakan pengujian selesai dan tidak ditemukan operator yang sesuai.

Politeknik Elektronika Negeri Surabaya 29

Page 30: Buku Praktikum Pemrograman Dasar

[REFERENSI PEMROGRAMAN BAHASA C]Pemrograman Dasar C

/* nama file: if-else6.C */#include<stdio.h>#include<conio.h>void main(){

int valid_opr = 1;char opr;float bil1, bil2, hasil;

printf("masukkan 2 bilangan dan sebuah operator.\n\n");

printf("dengan format:\n\n");printf("=bilangan-1 operator

bilangan-2\n\n");printf("= ");scanf("%f %c %f", &bil1, &opr,

&bil2);

if(opr == '*') { hasil = bil1 * bil2;

}else if(opr == '/') hasil = bil1 / bil2;

else if(opr == '+') hasil = bil1 + bil2;

else if(opr == '-') hasil = bil1 - bil2;

elsevalid_opr = 0;

if(valid_opr) { printf("\nhasil perhitungan\n\n");

Politeknik Elektronika Negeri Surabaya 30

Page 31: Buku Praktikum Pemrograman Dasar

[REFERENSI PEMROGRAMAN BAHASA C]Pemrograman Dasar C

printf("%g %c %g = %g \n",bil1, opr, bil2, hasil);

} else { printf("\noperator salah!n");printf("gunakan operator +,-,/ dan * saja!");

}getch();}

1.4.7.Untuk lebih menstrukturkan susunan program, maka penggunaan dari else-if dapat diganti dengan statement switch-case. Statement switch-case akan membuat program terlihat lebih terstruktur, dimana statement else pada pengujian diatas diganti dengan statement default. Setiap blok case harus diakhiri dengan statement break, bila diinginkan hanya satu kondisi yang memenuhi, dan bila statement break tidak digunakan maka beberapa kondisi tersebut akan diuji secara bersamaan, sehingga kemungkinan ada dua atau beberapa kondisi yang benar.

/* nama file: if-else7.C */

Politeknik Elektronika Negeri Surabaya 31

Page 32: Buku Praktikum Pemrograman Dasar

[REFERENSI PEMROGRAMAN BAHASA C]Pemrograman Dasar C

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

{int valid_opr = 1;char opr;float bil1, bil2, hasil;

printf("masukkan 2 bilangan dan sebuah operator.\n\n");

printf("dengan format:\n\n");printf("=bilangan-1 operator

bilangan-2\n\n");printf("= ");

scanf("%f %c %f", &bil1, &opr, &bil2);

switch (opr) {case '*' : hasil = bil1 * bil2;

break;case '/' : hasil = bil1 / bil2;

break;case '+' : hasil = bil1 + bil2;

break;case '-' : hasil = bil1 - bil2;

break;default : valid_opr = 0;

break;

Politeknik Elektronika Negeri Surabaya 32

Page 33: Buku Praktikum Pemrograman Dasar

[REFERENSI PEMROGRAMAN BAHASA C]Pemrograman Dasar C

}if (valid_opr) {printf("\nhasil perhitungan\n\n");

printf("%g %c %g = %g \n",bil1, opr, bil2, hasil);

}else {printf("\noperator salah!\n");printf("\nGunakan operator +,-,/ dan * saja!");

}getch();

}

PERCOBAAN 5Politeknik Elektronika Negeri Surabaya 33

Page 34: Buku Praktikum Pemrograman Dasar

[REFERENSI PEMROGRAMAN BAHASA C]Pemrograman Dasar C

5.1. JUDUL : STATEMENT PERULANGAN (LOOPING)

5.2. TUJUAN : Mempelajari proses perulangan, menggunakan beberapa control statement seperti for, while dan do-while.

5.3. TEORI : Control Statement adalah statement yang digunakan untuk mengarahkan jalannya program, sehingga urutan pengerjaan program dapat melompat-lompat atau berulang-ulang. Ada beberapa statement yang termasuk control statement yaitu statements if-else, else-if, goto( ), switch( ), break, continue, for( ), while( ) dan do-while. Statement for( ) digunakan untuk membuat perulangan yang dikontrol oleh nilai-nilai tertentu yang initial. Perulangan dengan statement for( ), tidak memeriksa kondisi lebih dahulu, sehingga statement di dalam for( ) langsung dikerjakan dulu, kemudian baru memeriksa kondisi. Statement while( ) digunakan juga untuk membuat perulangan seperti pada statement for( ), perbedaannya adalah statement while( ) memeriksa kondisi dulu, bila kondisi memenuhi (benar), maka perulangan dilaksanakan. Statement do-while adalah juga digunakan unuk membuat perulangan seperti halnya dua statement diatas, dan kemungkinan merupakan kombinasi antara kedua statement diatas, cara kerja dari perulangan do-while adalah langsung mengerjakan badan loop, kemudian kondisi diperiksa bila kondisi memenuhi perulangan dilanjutkan bila tidak perulangan selesai.

5.4. PROGRAM PERCOBAAN

Politeknik Elektronika Negeri Surabaya 34

Page 35: Buku Praktikum Pemrograman Dasar

[REFERENSI PEMROGRAMAN BAHASA C]Pemrograman Dasar C

5.4.1 Triangular adalah suatu susunan benda (bola) yang disusun sedemikian sehingga menyerupai segitiga, dengan mengetahui jumlah seluruh bola yang paling bawah, maka dapat dihiung jumlah seluruh bola yang menyusun triangular tersebut.

/* Nama File LOOPl.C */#include<stdio.h>#include<conio.h>void main(){ int n, jumlah; jumlah=0; for (n=1; n<=200; n=n+1) jumlah=jumlah+1; printf("Jumlah 200 triangular adalah %d\n",jumlah);

getch();}

5.4.1. Untuk menghitung beberapa jumlah triangular, maka dapat dibuat suatu tabel perhitungan jumlah

Politeknik Elektronika Negeri Surabaya 35

Page 36: Buku Praktikum Pemrograman Dasar

[REFERENSI PEMROGRAMAN BAHASA C]Pemrograman Dasar C

triangular dengan melakukan iterasi sebanyak jumlah triangular yang diinginkan.

/* Nama File LOOP2.C */

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

int n, jumlah;

printf("TABEL JUMLAH TRIANGULAR\n\n");

printf(" n jumlah\n");printf("--------------\n");

jumlah=0;for (n=1; n<=10; ++n) {jumlah=jumlah + n; printf("%d %d\

n", n, jumlah);}getch();

}

Politeknik Elektronika Negeri Surabaya 36

Page 37: Buku Praktikum Pemrograman Dasar

[REFERENSI PEMROGRAMAN BAHASA C]Pemrograman Dasar C

5.4.2. Perulangan dalam perulangan (nested loop) ada kalanya diguanakan apabila diperlukan perulangan berlipat. Program dibawah ini menghitung 5 triangular dengan jumlah nilai dasar berdasarkan masukan dari keyboard.

/* Nama File LOOP3.C */#include<stdio.h>#include<conio.h>void main(){int n,angka,jumlah,total;

for (n=1; n<=5; ++n) {printf("Masukkan nilai dasar triangular-%d ",n);scanf("%d", &angka);jumlah=0;

for (n=1; n<=angka; ++n)jumlah=jumlah+n;total=total+jumlah;

}printf("Jumlah %d triangular adalah %d\n",n,total);

getch();

}

Politeknik Elektronika Negeri Surabaya 37

Page 38: Buku Praktikum Pemrograman Dasar

[REFERENSI PEMROGRAMAN BAHASA C]Pemrograman Dasar C

5.4.3. Penggunaan perulangan while diperlukan apabila proses dalam suatu perulangan tidak langsung dikerjakan, akan tetapi melihat kondisinya lebih dulu, apabila kondisi memenuhi maka proses dalam perulangan dikerjakan.

/* Nama FileLOOP4.C */

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

int hitung, hasil;hitung=hasil=1;while (hitung<=10) {hasil*=hitung;

printf("%3d %5d\n", hitung, hasil);

++hitung;}

}

Politeknik Elektronika Negeri Surabaya 38

Page 39: Buku Praktikum Pemrograman Dasar

[REFERENSI PEMROGRAMAN BAHASA C]Pemrograman Dasar C

5.4.4. Ada dua bilangan tertentu dimana diiinginkan suatu nilai pembagi bulat untuk kedua bilangan tersebut, maka dapat dilakukan pencarian bilangan pembagi tersebut menggunakan suatu iterasi sebagai berikut.

/* Nama FileLOOP5.C */

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

int bil1,bil2,sisa;

printf("Masukkan bilangan bulat positif pertama = ");

scanf("%d",&bil1);

printf("Masukkan bilangan bulat positif kedua = ");

scanf("%d",&bil2);while (bil2 !=0) {

sisa=bil1%bil2;bil1=bil2;

Politeknik Elektronika Negeri Surabaya 39

Page 40: Buku Praktikum Pemrograman Dasar

[REFERENSI PEMROGRAMAN BAHASA C]Pemrograman Dasar C

bil2=sisa;}printf("Pembagi bersama terbaik

dari keduanya = %d",bil1);getch();

}

5.4.5. Bila keduanya perulangan for( ) dan while( ) melakukan pemeriksaan kondisi diawal perulangan, maka sebaliknya perulangan do-while melakukan pemeriksaan kondisi setelah melakukan proses badan looping. Berikut ini program mencetak jumlah suatu triangular sampai sepuluh triangular.

/* Nama File LOOP6.C */

#include<stdio.h>#include<conio.h>void main(){int hitung,hasil;hitung=1;hasil=0;

do {Politeknik Elektronika Negeri Surabaya 40

Page 41: Buku Praktikum Pemrograman Dasar

[REFERENSI PEMROGRAMAN BAHASA C]Pemrograman Dasar C

hasil+=hitung;printf("%3d %5d\

n",hitung,hasil);++hitung;

} while (hitung<=10);getch();

}

5.4.6. Statement break yang dipadukan dengan statement perulangan adalah berguna untuk keluar secara paksa dari perulangan, saat perulangan berjalan, dikarenakan suatu kondisi sudah terpenuhi maka perulangan tidak perlu dilanjutkan lagi. Berikut ini proses perulangan tak terhingga, dimana untuk keluar dari proses diperlukan suatu kondisi tertentu, dan bila kondisi tersebut terpenuhi maka statement break akan bereaksi.

/* Nama FileLOOP7.C */#include<stdio.h>#include<conio.h>void main(){

int i=0;

Politeknik Elektronika Negeri Surabaya 41

Page 42: Buku Praktikum Pemrograman Dasar

[REFERENSI PEMROGRAMAN BAHASA C]Pemrograman Dasar C

for(;;) {i++;

printf("\nProses ke-%d sukses!\n",i);if(i==10) {

printf("\nProses segera dihentikan, harap maklum!");

break;}

}getch();

}

5.4.7. Statement continue digunakan apabila dalam suatu proses perulangan tercapai suatu kondisi tertentu, sehingga suatu proses yang ke-n tidak dikerjakan (skip) dan dilanjutkan dengan proses selanjutnya(n+1).

/* Nama File LOOP8.C */

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

Politeknik Elektronika Negeri Surabaya 42

Page 43: Buku Praktikum Pemrograman Dasar

[REFERENSI PEMROGRAMAN BAHASA C]Pemrograman Dasar C

void main(){

int i;for(i=1;i<10;i++) {if(i==5) {printf("\n\tProses ke-%d dibatalkan\n",i);printf("\tHarap maklum!\n");

continue; }printf("\nProses ke-%d sukses!\n",i);

}getch();

}

PERCOBAAN 6

6.1 JUDUL Mengembangkan fungsi-fungsi sendiri

6.2 TUJUAN

Politeknik Elektronika Negeri Surabaya 43

Page 44: Buku Praktikum Pemrograman Dasar

[REFERENSI PEMROGRAMAN BAHASA C]Pemrograman Dasar C

Mempelajari pembuatan fungsi-fungsi diluar fungsi-fungsi yang ada, serta mempelajari penggunaan variabel global, lokal, eksternal, otomatis, statis, dan register.

6.3 TEORI Suatu fungsi adalah bagian program yang terpisah dari fungsi program utamanya main() dan berdiri sendiri untuk mengerjakan suatu proses tertentu. Tujuan digunakannya fungsi adalah untuk mencegah penggunaan program secara berulang-ulang, sehingga program menjadi sangat panjang. Pada percobaan-percobaan diatas telah digunakan fungsi-fungsi dari C, seperti printf(), clrscr(), scanf(), getch(), puts(), for() dan sebagainya, maka disini dicoba untuk membuat fungsi baru dimana tidak ada dalam pustaka bahasa C. Secara aturan fungsi baru dibuat setelah fungsi main() dibuat, sehingga penempatan fungsi adalah dibawah fungsi main(), tetapi ada kalanya dapat diletakkan diatas fungsi main(). Bila fungsi diletakkan diatas fungsi main() maka tidak diperlukan deklarasi fungsi lagi.

6.4 PROGRAM PERCOBAAN 6.4.1. Untuk membuat fungsi maka disiapkan nama fungsi

cetak_pesan(), kemudian bila diletakkan dibawah fungsi main(), maka fungsi tersebut harus dideklarasikan diatas fungsi main(). Fungsi ini dipanggil 5 kali.

/* Nama File: FUNGSI1.C */

Politeknik Elektronika Negeri Surabaya 44

Page 45: Buku Praktikum Pemrograman Dasar

[REFERENSI PEMROGRAMAN BAHASA C]Pemrograman Dasar C

#include <stdio.h>#include <conio.h>void cetak_pesan(void);

void main(){int i;for(i=1; i<=5; i++) {printf("pesan ke-%d: ",i);

cetak_pesan();}getch();

}void cetak_pesan(){

printf("ini dulu! baru itu! \n\n");}

6.4.2. Peletakan suatu fungsi dapat diatas fungsi main(), sehingga tidak diperlukan deklarasi fungsi. Masukan suatu fungsi dilewatkan melalui suatu argument yang disebut passing parameter. Fungsi hitung_triangular() dibawah ini

Politeknik Elektronika Negeri Surabaya 45

Page 46: Buku Praktikum Pemrograman Dasar

[REFERENSI PEMROGRAMAN BAHASA C]Pemrograman Dasar C

mempunyai argument int n, yang digunakan untuk melewatkan suatu nilai dari program pemanggil ke dalam suatu fungsi.

/* Nama File: FUNGSI2.C */#include <stdio.h>#include <conio.h>void hitung_triangular(int n){

int i, jumlah=0;

for(i=0; i<=n; ++i)jumlah=jumlah+i;

printf("jumlah triangular %d adalah %d\n", n,jumlah);}void main(){

hitung_triangular(10);hitung_triangular(20);hitung_triangular(50);getch();

}

Politeknik Elektronika Negeri Surabaya 46

Page 47: Buku Praktikum Pemrograman Dasar

[REFERENSI PEMROGRAMAN BAHASA C]Pemrograman Dasar C

6.4.3. Fungsi berikut menghasilkan Faktor Persekutuan Besar (FPB).

/* Nama File: FUNGSI3.C */#include <stdio.h>#include <conio.h>void fpb(int,int);void main(){

fpb(150, 35);fpb(1026, 405);fpb(83, 240);getch();

}void fpb(int u, int v){

int tampung;

printf("FPB dari %d dan %d adalah ", u, v);

while(v != 0) {tampung= u%v;u=v;v=tampung;

}printf("%d\n", u);

}

Politeknik Elektronika Negeri Surabaya 47

Page 48: Buku Praktikum Pemrograman Dasar

[REFERENSI PEMROGRAMAN BAHASA C]Pemrograman Dasar C

6.4.4. Suatu fungsi dapat memberikan nilai balik (return value),bila fungsi tersebut mempunyai tipe dan bukannya void seperti fungsi-fungsi diatas, dimana digunakan sebagai prosedur saja (tidak mempunyai nilai balik). Pada fungsi fpb() terdapat tipe int, dimana fungsi ini akan memberikan nilai balik bertipe integer (bulat), dan untuk memberikan nilai balik ini maka didalam fungsi fpb() harus ditambahkan statement return(), yang digunakan untuk memberikan suatu nilai yang dikembalikan oleh fungsi.

/* Nama File: FUNGSI4.C */#include <stdio.h>#include <conio.h>int fbp(int, int);void main(){

int hasil;

hasil= fbp(150, 35);printf("FBP dari 150 dan 35

adalah %d\n", hasil);hasil= fbp(1026, 405);printf("FBP dari 1026 dan 405

adalah %d\n", hasil);

Politeknik Elektronika Negeri Surabaya 48

Page 49: Buku Praktikum Pemrograman Dasar

[REFERENSI PEMROGRAMAN BAHASA C]Pemrograman Dasar C

hasil= fbp(83, 240);printf("FBP dari 83 dan 240

adalah %d\n", hasil);getch();

}int fbp(int u, int v){

int tampung;while(v != 0) {

tampung=u%v;u=v;v=tampung;

}return(u);

}

6.4.5. Fungsi berikut digunakan untuk menentukan 2 bilangan yang terkecil

/* Nama File: FUNGSI6.C */#include <stdio.h>#include <conio.h>float minimum(float x, float y){

if(x<y)return(x);

Politeknik Elektronika Negeri Surabaya 49

Page 50: Buku Praktikum Pemrograman Dasar

[REFERENSI PEMROGRAMAN BAHASA C]Pemrograman Dasar C

else return(y);

}void main(){

float a,b;printf("Masukkan nilai a: "); scanf("%f", &a);printf("Masukkan nilai b: "); scanf("%f", &b);printf("\nBilangan terkecil antara %g dan %g adalah ",a,b);printf("%g\n\n",minimum(a,b));

getch();}

6.4.6. Program dibawah ini akan membedakan penggunaan variable otomatis dan variable statis, dimana bila menggunakan variable statis maka nilai akan tetap, sedangkan bila menggunakan variable otomatis maka nilai akan kembali seperti semula.

/* Nama File: FUNGSI7.C */#include <stdio.h>#include <conio.h>void demo(void){

Politeknik Elektronika Negeri Surabaya 50

Page 51: Buku Praktikum Pemrograman Dasar

[REFERENSI PEMROGRAMAN BAHASA C]Pemrograman Dasar C

auto int var_auto=0; static int var_static=0;printf("auto=%d, static=%d\n", var_auto,

var_static); ++var_auto; ++var_static;}main(){

int i=0;while(i<3) {

demo();i++;

}getch();

}

PERCOBAAN 7

7.1. JUDUL : VARIABEL ARRAY

7.2.TUJUAN : Mempelajari penggunaan variable array satu dimensi, dua dimensi, berdimensi banyak, array tak berukuran dan parameter array .

7.3. TEORI : Suatu array adalah kumpulan dari beberapa nilai yang mempunyai tipe yang sama, misalkan integer semu,

Politeknik Elektronika Negeri Surabaya 51

Page 52: Buku Praktikum Pemrograman Dasar

[REFERENSI PEMROGRAMAN BAHASA C]Pemrograman Dasar C

float semua dan sebagainya. Untuk membedakan antara nilai satu dengan lainnya digunakan suatu subscript, yang sering disebut index. Suatu variable array dapat digunakan untuk menyimpan beberapa nilai dengan index mulai mulai 0 sampai n-1 yaitu bilangan [0] …bilangan [n-1] .

7.4 PROGRAM PERCOBAAN7.4.1 Mencoba mendeklarasikan suatu variable array dan

mengisinya kemudian menampilkan isi variable tersebut menggunakan statement for(). Ingat apabila jumlah deklarasi index adalah n maka nilai index-nya adalah dimulai dari 0 sampai n-1.

/* Nama File : ARRAY1.C */

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

main(){int nilai [10];int indeks;

nilai [0] = 197;nilai [2] = -100;nilai [5] = 350;

nilai [3] = nilai [0] + nilai [5];nilai [9] = nilai [5]/10;--nilai[2];for (indeks=0; indeks<10; ++indeks)printf("Nilai [%d] = %d\n", indeks, nilai[indeks]);

Politeknik Elektronika Negeri Surabaya 52

Page 53: Buku Praktikum Pemrograman Dasar

[REFERENSI PEMROGRAMAN BAHASA C]Pemrograman Dasar C

getch();}

7.4.2 Deret fibonanci adalah deret dimana dimulai dengan dua angka, dimana bernilai 0 dan 1, kemudian deret ketiga ditentukan dari penjumlahan kedua angka tersebut, sedangkan deret keempat ditentukan dari dua angka sebelumnya begitu seterusnya. Sehingga didapatkan deret fibonanci sebgai berikut: 0 1 1 2 3 5 8 13 21 ...

/* Nama file : array2.c*/#include<stdio.h>#include<conio.h>void main(){int fibo[100],i,jumlah;fibo[0]=0;fibo[1]=1;printf("masukkan jumlah deret fibonanci= "); scanf("%d", &jumlah);for(i=2;i<jumlah;i++){fibo[i] = fibo[i-1] + fibo[i-2];printf("%5d", fibo[i]);}printf("\n\n");

Politeknik Elektronika Negeri Surabaya 53

Page 54: Buku Praktikum Pemrograman Dasar

[REFERENSI PEMROGRAMAN BAHASA C]Pemrograman Dasar C

getch();}

7.4.3 Bila sudah ditentukan suatu variable array dengan sejumlah index, kemudian hanya beberapa index saja yang akan diisi dengan data, maka index yang lainnya tidak dapat begitu saja diabaikan. Untuk itu dapat digunakan statement static untuk mengisi suat variable array dengan nol bila tidak ditentukan nilainya.

/* Nama file : array3.c*/

#include<stdio.h>#include<conio.h>void main(){static int nilai_nilai [10]={0,1,4,9,16};/* nilai lainnya diisi dengan sendirinya */int i;for (i=0;i<10;i++)printf("nilai_nilai[%d]=%d\n",i , nilai_nilai[i]);getch();}

Politeknik Elektronika Negeri Surabaya 54

Page 55: Buku Praktikum Pemrograman Dasar

[REFERENSI PEMROGRAMAN BAHASA C]Pemrograman Dasar C

7.4.4 Menentukan nilai maksimum dari sederetan nilai yang sudah diinisialisasi dan disimpan dalam array, mengirim array sebagai parameter sebuah fungsi.

/* Nama file : array4.c*/

#include<stdio.h>#include<conio.h>int findmax (int[], int);void main(){static int data1[]={5,34,56,-12,3,19};static int data2[]={1,-2,34,207,93,-12};printf("nilai maksimum dari data1[] adalah %d\n",findmax(data1,6));printf("nilai maksimum dari data2[] adalah %d\n",findmax(data2,6));}int findmax(int nilai[],int jml_data){int terbesar, i;terbesar= nilai[0];for(i=1;i<jml_data;++i)if(nilai[i] > terbesar) terbesar = nilai[i];return terbesar;}

Politeknik Elektronika Negeri Surabaya 55

Page 56: Buku Praktikum Pemrograman Dasar

[REFERENSI PEMROGRAMAN BAHASA C]Pemrograman Dasar C

7.4.5 Array dua dimensi, dibawah ini menyimpan informasi huruf A. Dimana nilai 1 mewakili karakter ASCII ‘\xDB’ atau 219, yaitu karakter kotak.

/* Nama file : array5.c*/

#include<stdio.h>#include<conio.h>void main(){int i,j;static int A[8][8]={{0,1,1,1,1,1,0,0},{0,1,0,0,0,1,0,0},{0,1,0,0,0,1,0,0},{1,1,1,1,1,1,1,0},{1,1,0,0,0,0,1,0},{1,1,0,0,0,0,1,0},{0,0,0,0,0,0,0,0}};

for(i=0;i<8;i++){for(j=0;j<8;j++)if(A[i][j]) putchar('\xDB'); else putchar(' ');puts("");

Politeknik Elektronika Negeri Surabaya 56

Page 57: Buku Praktikum Pemrograman Dasar

[REFERENSI PEMROGRAMAN BAHASA C]Pemrograman Dasar C

}getch();}

7.4.6 Program dibawah ini menggunakan variable array berdimensi tiga, untuk menyimpan informasi huruf A dan huruf B. Dimana angka 1 mewakili kotak penuh dan 0 mewakili spasi. Jadi bila ditemukan angka 1 pada variable data_huruf maka dicetak kotak penuh, sedangkan sebaliknya dicetak spasi (kosong). Sehingga terbentuk huruf A dan B dengan ukuran besar (8 kali huruf normal pada mode teks).

/* Nama file : array6.c*/

#include<stdio.h>#include<conio.h>void main(){int i,j,k;static int data_huruf[2][8][8]={{{0,1,1,1,1,1,0,0},{0,1,0,0,0,1,0,0},{0,1,0,0,0,1,0,0},{1,1,1,1,1,1,1,0},{1,1,0,0,0,0,1,0},

Politeknik Elektronika Negeri Surabaya 57

Page 58: Buku Praktikum Pemrograman Dasar

[REFERENSI PEMROGRAMAN BAHASA C]Pemrograman Dasar C

{1,1,0,0,0,0,1,0},{1,1,0,0,0,0,1,0},{0,0,0,0,0,0,0,0}},

{{1,1,1,1,1,1,0,0},{1,0,0,0,0,1,0,0},{1,0,0,0,0,1,0,0},{1,1,1,1,1,1,1,0},{1,1,0,0,0,0,1,0},{1,1,0,0,0,0,1,0},{1,1,1,1,1,1,1,0},{0,0,0,0,0,0,0,0}}};

/*tampilkan huruf*/for(i=0;i<8;i++){for(j=0;j<8;j++){for(k=0;k<8;k++)if(data_huruf[i][j][k]) putchar('\xDB'); else putchar(' ');puts("");}puts("");}getch();}

Politeknik Elektronika Negeri Surabaya 58

Page 59: Buku Praktikum Pemrograman Dasar

[REFERENSI PEMROGRAMAN BAHASA C]Pemrograman Dasar C

7.4.7 Dasar bilangan yang digunakan sehari-hari adalah dasar bilangan 10, sedangkan dasar bilangan yang lain misalkan 2,8 dan 16 digunakan oleh komputer.

/* Nama file : array7.c*/#include<stdio.h>#include<conio.h>void main(){static char digit_dasar[16]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};int konversi[64];long int bilangan;int digit_ke, dasar, indeks=0;printf("bilangan yang dikonversikan : ");scanf("%ld", &bilangan);printf("dasar bilangan: ");scanf("%d", &dasar);do {konversi [indeks]=bilangan % dasar;++indeks;bilangan/=dasar;} while (bilangan!=0);

Politeknik Elektronika Negeri Surabaya 59

Page 60: Buku Praktikum Pemrograman Dasar

[REFERENSI PEMROGRAMAN BAHASA C]Pemrograman Dasar C

printf("angka konversi : ");for(--indeks;indeks>=0;--indeks){digit_ke=konversi[indeks];printf("%c", digit_dasar[digit_ke]);}getch();}

PERCOBAAN 8

8.1 JUDUL : VARIABEL & FUNGSI STRING

8.2 TUJUAN : Mempelajari penggunaan variable string yang dipadukan dengan fungsi-fungsi untuk pengolahan data string, seperti strcat(), strlen(), dan strcpy() dan sebagainya.

8.3 TEORI : Suatu karakter string adalah terdiri dari beberapa karakter (deretan karakter) yang diakhiri dengan karakter khusus ‘\0’ (null). Suatu konstanta string adalah karakter string yang dituliskan diantara tanda petik ganda (“), seperti yang digunakan pada fungsi printf() atau puts(). Konstanta karakter string mempunyai kelas penyimpan static,

Politeknik Elektronika Negeri Surabaya 60

Page 61: Buku Praktikum Pemrograman Dasar

[REFERENSI PEMROGRAMAN BAHASA C]Pemrograman Dasar C

sehingga bila digunakan didalam fungsi, maka nilainya tidak akan berubah selama program aktif.

8.4 PROGRAM PERCOBAAN8.4.1 Mengamati penggunaan variable array berukuran bebas “[]” untuk melewatkan suatu variable string ke dalam fungsi. Untuk dapat melewatkan suatu nilai konstanta atau variable yang tidak diketahui panjangnya, maka digunakan array dengan ukuran bebas. Meskipun digunakan variable berukuran kosong, compiler akan tahu berapa jumlah elemen yang dimasukkan dalam satu variable.

/*nama file : String1.c */#include<stdio.h>#include<conio.h>int panjang_str(char string[]){int hitung=0;while(string[hitung] != '\0') ++hitung;return(hitung);}void main(){static char kata0[]={'b','e','1','a','j','a','r','\0'};static char kata1[]={'f','u','n','g','s','i','\0'};static char kata2[]={'s','t','r','i','n','g','\0'};

Politeknik Elektronika Negeri Surabaya 61

Page 62: Buku Praktikum Pemrograman Dasar

[REFERENSI PEMROGRAMAN BAHASA C]Pemrograman Dasar C

printf("panjang string 0 = %d\n", panjang_str(kata0));printf("panjang string 1 = %d\n", panjang_str(kata1));printf("panjang string 2 = %d\n", panjang_str(kata2));getch();}

8.4.2 Mengamati penggunaan fungsi-fungsi untuk pengolahan string, seperti sterlen(), strcat(), dan strcmp(). Fungsi strlen() digunakan untuk menghitung jumlah string sperti pada program 8.4.1 diatas, fungsi strcat() digunakan untuk menggabungkan antara dua string, fungsi strcmp() digunakan untuk membandingkan antara dua string, diberikan nilai 0 bila kedua string tidak sama. Penggunaan variable static mutlak diperlukan apabila menggunakan variable string dengan ukuran bebas, bila tidak digunakan variable static maka kemungkinan terjadi kesalahan isi dari variable dengan ukuran bebas tersebut, dimana karakter yang diberikan tidak dapat masuk dengan sempurna, atau diisi dengan karakter sembarang.

/*nama file : String2.c */#include<string.h>#include<stdio.h>

Politeknik Elektronika Negeri Surabaya 62

Page 63: Buku Praktikum Pemrograman Dasar

[REFERENSI PEMROGRAMAN BAHASA C]Pemrograman Dasar C

#include<conio.h>void main(){char nama[50], jawab[15];static char salam[]=",assalamu'alaikum...";static char wayang[]="bima sena";puts("masukkan nama anda:");gets(nama);puts("");puts("siapakah nama wayang yang gak bisa duduk?");gets(jawab);puts("");if(strlen(salam)+strlen(nama)<50)strcat(nama,salam);puts(nama);if(strcmp(wayang,jawab)==0)printf("\njawaban anda benar! hebat!");else{printf("\njawaban anda salah!");printf("\njawabannya adalah %s", wayang);}puts("");getch();}

Politeknik Elektronika Negeri Surabaya 63

Page 64: Buku Praktikum Pemrograman Dasar

[REFERENSI PEMROGRAMAN BAHASA C]Pemrograman Dasar C

8.4.3 Menghitung jumlah karakter yang dimasukkan melalui keyboard, menggunakan fungsi fgets(). Fungsi ini dapat juga digunakan untuk membaca data dari file, dengan mengganti standar masukan yang disini ditulis stdin, dimana masukkan didapatkan dari keyboard.

/*nama file : String3.c */

#include<stdio.h>#include<conio.h>#define MAKS 256

void main(){int i, jumkar;char teks[MAKS];puts("masukkan suatu kalimat (maks 255 karakter).");puts("komputer akan menghitung jumlah karakternya.\n");fgets(teks,sizeof teks,stdin);

jumkar=0;for(i=0;teks[i];i++)jumkar++;

printf("\n jumlah karakter=%d\n", jumkar);getch();

Politeknik Elektronika Negeri Surabaya 64

Page 65: Buku Praktikum Pemrograman Dasar

[REFERENSI PEMROGRAMAN BAHASA C]Pemrograman Dasar C

}

8.4.4 Mencari posisi karakter pada suatu string menggunakan fungsi strchr().

/*nama file : String4.c */

#include<string.h>#include<stdio.h>#include<conio.hvoid main(){char str1[50],str2[50],kar,po;strcpy(str1,"0--------1-------2-------3");strcpy(str2,"->KUCARI KAMU UNTUK KUTANGKAP.");cputs("Isi dari str1= "); puts(str1);cputs("Isi dari str2= "); puts(str2);printf("\nPosisi huruf pada string dapat dicari");printf("\nMenggunakan rumus p=stchr(str2,kar)\n");kar='G';po=strchr(str2,kar)-str2;

Politeknik Elektronika Negeri Surabaya 65

Page 66: Buku Praktikum Pemrograman Dasar

[REFERENSI PEMROGRAMAN BAHASA C]Pemrograman Dasar C

printf("\nkarakter '%c' terletak pada kolom ke %d",kar,po);getch();}

8.4.5 Karakter string adalah semua karakter yang digunakan oelh komputer, termsuk angka, tanda baca, tanda khusus dan lain-lain. Program dibawah mencoba untuk memisahkan karakter huruf(alphabet) dengan karakter lainnya, sehingga dapat dihitung jumlah huruf yang terdapat dalam suatu string. Fungsi alphabetic() akan memberikan nilai balik 1 bila ditemukan karakter huruf dalam suatu string. Fungsi hitung_kata() akan memanfaatkan fungsi alphabetic() untuk menghitung kata yang ada dalam suatu string.

/*nama file : String5.c */#include<string.h>#include<stdio.h>#include<conio.h>int alphabetic(char c){if((c>='a' && c<='z') || (c>='A' && c<='Z'))return(1);

Politeknik Elektronika Negeri Surabaya 66

Page 67: Buku Praktikum Pemrograman Dasar

[REFERENSI PEMROGRAMAN BAHASA C]Pemrograman Dasar C

elsereturn(0);}int hitung_kata(char string[]){int i, lihat_kata=1,kata_terhitung=0;for (i=0;string[i]!='\0'; ++i)if(alphabetic(string[i])){if(lihat_kata){++kata_terhitung;lihat_kata=0;}}elselihat_kata=1;return (kata_terhitung);}void main(){int hitung;static char teks1[]="angka atau bilangan 0123456789";static char teks2[]="juga termasuk karakter string.";printf("teks 1: %s\n", teks1);printf("teks 2: %s\n", teks2);puts("");hitung = hitung_kata(teks1);hitung = hitung+hitung_kata(teks2);printf("terhitung ada %d kata pada teks diatas!\n",hitung);getch();

Politeknik Elektronika Negeri Surabaya 67

Page 68: Buku Praktikum Pemrograman Dasar

[REFERENSI PEMROGRAMAN BAHASA C]Pemrograman Dasar C

}

8.4.6 Mengamati pengolahan string menggunakan fungsi strncmp(), dimana digunakan untuk mengambil bagian kata dari suatu kalimat dalam string. Untuk mengambil kata pada string pada kolom tertentu dengan panjang tertentu, maka dapat dilakukan dengan menambah suatu konstanta yang menunjukan posisi kolom yang dimaksud, misalkan pada kata “dulu” dalam string “Don’t dulu bekerja”, maka dapat dilakukan dengan menambah suatu konstanta dimana posisi kolom kata “dulu” berada, yaitu dengan menghitung dari kiri D=0, o=1, n=2 dst, sehingga posisi d apada kata dulu adalah 6, sehingga posisinya adalah str1+6/*nama file : String6.c */#include<string.h>#include<stdio.h>#include<stdlib.h>#include<conio.h>void main(){char str1[30], str2[30], str3[30];char str4[30], str5[30], str6[30];strcpy(str1,"don't dulu bekerja");strcpy(str2,"baru sambil be happy");strcpy(str3,"ini worry belajar itu");

Politeknik Elektronika Negeri Surabaya 68

Page 69: Buku Praktikum Pemrograman Dasar

[REFERENSI PEMROGRAMAN BAHASA C]Pemrograman Dasar C

cputs("str1 = "); puts(str1);cputs("str2 = "); puts(str2);cputs("str3 = "); puts(str3);cputs("\ntekan ENTER untuk melihat hasilnya!");getch();strncpy(str4,str3,4);str4[4]= NULL;strncpy(str5,str1+6,5);str5[5]= NULL;strncpy(str6,str2,5);str6[5]= NULL;strcat(str4,str5);strcat(str4,str6);strncpy(str6,str3+18,3);str6[3]= NULL;strcat(str4,str6);printf("\n\n isi dari str4 = "); puts(str4);getch();}

8.4.7 Fungsi yang digunakan untuk membalik suatu kata/kalimat adalah fungsi strrev(), suatu kata/kalimat dikatakan palindrome apabila dibaca dari depan maupun

Politeknik Elektronika Negeri Surabaya 69

Page 70: Buku Praktikum Pemrograman Dasar

[REFERENSI PEMROGRAMAN BAHASA C]Pemrograman Dasar C

belakang sama, misalkan KAKAK, KAPAK, KATAK, dan sebagainya.

/*nama file : String7.c */

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

void main(){char kalimat [50];printf("masukkan kata/kalimat= ");scanf("%s", &kalimat);

puts("");printf("\n kata/kalimat sebelum strrev():\n");printf("%s\n\n",kalimat);printf("\n kata/kalimat setelah strrev():\n");strrev(kalimat);printf("%s\n",kalimat);getch();}

Politeknik Elektronika Negeri Surabaya 70

Page 71: Buku Praktikum Pemrograman Dasar

[REFERENSI PEMROGRAMAN BAHASA C]Pemrograman Dasar C

PERCOBAAN 9

9.1 JUDUL : VARIABEL POINTER & PENGGUNAANYA DALAM FUNGSI

9.2 TUJUAN : Mempelajari penggunaan variable pointer yang dipadukan dengan variable bertipe interger, array dan string serta penggunaan pointer dalam suatu fungsi, baik sebagai penunjuk fungsi atau sebagai argument fungsi. Dipelajari juga pointer yang menunjuk pointer lainnya.

9.3 TEORI : Suatu pointer adalah suatu variable yang menyimpan alamat dari suatu variable yang ditunjuk oleh

Politeknik Elektronika Negeri Surabaya 71

Page 72: Buku Praktikum Pemrograman Dasar

[REFERENSI PEMROGRAMAN BAHASA C]Pemrograman Dasar C

pointer yang bersangkutan. Karena data yang ditunjuk oleh pointer bervariasi, maka tipe dari pointer harus disesuaikan dengan tipe data yang ditunjukan, maka memperkirakan ukuran data yang ditunjuk. Pointer berguna untuk mentransfer data yang mempunyai kapasitas besar, melalui suatu fungsi. Pointer sangat erat kaitannya dengan array, sehingga variable pointer dapat menggantikan fungsi dari variable array.

9.4 PROGRAM PERCOBAAN

9.4.1 Mengakses isi suatu variable melalui pointer. Untuk membedakan antara pointer dengan isi dari pointer maka dibedakan dengan penggunaan tanda ‘&’ (ampersand) dan ‘*’ (asterisk), tanda ‘&’ digunakan pada variable yang bukan pointer, bila suatu variable bukan pointer diawali dengan tanda ‘*’, maka akan didapatkan nilai isi dari variable yang ditunjuk oleh pointer tersebut, dan bukan didapatkan alamatnya.

/*nama file: Pointer1.c*/#include<stdio.h>#include<conio.h>void main(){int y,x = 2002; /* x & y bertipe int */int *px; px = &x; y = *px;printf("alamat x = %p\n", &x);printf("isi px = %p\n", px);printf("isi x = %d\n", x);printf("nilai *px = %d\n", *px);printf("nilai y = %d\n", y);getch();

Politeknik Elektronika Negeri Surabaya 72

Page 73: Buku Praktikum Pemrograman Dasar

[REFERENSI PEMROGRAMAN BAHASA C]Pemrograman Dasar C

}

9.4.2 Mengamati persamaan penggunaan variable index pada array dan variable index pada pointer, untuk menunjuk suatu nilai data didalam suatu variable array.

/*nama file: String2.c*/#include<stdio.h>#include<conio.h>#include <string.h>#include <stdlib.h>void main(){int nilai[10]={86,75,98,66,56,76,80,95,70,60};int index, *ip;printf("mencetak menggunakan array\n");printf("daftar nilai siswa\n\n");for(index=0; index<10; index++)printf("%3d", nilai[index]);puts("\n");printf("mencetak menggunakan pointer dan index\n");printf("daftar nilai siswa\n\n");for(index=0; index<10; index++)printf("%3d", *nilai=index);

Politeknik Elektronika Negeri Surabaya 73

Page 74: Buku Praktikum Pemrograman Dasar

[REFERENSI PEMROGRAMAN BAHASA C]Pemrograman Dasar C

puts("\n");printf("mencetak menggunakan pointer\n");printf("daftar nilai siswa\n\n");ip= nilai;for(index=0; index<10; index++)printf("%3d",*ip++);getch();}

9.4.3 Pointer yang menunjuk ke pointer yang lain.

/*nama file: Pointer3.c*/#include<stdio.h>#include<conio.h>

void main(){int a,*b,**c;a=1975;b=&a;c=&b;

Politeknik Elektronika Negeri Surabaya 74

Page 75: Buku Praktikum Pemrograman Dasar

[REFERENSI PEMROGRAMAN BAHASA C]Pemrograman Dasar C

printf("nilai a = %d atau %d atau %d\n",a,*b,**c);printf("b = %p = alamat a di memori\n", b);printf("c = %p = alamat bdi memori \n", c);printf("alamat c di memori = %p\n", &c);getch();}

9.4.4 Fungsi dengan argumen berupa pointer

/*nama file: Pointer4.c*/

#include<stdio.h>#include<conio.h>void naikkan_nilai(int *x, int *y);

main(){int a=3, b=7;printf("semula : a= %d b= %d\n", a,b);naikkan_nilai (&a, &b);

Politeknik Elektronika Negeri Surabaya 75

Page 76: Buku Praktikum Pemrograman Dasar

[REFERENSI PEMROGRAMAN BAHASA C]Pemrograman Dasar C

printf("sekarang : a = %d b= %d\n", a,b);getch();}

void naikkan_nilai(int *x, int *y){*x = *x + 2;*y = *y + 3;}

9.4.5 Suatu fungsi dapat mempunyai nilai balik bertipe pointer, sehingga dapat digunakan untuk mengembalikan nilai yang panjang seperti halnya nilai suatu string./*nama file: Pointer5.c*/

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

char *nama_bulan(int n){static char *bulan[]={"kode bulan salah","januari","februari","maret","april","mei","juni","juli","agustus","september","oktober","nopember","desember"};

Politeknik Elektronika Negeri Surabaya 76

Page 77: Buku Praktikum Pemrograman Dasar

[REFERENSI PEMROGRAMAN BAHASA C]Pemrograman Dasar C

return((n<1||n>12)? bulan[0] : bulan[n]);}void main(){int bl;printf("masukkan kode bulan[1..12] : ");scanf("%d", &bl);printf("bulan ke-%d adalah %s\n",bl, nama_bulan(bl));getch();}

9.4.6 Penggunaan fungsi *strlwr(str) yang digunakan untuk mengubah dari string huruf BESAR menjadi huruf kecil, dan fungsi strupr() yang digunakan untuk sebaliknya. Fungsi calloc() digunakan untuk memsan sejumlah memori (dinamis) yang akan digunakan untuk menampung hasil konversi, karena variable *ptrx tidak diketahui panjang data yang ditunjuk olehnya.

/*Nama File : POINTER6.C*/

#include <stdlib.h>#include <string.h>

Politeknik Elektronika Negeri Surabaya 77

Page 78: Buku Praktikum Pemrograman Dasar

[REFERENSI PEMROGRAMAN BAHASA C]Pemrograman Dasar C

void main (){ char str1[80],str2[80],*ptrx; strcpy (str1,"INI ADALAH HURUF BESAR SEMUA!!!"); strcpy (str2,"ini adalah huruf kecil semua!!!"); ptrx = NULL; puts ("Isi str1 = "); puts (str1); puts ("Isi str2 = "); puts (str2); puts ("Isi ptrx = "); puts (ptrx);

ptrx = (char *) calloc(80, sizeof (char)); ptrx = strlwr(str1); puts ("\nSetelah 'str1' diproses dengan strlwr()\n"); puts ("Isi str1 = "); puts (str1); puts ("Isi ptrx = "); puts (ptrx);

ptrx = strupr(str2); puts ("\nSetelah 'str2' diproses dengan strupr()\n"); puts ("Isi str2 = "); puts (str2); puts ("Isi ptrx = "); puts (ptrx);

getch ();}

Politeknik Elektronika Negeri Surabaya 78

Page 79: Buku Praktikum Pemrograman Dasar

[REFERENSI PEMROGRAMAN BAHASA C]Pemrograman Dasar C

PERCOBAAN 10

10.1 JUDUL : VARIABEL STRUKTUR

10.2 TUJUAN : Mempelajari penggunaan variable struktur dimana dipadukan dengan variabel yang pernah dicoba sebelumnya, yaitu meliputi pointer dan array serta dipadukan dengan fungsi. Bagaimana mendeklarasi, menginisialisasi, dan mengaskes dari suatu struktur juga dicoba disini.

10.3 TEORI : suatu variabel bertipe data struktur adalah dapat terdiri dari bermacam tipe variable yang ada, jadi suatu struktur dapat berisi interger, float, char dan sebagainya.

Politeknik Elektronika Negeri Surabaya 79

Page 80: Buku Praktikum Pemrograman Dasar

[REFERENSI PEMROGRAMAN BAHASA C]Pemrograman Dasar C

10.4 PROGRAM PERCOBAAN

10.4.1 Informasi tanggal terdiri dari tanggal, bulan dan tahun, sehingga dapat dibuat strukturnya menjadi struktur tanggal, yang berisi variable tgl, bulan, dan tahun yang bertipe integer.

/*Nama File : STRUKT1.C*/

#include <stdio.h>struct tanggal{ /* definisi global dari tipe tanggal */int tgl;int bulan;int tahun;};main (){ struct tanggal now; now.tgl = 14; now.bulan = 05; now.tahun = 2003; printf ("Sekarang tanggal "); printf ("%d/%d/%d\n",now.tgl,now.bulan,now.tahun); getch ();}

Politeknik Elektronika Negeri Surabaya 80

Page 81: Buku Praktikum Pemrograman Dasar

[REFERENSI PEMROGRAMAN BAHASA C]Pemrograman Dasar C

10.4.2 Suatu struktur dapat dilewatkan pada suatu argument dalam suatu fungsi, sehingga nilai-nilai yang berada dalam struktur tersebut dapat digunakan didalam fungsi. Program dibawah ini menggunakan keyboard sebagai masukkan tanggal hari ini, kemudian informasi tanggal tersebut dilewatkan argument dalam fungsi, untuk diproses oleh fungsi.

/*Nama File : STRUKT2.C*/#include <stdio.h>#include <conio.h>

struct tanggal { /*definisi global dari tipe tanggal */int tgl;int bln;int thn;};void cetak_tgl (struct tanggal now){ static char *bulan [] = { "Kode bulan salah", "Januari", "Februari", "Maret", "April", "Mei", "Juni", "Juli", "Agustus", "September", "November",

Politeknik Elektronika Negeri Surabaya 81

Page 82: Buku Praktikum Pemrograman Dasar

[REFERENSI PEMROGRAMAN BAHASA C]Pemrograman Dasar C

"Desember", }; printf ("\nTanggal sekarang adalah : "); printf ("%d %s %d\n",now.tgl,bulan[now.bln],now.thn);}void main (){ struct tanggal skr; printf ("Masukkan tanggal hari ini (tgl/bln/thn): "); scanf ("%d/%d/%d",&skr.tgl,&skr.bln,&skr.thn); cetak_tgl(skr); getch ();}

10.4.3 Suatu struktur dapat digunakan didalam struktur yang lain (nested), sehingga menambah keragaman dari isi suatu struktur. Misalkan struktur tanggal digunakan didalam struktur siswa, dimana masing-masing siswa mempunyai informasi struktur tanggal.

/*Nama File : STRUKT3.C*/

Politeknik Elektronika Negeri Surabaya 82

Page 83: Buku Praktikum Pemrograman Dasar

[REFERENSI PEMROGRAMAN BAHASA C]Pemrograman Dasar C

struct tanggal { /*definisi global dari tipe tanggal */int tgl;int bln;int thn;};struct orang { /*definisi global tipe orang*/char nama[30];struct tanggal lahir;};struct orang siswa; /* deklarasi global variabel siswa*/void main(){ /*memberikan nilai pada filled dari struktur siswa*/ strcpy (siswa.nama,"MUHAMMAD IHSAN"); siswa.lahir.tgl = 10; siswa.lahir.bln = 8 ; siswa.lahir.thn = 1970; printf ("Nama : %s\n",siswa.nama); printf ("Tgl Lahir : %d-%d-%d\n",siswa.lahir.tgl,siswa.lahir.bln,siswa.lahir.thn); getch ();}

Politeknik Elektronika Negeri Surabaya 83

Page 84: Buku Praktikum Pemrograman Dasar

[REFERENSI PEMROGRAMAN BAHASA C]Pemrograman Dasar C

10.4.4 Penggunaan perpaduan antara struktur dengan array.

/*Nama File : STRUKT4.C*/struct bln {int jumlah;char nama[3];};

void main(){ int i ; static struct bln bulan[12] = {{31,{'J','a','n'}},{28,{'F','e','b'}},{31,{'M','a','r'}},{30,{'A','p','r'}}, {31,{'M','e','i'}},{30,{'J','u','n'}},{31,{'J','a','l'}},{30,{'A','g','s'}},{31,{'S','e','p'}},{31,{'O','k','t'}}, {31,{'N','o','p'}},{31,{'D','e','s'}}}; printf ("Bulan Jumlah hari\n"); printf ("----- -----------\n"); for (i = 0;i<12;i++){ printf ("%c%c",bulan[i].nama[0],bulan[i].nama[1]); printf ("%c %d\n",bulan[i].nama[2],bulan[i].jumlah); } getch ();}

Politeknik Elektronika Negeri Surabaya 84

Page 85: Buku Praktikum Pemrograman Dasar

[REFERENSI PEMROGRAMAN BAHASA C]Pemrograman Dasar C

10.4.5 Menghitung penambahan detik pada jam tertentu, dilakukan dengan mendeteksi apakah jam sudah menunjukan 24, apakah menit sudah menunjukan 60, dan detik sudah mencapai angka 60, dan detik sudah mencapai angka 60. Dimana semua informasi jam disimpan pada struktur waktu, yang terdiri dari jam, menit dan detik.

/*Nama File : STRUKT5.C*/

struct waktu {int jam ;int menit ;int detik ;};struct waktu time_update(now)struct waktu now;{ struct waktu new_time; new_time = now; ++new_time.detik; if (new_time.detik==60){ new_time.detik = 0; ++new_time.menit; if(new_time.menit==60){

Politeknik Elektronika Negeri Surabaya 85

Page 86: Buku Praktikum Pemrograman Dasar

[REFERENSI PEMROGRAMAN BAHASA C]Pemrograman Dasar C

new_time.menit = 0; ++new_time.jam; if (new_time.jam==24) new_time.jam=0;} } return (new_time);}void main (){ static struct waktu tes[5] = { {11,59,59},{12,0,0},{1,29,59}, {23,59,59},{19,12,27}};int i;for (i = 0;i<5;i++){printf ("Waktu adalah %.2d:%.2d:%.2d",tes[i].jam,tes[i].menit,tes[i].detik);tes [i] = time_update(tes[i]);printf ("...satu detik berikutnya %2.d:%.2d:%.2d\n\n",tes[i].jam,tes[i].menit,tes[i].detik);}getch();}

Politeknik Elektronika Negeri Surabaya 86

Page 87: Buku Praktikum Pemrograman Dasar

[REFERENSI PEMROGRAMAN BAHASA C]Pemrograman Dasar C

10.4.6 Penggunaan perpaduan struktur dan array yang digunakan untuk menyimpan data kamus bermacam hewan dan keterangannya.

/*Nama File : STRUKT6.C*/struct entry {char kata [10];char definisi[50];};

/*******************************************************//*Sisipkan fungsi sama_str disini (lihat TUGAS - TUGAS */int sama_str(char s1[],char s2[]){ int i = 0, jawab; while(s1[i]==s2[i]&&s1[i]!='\0'&&s2[i]!='\0') ++i;if(s1[i]=='\0'&&s2[i]=='\0') jawab = 1; else jawab=0; return (jawab);}

Politeknik Elektronika Negeri Surabaya 87

Page 88: Buku Praktikum Pemrograman Dasar

[REFERENSI PEMROGRAMAN BAHASA C]Pemrograman Dasar C

/*******************************************************/int lihat(kamus,cari,jumlah)struct entry kamus[];char cari[];int jumlah;{ int i;

for (i=0;i<jumlah;++i) if(sama_str(cari,kamus[i].kata))return(i); return (-1);}void main(){ static struct entry kamus[100]={ {"Komodo","Kayaknya di sulawesi ada tuh"}, {"unta","Lahirnya di Mesir tapi gak bisa bahasa Arab"}, {"Kangguru","Suka melompat di Australia"}, {"Kingkong","Lawannya superman kali"},

{"Harimau","Belang - belang dan ada di Kalimantan"}, {"Kobra","Ular dari India"} , {"Kancil","Suka nyolong timun"} , {"Iguana","Mahal harganya

Politeknik Elektronika Negeri Surabaya 88

Page 89: Buku Praktikum Pemrograman Dasar

[REFERENSI PEMROGRAMAN BAHASA C]Pemrograman Dasar C

lho"} , {"Nyamuk","Nakal suka sedot sana sini"},{"Tikus","Suka menggoda cewek cakep"},{"Buaya","Wah ini istrinya pakaya"},

};

int banyaknya = 10; char kata[10]; int angka_masukan;

printf ("masukkan kata : "); scanf ("%s",kata); angka_masukan=lihat(kamus,kata,banyaknya);

if (angka_masukan!=-1)printf("%s\

n",kamus[angka_masukan].definisi);else printf ("Maaf, kata itu tidak ada dalam kamus.\n"); getch();

Politeknik Elektronika Negeri Surabaya 89

Page 90: Buku Praktikum Pemrograman Dasar