Bagian 1 INTRODUCTION

38
Bagian 1 INTRODUCTION

description

Bagian 1 INTRODUCTION. Awal Berkenalan. Mengapa mesti C ?. Sejarah C. Bahasanya ringkas, hanya terdiri dari 32 keyword menurut standar ANSI Tersedia secara komersial untuk segala jenis komputer dan sistem operasi Terstruktur sekaligus fleksibel - PowerPoint PPT Presentation

Transcript of Bagian 1 INTRODUCTION

Page 1: Bagian 1 INTRODUCTION

Bagian 1

INTRODUCTION

Page 2: Bagian 1 INTRODUCTION

Awal BerkenalanAwal Berkenalan

Sejarah CSejarah C

• Bahasa C hasil kreasi dari Dennis M. Ritchie (1972) di Bell Telephone Laboratory Inc., Murray Hill, New Jersey, USA (Sekarang dikenal dengan AT&T Bell Laboratory)

• Implementasi pertama pada OS UNIX, dan dijalankan di mesin DEC PDP-II

• Merupakan pengembangan dari B (Ken Thomson) dan bahasa BCPL/Basic Command Programming Language (Martin Richards)

Mengapa mesti Mengapa mesti C ?C ?

• Bahasanya ringkas, hanya terdiri dari 32 keyword menurut standar ANSI

• Tersedia secara komersial untuk segala jenis komputer dan sistem operasi

• Terstruktur sekaligus fleksibel

• Programnya bekerja lebih cepat dan lebih tangguh, karena akses dekat ke sistem

• Kebanyakan pengembangan bahasa pemrograman ke depan meniru sintax C (C-LIKE = mirip C), seperti : Java, Javascript, C#, Php,…

Page 3: Bagian 1 INTRODUCTION

Keyword C 32 keyword ANSI C

Beberapa compiler juga menyediakan beberapa keyword seperti berikut ini :

asm far huge pascalada fortran near

Catatan :

Semua keyword pada kode program C ditulis dengan huruf kecil

Page 4: Bagian 1 INTRODUCTION

Struktur Dasar Program CStruktur Dasar Program C

Setiap Program C terdiri dari satu atau lebih fungsi (function). Salah satu dari fungsi tersebut harus bernama main

[Deklarasi header/library][ Deklarasi variabel/konstanta] [ Deklarasi fungsi]Fungsi utama

[…] = optional, adanya tergantung kebutuhan

Struktur Program

Semua modul dalam bentuk fungsi (Perbedaan fungsi dan prosedur ?)

Tidak mengenal space sebagai pemisah, kecuali antar instruksi yang berbeda

Setiap statemen dipisahkan oleh semicolon (;)

Kode programnya bersifat case-sensitif(membedakan huruf kapital dan huruf kecil). Keyword dan perintah-perintah dituliskan dengan huruf kecil.

Karakteristik bahasa Karakteristik bahasa CC

Bandingkan dengan Struktur Program Pascal :

[Deklarasi nama program][Deklarasi unit][Deklarasi type][Deklarasi variabel/konstanta] [Deklarasi fungsi][Deklarasi Prosedur]Kode utama

Page 5: Bagian 1 INTRODUCTION

Format Penulisan deklarasi library/header

#include <header_name>

atau

#include “header_name”Contoh :

#include “stdio.h”atau

#include “c:\tc3\include\stdio.h”atau

#include <stdio.h>

Contoh

deklarasi

1

Bandingkan dengan pascal

Uses crt;

File header pertama sekali akan dicari di directory aktif saat ini, dan jika tidak ketemu akan dicari ke directory include yang ditentukan pada konfigurasi

File header hanya akan dicari di directory yang langsung ditentukan

File header hanya akan dicari di directory include yang ditentukan pada konfigurasi

?Perbandingan : Di pascal uses di C #include, di pascal unit di C header, di pascal unit merupakan file biner/terkompilasi (extention-nya *.tpu), di C header merupakan file ASCII (extention-nya *.h, dapat dibaca/dipelajari lebih lanjut)

Page 6: Bagian 1 INTRODUCTION

return-type function_name([parameter]){ [deklarasi variabel lokal] Statement Return(value)}

Format Penulisan deklarasi fungsi

Contoh :

Int jumlah(int A,int B){ Int C; C=A+B; Return C;}

Format Penulisan deklarasi variabel

Data_type variabel_nameContoh :

int A;

float B,C;

char s;

Contoh deklarasi2

Bandingkan dengan pascal :

Var

A :integer;

B,C : real;

