I.1. Tujuan 1. Mampu membuat source code(kode sumber) bahasa C. 2. Mengerti alur pembuatan program bahasa C. 3. Mampu membuat dan mengeksekusi program sederhana.
I.2. Deskripsi I.2.1. Penggunaan Compiler Miracle C Buka Compiler Miracle C dengan meng-click aplikasi yang ditunjuk oleh panah berwarna merah( Jika belum ada Compiler Miracle C, silahkan terlebih dahulu meng-install-nya)
maka akan tampil tampilan seperti berikut ini.
Jika Editor sudah terbuka, gunakan CTRL-N ( File – New) untuk memulai pembuatan program. Tombol F6 untuk mengkompilasi, tombol F7 untuk mem-build menjadikan executable file, tombol F8 untuk mengeksekusi berparameter. Untuk mengeksekusi program bisa dilakukan dari Command MS Dos (perintah CMD dari Menu RUN Windows) dengan cara mengetikan nama file executable yang akan dieksekusi.
File HelloWord.Exe dieksekusi melalui Command MS Dos sebagai berikut. Struktur Program Berikut ini adalah contoh dari sebuah program utama dalam bahasa C /* File : HelloWord1.c */ /* Nama pembuat : Jihadun Timus */ /* Deskripsi : Program untuk menuliskan kata asalam ke layar */
Keterangan : 1.Tidak ada aturan penulisan ketat tentang posisi karakter seperti dalam bahasa - bahasa berorienasi kolom (misalnya Fortran, Cobol). Walaupun demikian disarankan agar pengetikan program dilakukan dengan identasi, agar program mudah dibaca. 2.Fungsi main () adalah nama fungsi yang menandai awal dan akhir eksekusi program. Suatu program dalam bahasa C harus mempunyai satu fungsi yang bernama main. 3.Return value main akan diberikan ke lingkungan yang menjalankan program (biasanya berupa angka integer, yang menyatakan tingkat kesalahan yang terjadi pada saat terminasi program). Kebanyakan program tidak mengembalikan nilai sehingga deklarasinya adalah void main () 4.Parameter argc menyatakan jumlah argumen yang diberikan pada program pada saat dipanggil (nama program dianggap sebagai argumen, sehingga jumlah argumen minimum adalah 1). 5.Parameter argv adalah array string berakhiran ‘\0’ (null-terminated). Isi array string pertama adalah, argv[0] yaitu nama program, argv[1] yaitu nama argumen program kesatu, argv[2] adalah nama argumen program yang kedua dan seterusnya. 6.Parameter envp adalah pointer ke array string lingkungan. Akhir array ditandai dengan NULL. Saran : Sebaiknya penulisan program dalam bahasa C, mengikuti struktur dari notasi algoritmik yang dipelajari dalam kuliah.
Compiling dan Linking Sumber ( *.c) Compiler Miracle C .OBJ
.OBJ lainnya Linking & Build .LIB .EXE .MAP
Compiling Standarnya adalah source.c,,, akan menghasilkan .obj Linking Standarnya adalah source.obj,, akan menghasilkan file executable Juga akan dihasilkan file .map Extention File .OBJ : Merupakan object file, formatnya adalah binary file .MAP : Merupakan file yang menjelaskan tentang pemakaian alamat dan ukuran register segment yang digunakan oleh program sumber ketika running. .EXE : Merupakan file executable yang siap di run
I.2.2. Membuat kode sumber dalam bahasa C Sebelum membuat kode sumber dalam bahasa C, minimal Anda harus mampu menggunakan beberapa perintah DOS seperti DIR, delete, rename, mengerti autoexec.bat dan lainnya. Berikut adalah contoh program sederhana yang dituliskan dalam kode sumber bahasa C. Secara umum setiap teks yang diawali dengan ‘/*’ dan diakhiri ’/*’ menyatakan komentar atau keterangan program. I.3. Notasi Algoritmik Program HelloWord1 { Program menulis Asalamualikum wR wB ke layar}
Kamus
Algoritma Output (’Assalamualaikum wR wB’)
I.4. Kode Sumber #include { Nama File : HelloWord1.c Deskripsi : Program menulis Asalamualikum wR wB ke layer ] main () { /* Kamus */
I.5. Langkah Pengerjaan Ø Buka MS-DOS Prompt dan Compiler Miracle C untuk membuat program, mengkompilasi dan mengeksekusi. Ø Ketikkan kode sumber tersebut dengan menggunakan Editor Miracle C. Tulis apa adanya, jika ada yang menjorok ke dalam gunakan spasi. Jika sudah, simpan dengan nama “HelloWord1.c” (tanpa tanda petik). Ø Simpanlah program tersebut dengan nama file(” HelloWord1.c”). Ø Anda sudah membuat sebuah kode sumber dalam bahasa C, langkah berikutnya adalah melakukan kompilasi dan eksekusi. Untuk melakukan kompilasi dibutuhkan compiler C (Kita akan menggunakan miracle C ). Ø Langkah kompilasi : (berdasar contoh program di atas). Sintaks : - Setelah menekan F6, Lihat isi direktori dengan perintah DIR, akan terdapat file yang berekstensi “.obj” dan itu merupakan hasil dari kompilasi. Ø Setelah mengkompilasi anda lakukan Linking dengan menggunakan sintak : - - Tekan tombol F7, lihat isi direktori dengan perintah DIR, akan terdapat file yang berekstensi “.map”, “.exe” dan itu merupakan hasil dari linking. Ø Setelah kompilasi dan linking selesai maka anda memiliki sebuah program yang dapat dijalankan (karena sudah dimengerti oleh komputer). Cara menjalankan program : dari MS-DOS Prompt ketikkan nama program yang sudah dilinking, dari contoh di atas ketikkan “HelloWord1” lalu enter.
I.6. Pengamatan Ø Pada saat eksekusi, apa yang terjadi di layar ? Ø Apakah anda berhasil mengkompilasi dan me-linking program ? Jika tidak jelaskan alasannya ! Ø Coba Anda hilangkan teks yang mengandung “/*”, lakukan kompilasi dan lingking ulang, amati apa yang terjadi! Setelah mencoba kembalikan lagi ke isi file semula. Ø Coba Anda ganti printf dengan Pritnf, lakukan kompilasi dan linking ulang, eksekusilah, amati apa yang terjadi. Ø Ketikkan program HelloWord2.c di atas! Setelah selesai anda mengkompilasi, panggilah program tersebut dari Command MS Dos dengan perintah “HelloWord2 5 3 4” tanpa petik, amati apa yang terjadi.
Praktikum II
II.1. Tujuan : 1. Mampu membuat program yang memuat deklarasi variable bernilai, cara akses(tulis). 2. Memahami penggunaan fungsi inputan ”scanf”. II.2. Deskripsi Lihat Referensi untuk deklarasi variable, fungsi “scanf” II.3. Notasi Algoritmik Program InOut { Nama File : InOut1.c Tgl : 7 Desember 2006 Deskripsi : Contoh Program Kecil untuk memasukkan nilai bertipe string dan menuliskannya ke layar } Kamus String : char[80] Algoritma output("Masukan sebuah string :"); input(string); output("String yang dimasukan adalah:", string);
II.4. Kode Sumber #include /* Program InOut Nama File : InOut1.c Tgl : 7 Desember 2006 Deskripsi : Contoh Program Kecil untuk memasukkan nilai bertipe string dan menuliskannya ke layar */
/*Kamus*/ char string[80]; /*Algoritma */ printf("Masukan sebuah string :"); scanf("%s",string); printf("String yang dimasukan adalah: %s\n", string); II.5. Langkah Pengerjaan · Tuliskanlah kode sumber tersebut dalam sebuah editor. · Lakukan kompilasi dan linking sampai tidak ada error. · Lakukanlah Eksekusi. II.6. Pengamatan · Masukkan nilai ”Budi” tanpa petik, apa yang terjadi di layar ? · Ubahlah perintah scanf(“%s”, string) menjadi scanf(“%d”, string, apa yang terjadi di layar ? Mengapa ? · Kembalikan pada semula program yang anda ubah tadi! Ubahlah kamusnya : dari char string[80], menjadi char string. Lakukan kompilasi! Apa yang terjadi ? Mengapa ? Coba anda betulkan programnya !
Praktikum III
III.1. Tujuan : 1. Memahami dan mengerti jenis-jenis analisa kasus 2. Memahami penggunaan analisa kasus. III.2. Deskripsi
Analis Kasus (if-then-else, switch ) Lihat Referensi! Pengulangan (repeat-While, for, iterate) Lihat Referensi! III.3. Notasi Algoritmik Program AnalisaKasus {Nama File : Kasus.c ;Tgl : 7 Desember 2006 ;----------------------------------------------------------------- ;Contoh Program Kecil untuk menganalisa bilangan yang dimasukkan dan Menuliskannya dalam kalimat bilangan sesuai bilangannya } Kamus a : integer
Algoritma output("Masukan suatu bilangan : ") input(a); output("Bilangan anda dapat ditulis "); depend on (a) 10 : output("Sepuluh ") 11 : output("Sebelas ") 12 : output("Dua Belas ") 13 : output("Tiga Belas ") Else : output("Cari sendiri ") III.4. Kode Sumber /*Program AnalisaKasus ;Nama File : Kasus.c ;Tgl : 7 Desember 2006 ;----------------------------------------------------------------- ;Contoh Program Kecil untuk menganalisa bilangan yang dimasukkan dan Menuliskannya dalam kalimat bilangan sesuai bilangannya */
/*;Kamus */ int a; /*;Algoritma */ printf("Masukan suatu bilangan : "); scanf("%d",&a); printf("\nBilangan anda dapat ditulis "); switch (a) { case 10 : printf("Sepuluh "); break; case 11 : printf("Sebelas "); break; case 12 : printf("Dua Belas "); break; case 13 : printf("Tiga Belas "); break; default : printf("Cari sendiri "); break; }
III.5. Langkah Pengerjaan · Tuliskanlah kode sumber tersebut dalam sebuah editor. · Lakukan kompilasi dan linking sampai tidak ada error. · Lakukanlah Eksekusi. III.6. Pengamatan · Run program analisa kasus di atas ! Amati pengelompokkan setiap masukkan bilangan! · Ubahlah program AnalisaKasus.C ! Gantilah struktur switch menjadi struktur if-then-else. Cobalah masukkan bilangan yang sama pada langkah pertama sehingga pengubahan struktur tidak mempengaruhi algoritma program.
Praktikum IV
IV.1. Tujuan : 1. Memahami cara menggunakan array / larik / tabel. 2. Memahami penggunaan pengulangan.
IV.2. Deskripsi
Array Secara umum Array merupakan salah satu bentuk struktur data untuk menyimpan suatu nilai integer,char, real, dan sebagainya. Ada 2 hal yang perlu diperhatikan untuk mengoperasikan struktur data array yaitu : 1. Mendeklarasikan array 2. Mengakses elemen array : Mengakses yaitu menulis dan mengisi, untuk mengisi elemen array bisa melalui cara assignment statement(xiß 10 ) atau melalui masukan dari keyboard.
Pengulangan Lihat referensi !
IV.3. Notasi Algoritmik Program Array { Contoh Pendeklarasian dan pengaksesan array } Kamus Bilangan : array [1..5] of integer Algoritma { Masukkan nilai array melalui assignment statement} Bilangan[1]ß 1 Bilangan[2]ß 2 Bilangan[3]ß 3 Bilangan[4]ß 4 Bilangan[5]ß 5 { Masukkan nilai array melalui input dari keyboard} iß 1 Repeat Input(Bilangan i ) iß i + 1 Until i < 5
IV.4. Kode Sumber
#include /* Program Array ;Nama File : array.c ;Tgl : 7 Des 2006 ;----------------------------------------------------------------- ;Contoh Program Kecil untuk mendeklarasikan, mengisi array melalui 2 cara ;yaitu assignmnet statement dan masukan dari keyboard ;------------------------------------------------------------------- */ /* Kamus */ int bil[5]; int i;
{----- OUTPUT ------------} while (i<=5) { printf("%d",(bil[i-1])); i++; }
/*{ Masukkan nilai array melalui input dari keyboard} */
{---------INPUT-----------} i=1; do { printf("Masukkan Bilangan : "); scanf("%d",&(bil[i-1])); i++; } while (i <= 5) ;
{ -------- OUTPUT---------} i=1; do { printf("%d",(bil[i-1])); i++; } while (i <= 5); }
IV.5. Langkah Pengerjaan · Tuliskanlah kode sumber tersebut dalam sebuah editor. · Lakukan kompilasi dan linking sampai tidak ada error. · Lakukanlah Eksekusi. IV.6. Pengamatan · Amati file array.c ! Apakah ada kesalahan ? jika ada, betulkan ! · Modifikasilah program array.c dengan mengganti pengulangan di atas menjadi pengulangan (loop for). Lakukan kompilasi dan eksekusi !
PRAKTIKUM V
V.1. Tujuan : 1. Memahami struktur Komposisi. 2. Memahami penggunaan struktur komposisi dikombinasikan dengan array dan pengulangan.
V.2.Deskripsi : Lihat Referensi Struktur Komposisi !
V.3. Notasi Algoritmik Program Array {Membaca bilangan dari keyboard, bilangan ditampung dalam variabel Y . Bilangan Y memiliki range [1..10], Nilai Y akan menentukan pengisian. Array X sejumlah 10 elemen masing-masing bertipe struktur komposisi Point. Nilai ordinat diset masing-masing, x ß 4, y ß 7 } Kamus
Type Point = Record x, y : Integer end
P : Point i : integer Y : integer a,b : Integer { digunakan sebagai dasar ordinat}
Algoritma i ß 1 Input ( Y) { Valid bilangan 1 sampai dengan N } while ( i <= Y ) do aß 4 b ß 5 P.x ß a P.y ß b i ßi + 1
V.4. Kode Sumber
#include /* Program Struktur ;Nama File : Struktur.c ;Tgl : 7 Des 2006 Membaca bilangan dari keyboard, bilangan ditampung dalam variabel Y . Bilangan Y memiliki range [1..10], Nilai Y akan menentukan pengisian. Array X sejumlah 10 elemen masing-masing bertipe struktur komposisi Point. Nilai ordinat diset masing-masing, x ß 4, y ß 7 */ /* Kamus */ typedef struct { int x, y; } Point;
Point P ; int i,Y ; int a,b ; { digunakan sebagai dasar ordinat}
/* ALGORITMA */ main() {
do { printf(“Masukkan Bilangan Valid 1.. N : “); Scanf(“%d”,&Y); } while ( Y < 1);
i=1; while ( i <= Y ){ a= 4; b=5; P.x=a; P.y = b; i++; }
} V.5. Langkah Pengerjaan · Tuliskanlah kode sumber tersebut dalam sebuah editor. · Lakukan kompilasi dan linking sampai tidak ada error. · Lakukanlah Eksekusi. V.6. Pengamatan · Amati file struktur.c ! Apakah ada kesalahan ? jika ada, betulkan ! · Perhatikanlah program strutkur.c di atas! Nilai yang diberikan pada variabel P bertipe Point selalu ditumpuk oleh nilai 4 dan 5 untuk masing-masing ordinat. Ubahlah program tersebut sehingga nilai 4 dan 5 akan terisi ke dalam array [1..5] of Point.
Praktikum VI (Fungsi dan Procedure) VI.1 Fungsi1 VI.1.1 Tujuan · Memahami pembentukan fungsi VI.1.2 Deskripsi Didefinisikan sebuah fungsi IsNol yang berfungsi untuk mentest apakah nilai integer adalah nol, fungsi mengembalikan true jika nilainya 0. Ketikanlah fungsi tersebut dan simpan di file Nol.c. Lakukan kompilasi terhadap fungsi yang dibuat. VI.1.3 Teks Algoritma
Function IsNol(x : integer) à boolean { Fungsi mengembalikan true jika x=0 dan false jika x != 0 } Algoritma : à (x = 0 ); {Cara implisit}
VI.1.4 Kode Sumber
int IsNol(int x ) /* Fungsi mengembalikan true jika x=0 dan false jika x != 0 */ { /* Algoritma : */ return (x == 0 ); /* Cara implisit */ }
VI.1.5 Langkah Pengerjaan · Tuliskanlah kode sumber tersebut dalam sebuah editor · Lakukan kompilasi · Lakukan eksekusi VI.1.6 Pengamatan · Apakah ada error ketika dilakukan kompilasi ? · Apakah bisa dilakukan eksekusi ? Jelaskan ! · Termasuk kategori Program atau SubProgram instruksi di atas? Jelaskan! VI.1.7 Kesimpulan
VI.2 Fungsi2 VI.2.1 Tujuan 1. Memahami pendeklarasian fungsi dalam program. 2. Memahami peranan program utama sebagai titik tolak saat sebelum dan sesudah pemanggilan fungsi. 3. Memahami cara dan proses pemanggilan fungsi. 4. Memahami nilai pengembalian fungsi bertype dasar(integer, real, character, boolean). VI.2.2 Deskripsi Fungsi yang telah di buat pada praktikum fungsi1, harus ditest apakah jalan atau tidak. Untuk mengetestnya, fungsi yang tersimpan dalam file Nol.c harus ditempelkan di program penguji fungsi yang ada dalam teks algoritma/kode sumber. Program penguji fungsi diberi nama DriIsNol.c. Fungsi IsNol akan dipanggil oleh instruksi yang ada dalam program utama. VI.2.3 Teks Algoritma Program PengujiIsNol { Nama File : DriIsNol.c Deskripsi : Menguji fungsi IsNol }
{---Kamus Global---} Nilai : Integer; B : boolean;
{-----Tempat Deklarasi Fungsi IsNol -----}
Algoritma {Program Utama} {1} Output(‘Masukan Nilai Integer Sembarang : ’) {2} Input(Nilai) {3} B ß IsNol(Nilai) {4} If B Then {5} Output(‘Nilai integer yang dimasukan adalah Nol’) {6} Else {7} Output(‘Nilai integer yang dimasukan adalah bukan Nol’)
VI.2.4 Kode Sumber /* Program PengujiIsNol; Nama File : DriIsNol.pas Deskripsi : Menguji fungsi IsNol */
#include {---Kamus Global---}
int Nilai; int B ;
/*-----Tempat Deklarasi Fungsi IsNol -----*/
main() { /* Algoritma {Program Utama} */ /*1*/ printf(“Masukan Nilai Integer Sembarang : “); /*2*/ scantf(“%d”, Nilai); /*3*/ B=IsNol(Nilai); /*4*/ if ( B ) /*5*/ printf(“Nilai integer yang dimasukan adalah Nol”) /*6*/ else /*7*/ printf(“Nilai integer yang dimasukan adalah bukan Nol”); } VI.2.5 Langkah Pengerjaan · Tuliskanlah kode sumber tersebut dalam sebuah editor, tempelkan function IsNol di bagian deklarasi function · Lakukan kompilasi · Lakukan eksekusi VI.2.6 Pengamatan 1. Masukan Nilai Integer Sembarang : (Coba masukan 20, 0, -20, a ) 2. Di manakah tempat pendeklarasian fungsi ? 3. Pada baris keberapa fungsi dipanggil oleh program utama ? 4. Apa range fungsi IsNol ? Apa range variabel B ? VI.2.7 Kesimpulan
VI.3 Fungsi4 VI.3.1 Tujuan · Memahami cara pendeklarasian fungsi bertype bentukan struktur komposisi. · Memahami nilai pengembalian fungsi bertype bentukan struktur komposisi. VI.3.2 Deskripsi Pada program ini diperlihatkan sebuah type Titik, yang akan digunakan oleh instansiasi variabel dan pengembalian fungsi CreateTitik. VI.3.3 Teks Algoritma Program PengujiFungsiBentukan2; { Nama File : Fben2.c Deskripsi : Menguji fungsi bertype bentukan CreateTitik }
{---Kamus Global---} Type Titik : <>
NilX, NilY : Integer NilaiTitik : Titik
{-----Deklarasi Fungsi -----} Function CreateTitik(x1 : integer; x2 : integer)à Titik { Fungsi akan membentuk sebuah titik yang elemennya dikirim lewat variabel x1 dan x2, x1 menyatakan ordinat dan x2 menyatakan absis} Kamus Lokal : Algoritma : à <>
Algoritma {Program Utama} Output(‘Masukan Nilai x dan y Sembarang, diakhiri dengan Enter ’) Input(NilX, NilY) NilaiTitik ßCreateTitik(NilX, NilY) Output(‘Setelah pemanggilan fungsi CreateTitik : Nilai Ordinat= ‘,NilaiTitik.X, ‘ Nilai Absis = ‘, NilaiTitik.Y) VI.3.4 Kode Sumber / * Program PengujiFungsiBentukan2; { Nama File : Fben2.c Deskripsi : Menguji fungsi bertype bentukan CreateTitik } */ #include /* {---Kamus Global---} */ typedef struct { int X, Y; } Titik;
int NilX, NilY ; Titik NilaiTitik;
/*{-----Deklarasi Fungsi -----}*/ Titik CreateTitik(int x1, int x2) /*{ Fungsi akan membentuk sebuah titik yang elemennya dikirim lewat variabel x1 dan x2, x1 menyatakan ordinat dan x2 menyatakan absis}*/ { /*Kamus Lokal :*/ Titik Hsl; /*Algoritma : */ Hsl.X = x1; Hsl.Y = x2; return Hsl; } main() { /*Algoritma {Program Utama}*/ printf(“Masukan Nilai x dan y Sembarang, diakhiri dengan Enter “); scantf(“%d %d”, &NilX, &NilY); printf(“Sebelum pemanggilan fungsi CreateTitik : Nilai Ordinat=%d Nilai Absis = %d “, NilaiTitik.X, NilaiTitik.Y); NilaiTitik =CreateTitik(NilX, NilY); printf(“Setelah pemanggilan fungsi CreateTitik : Nilai Ordinat=%d Nilai Absis = %d “, NilaiTitik.X, NilaiTitik.Y); } VI.3.5 Langkah Pengerjaan · Tuliskanlah kode sumber tersebut dalam sebuah editor · Lakukan kompilasi · Lakukan eksekusi VI.3.6 Pengamatan Amati nilai NilaiTitik sebelum dan setelah pemanggilan fungsi! VI.3.7 Kesimpulan
VI.4 Fungsi5 VI.4.1 Tujuan · Memahami cara pendeklarasian fungsi bertype bentukan struktur komposisi. · Memahami nilai pengembalian fungsi bertype bentukan struktur komposisi. · Memahami operasi tambah dalam type bentukan struktur Titik
VI.4.2 Deskripsi Diketahui spesifikasi fungsi sebagai berikut :
Function CreateTitik(x1 : integer; x2 : integer): PTitik; { Fungsi akan membentuk sebuah titik yang elemennya dikirim lewat variabel x1 dan x2, x1 menyatakan ordinat dan x2 menyatakan absis}
Function TambahTitik(Titik1 : Ptitik; Titik2 : PTitik) : Ptitik; {Fungsi akan mengembalikan hasil penambahan elemen bersesuaian antara Titik1 dengan Titik2, Absis Titik1 ditambah absis pada Titik2, Ordinat Titik1 ditambah Ordinat Titik2 }
Realisasikanlah fungsi di atas sehingga akan terbentuk program lengkap yang meliputi : · Definisi type Titik (lihat Fungsi4), · Deklarasi Variabel TitikSatu, TitikDua, TitikHasilTambah bertype Ptitik · Program Utama (Driver) yang memanggil CreateTitik, TambahTitik, tampilkan hasil operasi penambahan Titik.
VI.5 Procedure1 VI.5.1 Tujuan · Memahami pendeklarasian dan pembentukan procedure dalam program. · Memahami peranan program utama sebagai titik tolak saat sebelum dan sesudah pemanggilan procedure. · Memahami cara dan proses pemanggilan procedure. · Memahami perubahan nilai, dari parameter formal bersifat input, output dan input/output VI.5.2 Deskripsi Ketikanlah program pada Kode Sumber yang berisi procedure Add, procedure Tukar1, dan procedure Tukar2 kemudian simpan dengan nama proce1.pas. VI.5.3 Kode Sumber Program PengujiProc; { Nama File : proce1.pas Deskripsi : Menguji procedure Add,Tukar1, Tukar2 } Uses Crt; {---Kamus Global---} Var Nilai1, Nilai2, NilaiJumlah : Integer; B : boolean; {-----Tempat Deklarasi Procedure -----} Procedure Add(a : integer; b : integer; var sum : integer); { I.S : Nilai a,b dan sum sembarang F.S : Sum adalah hasil penjumlahan a dengan b} Begin Sum:=a + b; end;
Procedure Tukar1(var a : integer; var b : integer); { I.S : Nilai a,b sembarang F.S : Nilai a dan b ditukar } { Kamus Lokal } var Temp : Integer; Begin Temp := a; a:=b; b:=Temp; end;
Procedure Tukar2(var a : integer; b : integer); { I.S : Nilai a,b sembarang F.S : Nilai a=b, nilai b tetap seperti semula } { Kamus Lokal } var Temp : Integer; Begin Temp := a; a:=b; b:=Temp; end;
Begin {Program Utama} {1} Write(‘Masukan 2 buah Nilai Integer Sembarang : ’); {2} Readln(Nilai1, Nilai2); {3} Add(Nilai1, Nilai2, NilaiJumlah); {4} writeln(‘Hasil penjumlahan : ‘,Nilai1,‘+’,Nilai2,’=‘,NilaiJumlah); {5} writeln(‘Sebelum ditukar dengan Proc Tukar1, Nilai1 :‘,Nilai1,‘ Nilai2 :’,Nilai2); {6} Tukar1(Nilai1, Nilai2); {7} writeln(‘Setelah ditukar dengan Proc Tukar1, Nilai1 :‘,Nilai1,‘ Nilai2 :’,Nilai2); {8} writeln(‘Sebelum ditukar dengan Proc Tukar2, Nilai1 :‘,Nilai1,‘ Nilai2 :’,Nilai2); {9} Tukar2(Nilai1, Nilai2); {10}writeln(‘Setelah ditukar dengan Proc Tukar2, Nilai1 :‘,Nilai1,‘ Nilai2 :’,Nilai2);
Readln; End. VI.5.4 Eksekusi · Masukan 2 buah Nilai Integer Sembarang : (Coba masukan 20 Enter, 0 Enter) · Hasil penjumlahan : 20+0=20 · Sebelum ditukar dengan Proc Tukar1, Nilai1 :20 Nilai2 :0 · Setelah ditukar dengan Proc Tukar1, Nilai1 :0 Nilai2 :20 · Sebelum ditukar dengan Proc Tukar2, Nilai1 :0 Nilai2 :20 · Setelah ditukar dengan Proc Tukar2, Nilai1 :20 Nilai2 :20
VI.5.5 Pengamatan 1. Lakukanlah Tracing program menggunakan F7, perhatikan perubahan-perubahan pada setiap langkah ? 2. Coba ubah parameter formal pada procedure Add, dari Procedure Add(a : integer; b: integer; var sum : integer) menjadi Procedure Add(a : integer; b: integer; sum : integer), apa yang terjadi ? 3. Coba ubah parameter formal pada procedure Tukar1, dari Procedure Tukar1(var a : integer; var b: integer) menjadi Procedure Tukar1(a : integer; b: integer), apa yang terjadi ? 4. Coba ubah parameter formal pada procedure Tukar2, dari Procedure Tukar2(var a : integer; b: integer) menjadi Procedure Tukar2(a : integer; var b : integer), apa yang terjadi ?
VI.5.6 Kesimpulan
Praktikum VII
Skema Pemrosesan Sekuensial VII.1 Pemrosesan Sekuensial1 VII.1.1 Tujuan · Memahami pengertian sekuensial. · Memahami item-item sekuensial. VII.1.2 Deskripsi Pemrosesan sekuensial adalah pemrosesan secara satu persatu, dari sekumpulan informasi sejenis yang setiap elemennya dapat diakses dengan keterurutan tertentu(ada suksessor), jadi seakan-akan kumpulan elemen merupakan “Deret”. Elemen yang akan diproses dapat bertipe dasar (real, integer, karakter, boolean), tetapi juga bertype terstruktur(misalnya Point. Kumpulan informasi itu disimpan sedemikian rupa, sehingga selalu dikenali : · Elemen pertama (First-Elmt) · Elemen yang siap diproses (Current-Elmt) · Elemen yang diakses setelah Current-Elmt(Next-Elmt) · Tanda akhir proses (EOP) Untuk memahami itu semua, coba anda ketikan source program di bawah ini! VII.1.3 Kode Sumber Program Seq1; { Nama File : Sequen1.pas Deskripsi : Menjumlahkan bilangan 1+2+3+4+..N, dengan N dibaca dari keyboard } Uses Crt; {---Kamus Global---} Var I : integer; {bilangan yang akan dijumlahkan } N : integer; {banyaknya bilangan yang dijumlahkan, N > 0} Sum : integer; {jumlah} Begin {Program Utama} {1} Write(‘Masukan banyaknya bilangan yang akan dijumlahkan : ’); {2} readln(N); {3} Sum=0; {4} I=1; {5} while I <= N do begin {6} writeln(‘Nilai i adalah : ’, i); {7} sum=sum + 1; {8} I=I+1; end; {9} writeln(‘Jumlah bilangan adalah ’, sum); End. VII.1.4 Eksekusi · Masukan banyaknya bilangan yang akan dijumlahkan : (Coba masukan 5 Enter) · Nilai i adalah : ………….. (dicetak berulang) · Jumlah bilangan adalah 15
VII.1.5 Pengamatan Coba anda perhatikan! Instruksi-instruksi mana saja yang termasuk First-Element, Next-Element, keadaan EOP. Juga perhatikan instruksi Inisialisasi, Proses terhadap Current-Element, dan Terminasi
VII.1.6 Kesimpulan
VII.2 Pemrosesan Sekuensial2 VII.2.1 Tujuan · Memahami kasus kosong. · Memahami “Mark”. · Memahami penanganan kasus kosong. VII.2.2 Deskripsi Mark adalah tanda pemberhentian dari proses sekuensial. Elemen yang ditandai sebagai Mark, merupakan elemen fiktif yang informasinya berbeda dengan elemen-elemen lainnya. Contoh : sebuah deretan bilangan integer positif; 1, 4, 5, 8, 2, 7, -999. Elemen yang dapat dijadikan Mark dari contoh tersebut adalah -999. Elemen Mark tidak boleh diproses, yang diperbolehkan hanya sebatas menguji elemen tersebut apakah Mark atau bukan ? Jika elemen tersebut Mark, proses berakhir. Pada dasarnya, setiap elemen harus diproses (kecuali elemen fiktif). Bagaimana jika terjadi kasus kosong ? Apakah harus ada yang diproses ?. Ada beberapa hal yang perlu diperhatikan untuk menangani kasus kosong, 1) Jika terjadi kasus kosong, tidak boleh ada elemen yang diproses. 2) Jika terjadi kasus kosong, Mark tidak boleh diproses. 3) Kasus kosong bisa ditangani dengan menggunakan penangan kasus kosong khusus atau tanpa melalui penanganan kasus kosong khusus. Untuk menangani Mark dan Kasus kosong, akan berhubungan dengan cara pemilihan skema pengulangan (while, repeat, iterate, for). Ketikanlah kode sumber di bawah ini !
VII.2.3 Kode Sumber Program Seq2; { Nama File : Sequen2.pas Deskripsi : Menjumlahkan bilangan 1+2+3+4+..N, dengan N dibaca dari keyboard} Uses Crt; {---Kamus Global---} Var I : integer; {bilangan yang akan dijumlahkan } N : integer; {banyaknya bilangan yang dijumlahkan, N > 0} Sum : integer; {jumlah} Begin {Program Utama} {1} Write(‘Masukan banyaknya bilangan yang akan dijumlahkan : ’); {2} readln(N); {3} Sum=0; {4} I=1; {5} repeat {6} sum=sum + 1; {7} I=I+1; until I > N; {8} writeln(‘Jumlah bilangan adalah ’, sum); End. VII.2.4 Eksekusi · Masukan banyaknya bilangan yang akan dijumlahkan : (Coba masukan 5 Enter) · Jumlah bilangan adalah 15 · Masukan banyaknya bilangan yang akan dijumlahkan : (Coba masukan 0 Enter) · Jumlah bilangan adalah 1 ·
VII.2.5 Pengamatan · Tentukan Mark-nya ! · Program di atas sangat tergantung pada pemasukan data dari user, sehingga dimungkinkan terjadinya kasus kosong. Coba anda tunjukan terjadinya kasus kosong! · Jika terjadi kasus kosong, program salah. Coba anda perbaiki supaya program menjadi benar !
VII.2.6 Kesimpulan
VII.3 Pemrosesan Sekuensial3 VII.3.1 Tujuan · Memahami kasus kosong, mark dan penanganan kasus kosong dalam Array. VII.3.2 Deskripsi Diketahui array Tab dengan jumlah elemen 10 bertype integer. Elemen Tab harus diisi dengan bilangan integer sembarang, jumlah elemen Tab yang harus diisi tergantung pada masukan dari user, misalkan ; user memasukan 4 elemen, berarti elemen Tab yang pertama s/d keempat yang harus diisi, user mungkin memasukan 0, mungkin 1 atau 10. VII.3.3 Kode Sumber Program Seq3; { Nama File : Sequen3.pas Deskripsi : Mengisi array Tab[10] dari elemen 1 s/d N, dengan bilangan integer, N dibaca dari keyboard, N < 11 } Uses Crt; {---Kamus Global---} Var I : integer; {bilangan yang akan dijumlahkan } N : integer; {banyaknya elemen Tab yang akan diisi} Tab : array[1..10] of integer; Begin {Program Utama} {1} Write(‘Masukan banyaknya elemen yang akan diisi : ’); {2} readln(N); {3} I=1; {4} repeat {5} Tab[I]=I +2; {6} I=I+1; until I > N; {7} writeln; End. VII.3.4 Eksekusi · Masukan banyaknya elemen yang akan diisi : (Coba masukan 5 Enter) VII.3.5 Pengamatan · Tentukan Mark, Inisialisasi, First-Element, Next-Element, Proses terhadap Current-Element, Terminasi, dan EOP! · Program di atas sangat tergantung pada pemasukan data dari user, sehingga dimungkinkan terjadinya kasus kosong. Coba anda tunjukan terjadinya kasus kosong! · Jika terjadi kasus kosong, program salah. Coba anda perbaiki supaya program menjadi benar !