S : char;Bandingkan dengan pascal :

Function jumlah(A,B:integer):integer;Var C :integer;begin C:=A+B; jumlah:= C;End;

Page 7: Bagian 1 INTRODUCTION

Contoh deklarasi3

Contoh fungsi utama pada C :

int main (){ Int F,G; F=5;G=8; printf(“Hasil jumlahnya : %d \n”,jumlah(F,G)); return 0;}

Bandingkan dengan pascal:

var F,G :integerbegin Int F,G; F=5;G=8; writeln(‘Hasil jumlahnya : ‘,jumlah(F,G));end.

Tentang Prosedur

Bahasa C secara khusus tidak memiliki prosedur, karena mudularisasi di C dilakukan dengan fungsi. Tetapi fungsi di C dapat di-akali untuk bekerja seperti prosedur.

Contoh dari prosedure pascal berikut :

Procedure cetak(x,y:integer;s:string);Begin gotoxy(x,y);textcolor(14); write(s);End;

Di C ditulis dengan :

void cetak(int x,int y, char *s){ gotoxy(x,y);textcolor(14); cprintf(“%s”,s);}

Page 8: Bagian 1 INTRODUCTION

Contoh program lengkap

/* program1 */

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

/*deklarasi fungsi hitung*/int hitung(int A,int B){int C;C=A+B;return C;}

/*deklarasi prosedur cetak */void cetak(int x, int y,char *s){ gotoxy(x,y); textcolor(14); cprintf("%s",s);}

/*program utama*/int main(){ int F,G; clrscr(); F=5; G=3; printf("Hasil jumlah : %d\n",hitung(F,G)); cetak(1,3,“Saya sedang belajar pemrograman”); cetak1,4,“bahasa C"); getchar(); return 0;}

Nama file : Program1.C : Bandingkan jika di pascal :

program program1;uses crt;

{deklarasi fungsi hitung}function hitung(A,B:integer):integer;var C:integer;begin c:=a+b; jumlah:=C; end;

{deklarasi procedure cetak}procedure cetak(x,y:integer;s:string);begin gotoxy(x,y); textcolor(14); write(s);end;

{program utama}var F,G :integer;begin clrscr; F:=5; G:=6; write(‘Hasil jumlah :',hitung(f,g)); cetak (1,3,“Saya sedang belajar pemrograman”); cetak1,4,“bahasa C"); readln;end.

Page 9: Bagian 1 INTRODUCTION

Proses Pembuatan Program AplikasiProses Pembuatan Program Aplikasi

Source Code(*.c,*.cpp)

Preprosessor

Compiler

Object Code(*.obj)

Linker

Executable File(*.exe)

ASCII Editor

Include File(*.h)

ExecutionExecution

Output

Static Library File(*.Lib)

Dynamic Library File(*.dll)

MakeMulai

Selesai

Run

Page 10: Bagian 1 INTRODUCTION

Bagaimana Menjalankan C ?Bagaimana Menjalankan C ?(Dengan aplikasi apa dan dimana program-program C bisa dijalankan ?)

•Program C dapat dijalankan baik pada sistem operasi DOS, Windows maupun Linux, juga berbagai sistem operasi lainnya

•Pada DOS kita dapat menggunakan Turbo C (Borland) ver 3 ke bawah atau Microsoft C (kurang popular)

•Pada Windows kita dapat menggunakan Borland C versi 4.x atau ver 5.x (terakhir BCC ver 5.2), symantec C, dan Visual C

•Pada Linux kita bisa gunakan GNU C Compiler (GCC)

•Secara umum kode program C di semua jenis compiler C dan pada berbagai sistem operasi sama saja. Artinya tidak perlu dilakukan perubahan kode program yang berarti jika hendak menjalankan C melalui compiler yang berbeda-beda tadi (?). Setidaknya setiap compiler C umumnya mengacu ke ANSI C sebagai standarisasi C.

•Tetapi beberapa compiler C ada yang memiliki kelengkapan library yang berbeda dengan compiler lain, sehingga perlu beberapa penyesuaian untuk transfer kode programnya. Contoh : GCC di Linux tidak memiliki library/header conio.h, sedangkan compiler C di DOS menggunakannya.

•Umumnya compiler C menggunakan sistem pemberitaan kesalahan (error message) yang runtun yang berbeda dengan error message di bahasa lain. Hal ini perlu diperhatikan untuk efisiensi trouble-shoot kode program

Page 11: Bagian 1 INTRODUCTION

Menjalankan program C dengan Turbo C ver 3.0

Memulai :

Dari prompt DOS …\bin\tc.exe {enter}Dari windows Click icon atau Click file Tc.exe melalui Window Explorer

Petunjuk Dasar :

•Ketikkan kode program di tempat yang disediakan•Menyimpan program : File – Save atau File – Save As•Mengkompail program (menghasilkan file obj) : Compile-Compile (Alt+F9)•Mengkompail sekaligus me-link file (menghasilkan file exe) : Compile – Make (F9)•Menjalankan program : Run – Run (Ctrl+F9)•Menkonfigurasi directori include, library,output dan source : Options – Directories•Yang lain silahkan dicoba sendiri !

Page 12: Bagian 1 INTRODUCTION

Tampilan awal Turbo C 3.0 :

Tampilan T

C3

Page 13: Bagian 1 INTRODUCTION

Menjalankan program C dengan Visual C++

Dalam hal ini yang dimaksud Visual C adalah fasilitas untuk menghasilkan program berbasis tex-nya (program DOS) yaitu : Win32 Console Application - nya

Memulai :

•Jalankan Visual C dari icon-nya•Setelah tampil menu visual C :- Pilih : File – New- Dari dialog yang muncul click tab projects- Dari tab projects pilih icon : Win32 Console Application, beri Project name misal : Program1, lalu click OK

- Muncul dialog lagi, pilih : An Empty Project,dan click tombol Finish, lalu OK

- Pada tab bagian kiri pilih tab : FileView- Pada badan tab click : program1 files dan pilih : Source file- Click kanan dari source file, pilih : Add Files to Folder, beri nama misal : program1.c, pada dialog yang muncul pilih OK

- Di dalam icon Source File, pilih : Program1.c, akan muncul layar tempat kita mengetikkan kode program

- Ketikkan kode program pada layar tersebut, Compile dengan : Ctrl+F7 dan jalankan dengan Ctrl+F5

- Jika kode ada kesalahan pesan kesalahan akan muncul di bagian bawah menu

Page 14: Bagian 1 INTRODUCTION

Tampilan Visual C : Win32 Concole Application :Tampilan VC

Page 15: Bagian 1 INTRODUCTION

Cara menjalankan C dengan GCC di Linux

Langkah :

•Ketikkan kode program C dengan salah satu editor ASCII di linux, seperti : vi, joe, emacs, pico,….

•Setelah selesai mengetik kode program, simpan dan beri nama dengan exstention C, misal : Program1.C

•Jika hanya ingin meng-compile kode program lakukan dengan:

gcc –c program1 program1.c

•Jika ingin meng-compile sekaligus me-Link kode program lakukan dengan perintah :

gcc program1.c –o program1

atau

gcc –o program1 program1.c

Jika tidak ada kesalahan program dapat dijalankan dengan perintah :

./program1

Page 16: Bagian 1 INTRODUCTION

Error Messages(Pesan Kesalahan)

Kode program (source code) yang belum sesuai dengan aturan-aturan C, jika di-compile atau di-link akan memberikan pesan kesalahan tertentu sesuai dengan jenis kesalahannya

Jenis pesan kesalahan :

Warnings : A problem that can be overlooked.

• Compile-time warnings

• TLINK warnings

• TLIB warnings

Errors : A problem that should be fixed such as a missing declaration or a type mismatch.

•Compile-time errors

•TLINK errors

•TLIB errors

•MAKE errors

•Run-time errors

Fatal Errors : A problem of critical nature that prevents execution from continuing.

•Compile-time fatal errors

•TLINK fatal errors

•MAKE fatal errors

Dari sisi lain jenis kesalahan juga dapat dibedakan seperti :

•Compile-Time Error

•Linking Error

•Run-Time Error

Umumnya compiler C akan mendaftarkan semua runtunan kesalahan yang terjadi yang diakibatkan oleh setiap sebuah kesalahan. Pemberitaan kesalahan beruntun seperti ini harus diamati dengan cermat untuk dapat memperbaiki kesalahan tersebut dengan cepat.

Page 17: Bagian 1 INTRODUCTION

Eksperimen Pertama Pemrograman CEksperimen Pertama Pemrograman C(Lakukan di labor)

•Aktifkan editor pada Compiler C yang anda miliki (dalam hal ini lakukan dengan Turbo C) dan ketikkan kode C berikut :

{ Harap perhatikan pengetikan huruf kecil dan huruf besar harus sama! }

#include <stdio.h>

int A;int B,C;int main(){ A=5;B=3; C=A+B; printf(“Hasiljumlah =%d \n”,C); return(0);}

•Simpan dengan nama file : hitung.c

•Compile (Alt+F9) kode tersebut untuk menghasilkan file : hitung.obj, buktikan dengan melihatnya melalui prompt DOS

•Link (Compile-Link) kode file objek tersebut untuk menghasilkan file : hitung.exe

•Dari prompt DOS atau windows explorer catat besar file-file berikut :

Hitung.c : ……… bytes

Hitung.obj : ……… bytes

Hitung.exe : ……… bytes

•Jalankan program dari prompt DOS dengan mengetikkan hitung.exe {enter} atau dari Turbo C dengan Ctrl+F9.

{Perhatikan bahwa program belum menghasilkan apa pun di layar}

•Modifikasi kode program di atas menjadi seperti berikut :int A;

int B,C;int main(){ A=5;B=3; C=A+B; return(0);}

•Compile dan Link kembali program (secara singkat lakukan langsung dengan Run-Run). Perhatikan jika anda melakukannya dari menu Turbo C hasil program tidak akan terlihat. Untuk itu tambahkan di akhir program dengan perintah : getchar() (sebelum return 0)

•Hasil program akan tampak di layar :Hasil jumlah =8

Bersambung…

Page 18: Bagian 1 INTRODUCTION

…sambungan

Lanjutan Eksperimen

•Program yang baru anda cobakan belum bersifat interaktif sebab input variabel A dan B langsung dimasukkan di dalam kode program. Untuk menjadikan program interaktif tambahkan perintah Scanf() sehingga kode program menjadi seperti berikut :

#include <stdio.h>int A;int B,C;int main(){ //A=5;B=3; printf("Masukkan nilai A :"); scanf("%d",&A); printf("Masukkan nilai B :"); scanf("%d",&B); C=A+B; printf(“Hasiljumlah =%d \n”,C); getchar(); return(0);}

•Simpan kembali program, jalankan dan catat hasilnya !

•Tanda // digunakan sebagai komentar untuk C++ tetapi dikenal juga pada turbo C ver 3.0 untuk C. Tanda komentar khusus C adalah : /* …….*/.

•Untuk membersihkan layar setiap program dijalankan, tambahkan fungsi clrscr() di tempat yang sesuai.

•Untuk menentukan posisi kursor gunakan fungsi gotoxy(), untuk memberikan efek warna gunakan fungsi textcolor() , textbackground() dengan pencetakan cprintf(). Fungsi-fungsi ini deklarasinya berada pada header conio.h

•Statement Pengulangan pada C dapat menggunakan :

While (….) { Statement yang diulang}

•Untuk menghilangkan statemen return 0 dalam fungsi main type kembaliannya dganti dari int menjadi void : void main()

•Selanjutnya lengkapi kode program tersebut menjadi seperti berikut :

{Aktifkan fungsi fflush() jika getchar() tidak berfungsi ! }

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

void main(){ int A,B,C; char k; k='y'; while(k=='y') { clrscr(); gotoxy(1,3); textcolor(14);cprintf("Masukkan nilai A : "); scanf("%d",&A); //fflush(stdin); gotoxy(1,4); textcolor(12);cprintf("Masukkan nilai B : "); scanf("%d",&B); //fflush(stdin); C=A+B; gotoxy(1,5); textcolor(9);printf("Hasil jumlah = %d \n",C); gotoxy(1,8); printf("Hitung lagi [yt] ? "); k=getchar(); }}

Page 19: Bagian 1 INTRODUCTION

Latihan1. Lengkapi kode program di atas untuk memberikan hasil pengurangan, perkalian, pembagian,

dan pangkat !

2. Buatlah program C untuk menghitung persamaan kuadrat dengan rumus ABC, dengan contoh kode programnya dalam pascal seperti berikut :

program rumus_abc;uses crt;var a,b,c :integer; d,x1,x2 :real;

beginclrscr;write('Masukkan nilai koefisien a : ');readln(A);write('Masukkan nilai koefisien b : ');readln(B);write('Masukkan nilai koefisien c : ');readln(C);d:=b*b-4*a;if d>0 then begin x1:=(-b-d)/(2*a); x2:=(-b+d)/(2*a); writeln; writeln('Penyelesaian '); writeln('X1 = ',x1:4:2); writeln('X2 = ',x2:4:2); endelse if d=0 then begin x1:=-b/(2*a); x2:=x1;

writeln('Penyelesaian '); writeln('X1 = ',x1:4:2); writeln('X2 = ',x2:4:2); endelse begin writeln; writeln('Penyelesaian akar imajiner'); end;readln;end.

Page 20: Bagian 1 INTRODUCTION

3. Cobakan program-program di atas (hitung.c dan rumusABC.c) menggunakan Gcc di linux dengan menghilangkan fungsi-fungsi dari header conio.h

4. Catat pesan-pesan kesalahan yang pernah muncul selama anda ber-eksprimen dan latihan, baik pada Turbo C mapupun pada Gcc Linux

Page 21: Bagian 1 INTRODUCTION

Bagian 2

Unsur-unsur kode program C

Page 22: Bagian 1 INTRODUCTION

Unsur-unsur Program CVariabel

• Yaitu identifier yang digunakan untuk menam-pung data/informasi

• Format deklarasi variabel <tipe data> <nama variabel> <tipe data> <nama variabel> = <nilai inisial>

• Contoh : int a,b,c;float p,q;int x=20;

 • Syarat penulisan variabel :

1.Diawali dengan huruf atau garis bawah dan selanjutnya bisa diikuti oleh huruf atau garis bawah atau angka

2.Panjang variabel maksimum 32 karakter (standar ANSI)

3.Tidak boleh menggunakan keyword

  Tipe Data

• Yaitu yang menentukan jenis data yang tersimpan pada variabel.

•Tipe data dasar di C adalah :

Char; yaitu tipe data character

Int ; yaitu tipe data integer, bilangan bulat

Float; yaitu tipe data pecahan, bilangan floating point, yang menggunakan titik desimal dan exponen

Double; yaitu bilangan double-precision floating point, seperti float tetapi angka signifikannya lebih besar

{Informasi lebih detail pada hal. Selanjutnya}

•Sebenarnya ada dua tipe data dasar lain yang juga sering digunakan, yaitu void yang sering digunakan pada fungsi dan enum yang akan dijelaskan kemudian

•Escape sequence

\t tab \” double quote\n new line \\ backsalash\b backspace \’ single quote\f form feed \r carriage retrun

\ddd ASCII code (octal)\xdd ASCII code (hexa)

Page 23: Bagian 1 INTRODUCTION

Type data dasar C

Perhatikan: int dan short int mempunyai jangkauan dan jumlah bit yang sama. Untuk IBM PC memang kedua tipe data ini tepat sama, tetapi pada mesin lain seperti komputer VAX short int adalah 8 bit

Page 24: Bagian 1 INTRODUCTION

•Operator Arithmatic :

+ - * / %

Contoh :

c=a+b;d=5%2;

{ Note : Pangkat dengan fungsi pow() }

•Operator Aritmatic Assignment

+= -= *= /= %=

Contoh :

c=5;c+=2; {c=7 dari c=c+2}c-=2; {…………………..}

Operator increment/decrement

++ --

Contoh :

c=4;c++; {c=5 dari c=c+1}c--; {…………………..}a=5;b=a++; {a=6 b=5}b=++a; {a=6 b=6}

•Operator relational< > <= >= == {equal}!= {not equal}

Contoh :

(5>=2)(k==toupper(‘y’))(n!=0)

•Operator Logika

&& {AND}

|| {OR}

! (Not}

Contoh :

(n!=0) && (k=toupper(‘y’)) A || B

•Operator pointer

& {address of}

* {value of}

Contoh :

{ Next discussion }

Operator•Operator kondisional

?:

Contoh :

z = (x < y) ? x : y;

pernyataan di atas sama dengan :

if (x < y) z = x; else z = y;

•Operator Pergeseran bit<< {Shift Right}>> {Shift left}

Contoh :

A=1;B=A << 3 {B=8}

Operasi-operasi berikut ini valid :

c=b=a+5; c=b=(c!=d);

Page 25: Bagian 1 INTRODUCTION

Statemen Input-Output•Statemen input dalam hal ini yaitu fungsi

yang gunanya untuk menerima data dari keyboard

•Statemen output yaitu fungsi yang gunanya untuk menuliskan data ke layar monitor

•Yang termasuk statemen input :getchar() getche()getch() gets()scanf()

•Yang termasuk statemen output :putsputchar()putch()printf()cprintf()

Page 26: Bagian 1 INTRODUCTION
Page 27: Bagian 1 INTRODUCTION

Statemen Kontrol•Yaitu statemen yang dapat mengatur

arah/aliran program. Secara umum dapat di-kelompokkan kepada :

1.Kontrol Pengulangan (loop); yaitu statemen yang dapat membuat sebagian kode program dilaksanakan beberapa kali (mengulangi)

2.Kontrol Penyeleksian (decision); yaitu statemen yang dapat memilih apakah sebagian kode program dilaksanakan atau tidak (memutuskan)

•Yang termasuk kontrol Pengulangan :forwhiledo-while

•Yang termasuk kontrol Penyeleksian :ifif-elseswitch-case

KONTROL PENGULANGAN :

for

Format :

for (exp1;exp2;exp3) statemen_diulang

atau

for (exp1;exp2;exp3) { statemen_diulang }

Exp1 = ekspresi untuk inisialisasiExp2 = ekspresi untuk conditionalExp3 = ekspresi untuk decrement

Contoh :int i; for (i=0;i<100;i++) printf(“%d\n”,i);

atau

for (int=0;i<100;i++) printf(“%d\n”,i);

Bandingkan dengan pascal :

Var i: integerFor i=1 to 100 do writeln(I);

Page 28: Bagian 1 INTRODUCTION

Pada C memungkinkan untuk membuat statemen for seperti berikut :

for(j=1,k=1;j<10 && k<12;j++,k++) { statement1 statement2 … }

While

Format :

while(exp) statement

atau

while(exp){ Statement1; Statement2;}

Exp = ekspresi boolean yang dapat true atau false, tetapi pada C true berarti tidak 0 dan falsa berarti 0.

Statemen akan dilaksanakan berulang-ulang selama exp tidak 0.

Contoh :

int h=1;while(h<10) { printf(“%d”,hitung); hitung++; }

Boleh juga menjadi :

int h=1;while(h<10) printf(“%d”,hitung++)

do-while

Format :

do{ Statements}while(exp);

Perbedaannya dengan while yang pertama yaitu do-while pasti akan melaksanakan statemen yang diulang minimal sekali yaitu saat pertama dilalui, sedangkan while ada kemungkinan tidak melaksanakan statemen yang diulang jika exp bernilai 0.

While

Page 29: Bagian 1 INTRODUCTION

•Statemen do-while dapat digunakan seperti repeat-until pada pascal

Contoh :

char k; do{ … … printf(“ingin mengulang ?”); k=getchar();}while(k=toupper(‘y’));

Bandingkan jika di pascal :

repeat … … write(‘Ingin mengulang ?’); read(k);until (k<>upcase(‘y’));

KONTROL PENYELEKSIAN :

ifFormat :

If (exp boolean) statemen

atauIf (exp boolean){ statements}

Jika exp boolean menghasilkan nilai true (bukan0) maka statemen akan dilaksanakan, jika bernilai 0 tidak akan dilaksanakan

If (umur<50) printf(“Kerja terus..”);

Bandingkan dengan pascal :

If umur<50 then writeln(‘kerja terus’);

if-elseFormat :

if (exp boolen) statemen1;else statemen2;

Penyeleksian1

Page 30: Bagian 1 INTRODUCTION

atau : {lanjutan format if-else}

if (exp boolen) {statemen1; statemen2; }else {statemen3; statemen4; }

Contoh :

if (umur<50) printf(“kerja terus\n”);else printf(“anda pensiun\n”);

Penyeleksian2

Switch-case :

Fungsinya seperti case-of pada pascal atau select-case pada basic, yaitu untuk menggantikan if bertingkat.

Format :

Switch (exp){ case constant1 : statemen1;break; case constant2 : statemen2;break; case constant3 : statemen3;break; default : statemen4;}

Jika exp = constant1 maka laksanakan statemen 1, jika exp= constant2 maka laksanakan statemen 2, jika exp=constant3 maka laksanakan statemen 3, jika tidak juga laksanakan statement 4.

Contoh :

……

Tentang statemen : continue, break, exit dan return()

Page 31: Bagian 1 INTRODUCTION

Fungsi•Kegunaan :

Salah-satu implementasi prinsip modularisasi pada C

Menghindari penulisan kode yang sama berulang kali

Istilah-istilah yang sering muncul:

Called function : …

Calling function : …

Formal argumen : …

Aktual argumen : …

Call by value : …

Call by reference : …

Contoh 1 :

#include<stdio.h>

void main(){int a,b,c;int hitung (intg x, intg y);printf(“Masukkan nilai a dan b :”);scanf(“%d %d”,&a,&b);c=hitung(a,b);printf(“%3d+%3d =%3d”,a,b,c);

}

int hitung(int x,int y){ int z; z=x+y; return(z);}

• Deklarasi fungsi boleh sebelum dan setelah fungsi main()

Contoh 2 :

/*Nama File : tukar1.c Prinsip Call by value Oleh : */

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

void tukar(int a,int b){ int temp; temp=a; a=b; b=temp;}

void main(){clrscr();int x=3, y=5;printf("\nNilai x dan y semula");printf("\nx = %d y = %d",x,y);tukar(x,y);printf("\nNilai x dan y kemudian");printf("\nx = %d y = %d",x,y);getch();}

Istilah untuk scope variabel :Global (extern)Local (automatic)Static: tetap menyimpan nilai walau keluar dari fungsiRegister: menyimpan nilai di salah satu register pada CPU

Page 32: Bagian 1 INTRODUCTION

Pointer, Array dan StringPointer

•Merupakan variabel yang fungsinya menyimpan alamat (address) variabel

•Fasilitas untuk mengakses suatu variabel dengan memakai adress

Kegunaan•Calling by reference•Mengembalikan lebih satu nilai dari

satu fungsi•Mengirimkan array dan string dari

suatu fungsi ke fungsi lain•Memudahkan dalam manipulasi array•Manipulasi memory dalam system•Membuat struktur data dinamis seperti

linklist, tree, graph dan sebagainya

Deklarasi pointer<tipe_data> *<nama_variabel>

Contoh :

int *ptrA;

ptrA adalah variabel pointer untuk tipe data integer

23

1 2 3 4 5 6 (A)

ptrA

Alamat memory

Jika misalnya variabel A berisi nilai 23, dan ptrA menunjuk variabel A yang merupakan representasi alamat memory nomor 2, maka hal tersebut dapat diilustrasikan seperti berikut :

Prosesnya dalam kode C dapat dituliskan seperti berikut :

Int A;Int *ptrA;A=23;*ptrA=&A;

Jadi operator * digunakan untuk menyatakan isi (content of) pointer, sedangkan operator & digunakan untuk menyatakan alamat memory (adress of) variabel .Jika ingin meng-akses (mencetak) nilai 23 (isi memory) melalui variabel biasa, maka perintahnya adalah :

Printf(“%d”,A);

Jika ingin meng-akses (mencetak) nilai 23 (isi memory) melalui pointer, maka perintahnya adalah :Printf(“%d”,*ptrA);

Page 33: Bagian 1 INTRODUCTION

Percobaan pointer• Coba program berikut dan amati untuk

memahami kode pemrograman pointer :/* Nama File :pointer.c */#include <stdio.h>#include <conio.h>

void main(){int A;//deklarasi var biasaint *ptrA; //deklarasi var pointerclrscr();A=23;ptrA=&A;printf("\n A = %d",A); //isi dari var Aprintf("\n&A = %u",&A); //alamat memory var Aprintf("\n*(&A) = %u",*(&A)); //isi di alamat pada var Aprintf("\nptrA = %u",ptrA);//isi dari var pointer ptrAprintf("\n*ptrA = %d",*ptrA);//isi di alamat pada var ptrAprintf("\n&ptrA = %u",&ptrA);//alamat memory var ptrAgetch();}

/*Nama File : tukar2.c Prinsip Call by reference Oleh : */

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

void tukar(int *a,int *b){ int temp; temp=*a; *a=*b; *b=temp;}

void main(){clrscr();int x=3, y=5;printf("\nNilai x dan y semula");printf("\nx = %d y = %d",x,y);tukar(&x,&y);printf("\nNilai x dan y kemudian");printf("\nx = %d y = %d",x,y);getch();}

• Contoh program penerapan pointer untuk argumen fungsi call by reference :

Page 34: Bagian 1 INTRODUCTION

ArrayContoh program untuk menguji array dan looping dengan for :

/* Nama File : acak.c */#include <stdio.h>#include <stdlib.h>

void main(){ int acak[5][5][5]; int i,j,k;

/*Harga awal untuk fungsi random*/ srand(1234);

for (i=0;i<5;i++) { for(j=0;j<5;j++) { for(k=0;k<5;k++) { acak[i][j][k]=rand(); printf("\n Acak[%d][%d][%d]\ = %d",i,j,k,acak[i][j][k]); } } }}

• Array adalah suatu variabel yang dapat menyimpan beberapa item data yang tipenya sama

• Deklarasi array :Format :

<tipe_data> <nama_variabel>[exp1][exp2][…]

Contoh :

int bulan[12];float harga[50],barang[50][50];char nama[20];

• Indeks awal array dimulai dari 0 sehingga variabel bulan di atas terdiri dari bulan[0] s/d bulan[11].

• Nilai array dapat langsung diinisial seperti contoh berikut :int A[5] = {15,34,32,12,11};

artinya : mendeklarasikan A sebagai variabel array sekaligus memberikan nilai 15 ke A[0], 24 ke A[1], 32 ke A[2], 12 ke A[3], 11 ke A[4].

Latihan : ubah kontrol pengulangan for pada kode program di atas dengan while !

Page 35: Bagian 1 INTRODUCTION

Array dan fungsi

•Pada fungsi sebagai argumen formal array hanya diberi tanda [] saja tanpa diberi indeks, sedangkan sebagai argumen aktual array yang disebut namanya saja tanpa [].

Contoh :

//called functionint maksimum(int d[],maks){…}

void main(){int dat[10];…//Calling functionHasil=maksimum(dat,n);

}

Latihan : Lengkapi kode program tersebut yang tujuannya mencari nilai maksimum dari sekelompok nilai yang dimasukkan melalui keyboard

Array dan pointer

•Nama array adalah alamat memory (pointer) pertama dari elemen array tersebut. Jika A adalah array berdimensi satu maka alamat memory dari elemen pertama adalah &A[0] atau A saja. Sehingga &A[i] sama dengan (A+i). Maka A[i] pun sama dengan *(A+i)

•Berikut contoh program tentang bagaimana mengakses data array menggunakan konsep pointer :

Lanjut

Array

/* Nama file :p_array.c */

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

void main(){ int Nilai[5]={55,75,60,90,80};

clrscr(); for(int i=0;i<5;i++) { //akses dengan indeks array printf("\nNilai[%d] = %d",i,Nilai[i]); //akses dengan pointer printf("\n*(Nilai+%d)= %u",i,*(Nilai+i));

}}

Page 36: Bagian 1 INTRODUCTION

StringString•String adalah array dari tipe character yang

diakhiri dengan null character (\0)•Data konstan string ditulis dengan diapit oleh

tanda petik dua (“…string…”)•Character string konstan memiliki scope

static yang berarti …………………………………………………………..

•Deklarasi tipe string :Format :char <nama_variabel>[exp]

atau

char <nama_variabel>[]={inisial}

atauchar *<nama_variabel>

Contoh :

char nama[];char *alamat;

•Pemberian nilai inisial ke string dapat dilakukan dengan :

char nama[]=“Hanif”;

Atau

char nama[]={‘H’,’a’,’n’,’I’,’f’,’\0’};

•Deklarasi char *nama menunjukkan bahwa string adalah pointer, atau dapat diakses dengan cara-cara yang sama dengan pointer atau array

•Contoh program mengakses string dalam function :

/*Nama file : p_string.c */

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

void ubah_nama(char *nama){nama=strcat(nama," Nasution");}

void main(){ char *nm; clrscr(); printf("\nMasukkan nama anda :");gets(nm); ubah_nama(nm); printf("\nNama anda sekarang : %s",nm); getch();}

Page 37: Bagian 1 INTRODUCTION

StructureStructure• Struktur yaitu suatu variabel yang dapat

menyimpan sejumlah item dari tipe data yang berbeda.

• Struktur pada C sama dengan record pada pasca

• Deklarasi Struktur :Format :struct <nama_struktur>

{ member1 member2 member3 …

};

• Setelah struktur dideklarasikan, selanjutnya dapat dideklarasikan variabel jenis struktur :

<nama_struktur> <nama_variabel>

Contoh :

struc mahasiswa { char nim[10]; char nama[25];

int umur; }

mahasiswa amir, amat, tuti;

•Boleh juga digabung langsung seperti berikut :

struc mahasiswa { char nim[10]; char nama[25]; int umur; } amir, amat, tuti;

•Dari deklarasi tersebut berari variabel amir memiliki 3 elemen yaitu : amir.nim, amir.nama dan amir.umur

•Variabel structur dapat langsung diinisialisasi seperti berikut :

mahasiswa amir ={“20019823”,”Amir mahmud”,19};

yang sama dengan :amir.nim=“20019823”;amir.nama=”Amir mahmud”;amir.umur=19;Tugas/Latihan :

Buatlah program data mahasiswa yang memiliki dua operasi yaitu : entri dan tampil. Item datanya terdiri dari : nim,nama, alamat,tempat & tanggal lahir. Bila perlu gunakan menu sederhana untuk memilih operasi.

Anda perlu membaca refrensi lain untuk menyelesaikan tugas ini !

Page 38: Bagian 1 INTRODUCTION

Pemrograman File