• Tidak ada hasil yang ditemukan

PERTEMUAN PERTAMA PARADIGMA PEMROGRAMAN TERSTRUKTUR

N/A
N/A
Protected

Academic year: 2021

Membagikan "PERTEMUAN PERTAMA PARADIGMA PEMROGRAMAN TERSTRUKTUR"

Copied!
35
0
0

Teks penuh

(1)

1

PERTEMUAN PERTAMA

PARADIGMA PEMROGRAMAN

TERSTRUKTUR

Pada bab ini akan dikenalkan paradigma pemrograman terstruktur, bahasa pemrograman C dan tolos yang dibutuhkan untuk menulis program komputer dengan bahasa C Setelah mempelajari materi di babi ni diharapkan mahasiswa mengetahui paradigma pemrograman terstruktur dengan C

1. Karakteristik Bahasa C a. Kelebihan

- Bahasa C tersedia hampir di semua jenis Komputer

- Kode bahasa C sifatnya adalah Portabel (dapat digunakan di semua jenis komputer).

- Bahasa C hanya menyediakan sedikit kata-kata kunci - Proses executable program lebih cepat

- Dukungan pustaka yang banyak

- C bahasa pemrograman yang terstruktur dan merupakan bahasa tingkat tinggi, namun dapat pula dikatakan sebagai bahasa tingkat menengah karena mempunyai kemampuan seperti bahasa low level (tingkat rendah).

b. Kelemahan

- Bahasa C merupakan bahasa yang cukup sulit dimengerti terutama dalam hal sintaks-sintaksnya

2. Struktur Program Bahasa C

Bahasa C dikatakan sebagai bahasa pemrograman terstruktur, karena strukturnya menggunakan fungsi-fungsi sebagai program-program bagian (sub rutin). Fungsi utama yang pertama kali diproses adalah fungsi yang bernama “main()”, selain itu adalah merupakan fungsi-fungsi bagian yang dapat ditulis setelah fungsi “main()” atau diletakan di file pustaka (library).

Jika fungsi-fungsi yang tersedia pada file pustaka (library) dan akan dipakai di suatu program maka file judulnya (Header) nya harus disertakan/ditulis pada program dengan menggunakan preprocessor directive #include, contohnya #include <stdio.h> yang berarti kita akan mengambil fungsi-fungsi yang tersedia pada library standar IO, diantaranya clrscr(), printf, scanf(), dll.

Untuk komentar / penjelasan program harus diapit diantara (/* ….*/). ***HATI-HATI***

Penulisan program bahasa C bersifat Case Sensitive artinya penamaan fungsi, variabel maupun keyword-nya membedakan huruf kecil dan besar.

(2)

2

STRUKTUR BAHASA C:

#include < file-file header>

/* directive #include digunakan jika mengambil fungsi-fungsi libarary*/

main() /* fungsi utama sebagai awal dimulainya pemrosesan program */

{ /*blok awal*/ statemen-statemen; } /*blok akhir*/ Fungsi-fungsi lain() { statemen-statemen; }

3. Pemakaian #include pustaka (library) yang umum

- conio.h = Tampilan Layar : clrscr(), textcolor(), textbackground(), textattr(),dll.

- stdio.h = standart input/output : clrscr(), printf(), scanf(), puts(), gets(), getch(),cprintf(), dll.

- stdlib.h = standart library (akses file / stream) : fopen(), flose(), fread(), fwrite(), fprintf(), fscanf(), dll.

- alloc.h/malloc.h = pengalokasian memori (memori dinamis) : malloc(), free(), calloc(), dll.

4. Pemakaian Escape Sequnce pada fungsi output (printf(),gets(),dll)

Karakter Escape Sequence sering digunakan untuk menampilkan hasil output, seperti mengganti baris, membunyikan bel, dll.

Karakter

Escape Arti

\a Bunyi bel

\b Mundur satu spai

\f Ganti halaman

\n Ganti baris baru

\r Ke kolom awal, baris yang sama \t Tabulasi horisontal \v Tabulasi vertikal \0 Null \’ Petik tunggal \” Kutip

(3)

3 Praktek :

Ketik Kode Program berikut di editor text dan simpan dengan nama praktek1a.c. #include <stdio.h>

main() {

clrscr();

printf(“Salam Semua….!\n”);/* perintah \n : ganti baris baru */ printf(“Program Terstruktur Pertama Saya Dengan Bahasa C…!”); }

Ketik Kode Program berikut di editor text dan simpan dengan nama praktek1b.c. #include <stdio.h>

main() {

clrscr();

printf(“Salam Semua….!”);/* perintah \n : ganti baris baru */ printf(“Program Terstruktur Pertama Saya Dengan Bahasa C…!”); }

Selanjutnya buka jendela terminal dan ketik perintah #gcc –o praktek1a.exe praktek1a.c

#gcc –o praktek1b.exe praktek1b.c

Jalankan praktek1a.exe, amati tampilan di layar selanjutnya jalankan juga praktek1b.exe, amati tampilan di layar.

Modifikasi file praktek1a.c sesuai keiinginan anda, amati perubahan yang terjadi LAPORKAN !!!

1. Tampilan di layar untuk file praktek1a.c dan praktek1b.c 2. Persamaan kedua tampilan file

3. Perbedaan kedua tampilan file

4. Kode Program hasil modifikasi praktek1a.c

(4)

4

PERTEMUAN KEDUA

KONSEP PEMROGRAMAN DENGAN C

Pada bab ini akan dikenalkan konsep pemrograman dengan C Setelah mempelajari materi di babi ni diharapkan mahasiswa memahami konsep pemrograman C

Struktur dari bahasa C secara garis besar sama seperti bahasa pemrograman tingkat tinggi lainnya. Secara umum dapat dikatakan bahwa bentuk dasar dari bahasa C adalah meliputi :

1. Praprosessor 2. Prototipe Fungsi 3. Variabel

4. Fungsi

Bentuk dasar diatas dapat dibawa ke bentuk program C sebagai berikut : #include <stdio.h> /*bentuk praprosessor*/

float jumlah (float x,float y); /*prototype fungsi*/ main()

{

int a = 6; /*variabel*/ int b = 3;

}

Float jumlah (float x,float y); /* fungsi*/

Dalam perkembangan selanjutnya dapat dilakukan pada penulisan praprosessor yang diapit dengan tanda <> dapat digantikan dengan “ “

Program C pada hakekatnya merupakan susunan atas beberapa fungsi. Program C

paling sederhana harus memiliki minimal satu buah fungsi yaitu fungsi main(). Fungsi main() ini akan didefinisikan oleh compiler C sebagai fungsi pertama yang akan dieksekusi.

(5)

5 Praktek :

Ketik Kode Program berikut di editor text dan simpan dengan nama praktek2.c. # include <stdio.h> /*bentuk praprosessor*/

float jumlah (float x,float y); /*prototype fungsi*/ main() { int a = 6; /*variabel*/ int b = 3; int c; c = a+b;

printf(“Program Kedua Dengan C, masih belajar dan mencoba %c”,c) }

Float jumlah (float x,float y); /* fungsi*/

Coba kompilasi dan eksekusi (jika bisa) jika kode program diatas 1. tanpa modifikasi.

2. Hilangkan semua titik-koma yang ada di akhir baris.

3. Kembalikan semua titik-koma dan hilangkan tanda “ “ pada baris 9. 4. Kembalikan tanda “ “ dan hilangkan tanda % pada baris 9

LAPORKAN !!!

1. Apa fungsi tanda “ “ pada C 2. Apa fungsi tanda ; pada C 3. Apa fungsi tanda % pada C

(6)

6

PERTEMUAN KETIGA

PERINTAH DASAR

Pada bab ini akan dikenalkan perintah-perintah dasar bahasa pemrograman C meliputi tipe, variabel, konstanta, operator, struktur control dan array Setelah mempelajari materi di bab ini diharapkan mahasiswa memahami dasar pemrograman C dan dapat membut program dengan bahasa C secara mendasar

1. Tipe Data Dasar

Umumnya tipe data dasar pada bahasa C terdiri dari Tipe Data NUMERIK dan KARAKTER. Tipe NUMERIK dibagi dalam bentuk bulat (integer) dan pecahan (float).

Dari Sampai Dengan

int 2 byt e -32768 32767

signed int short int signed short int

unsigned int 2 byt e 0 65535

unsigned short int

long int 4 byt e -2147483648 2147483648

signed long int

unsigned long int 4 byt e 0 4292967296

float 4 byt e 3.4E-38 2.4E+38

double 8 byt e 1.7E-308 1.7E+308

long double 10 byt e 3.4E-4932 1.1E+4932

char 1 byt e -128 127

signed char

unsigned char 1 byt e 0 255

Jangkauan Nilai

Tipe Lebar Memori

2. Variabel & Konstanta a. Deklarasi Variabel

Mendeklarasikan variabel dapat dituliskan di dalam maupun di luar fungsi. Jika deklarasi variabel ditulis pada luar fungsi, maka variabel tersebut dapat di akses oleh semua fungsi-fungsi yang lain ( Variabel Global ) sedangkan jika di dalam fungsi, maka variabel tersebut hanya dapat diakses oleh fungsi itu sendiri ( Variabel Lokal ). Contoh pendeklarasian Variabel:

***CATATAN***

Penamaan variabel tidak boleh mengandung spasi, tidak sama dengan nama keyword, tidak dimulai dengan angka serta tidak mengandung simbol-simbol yang telah ditentukan oleh BAHASA C.

(7)

7 char A;

int X, Y, my_var; /* X bertipe integer, Y bertipe integer, my_var bertipe integer*/ float bil_pecahan=9.56; /* memberikan nilai awal = 9.56 untuk variabel

bil_pecahan */ b. Konstanta

Konstanta merupakan nilai yang tidak dapat diubah selama proses dari program. Untuk menentukan konstanta dapat dilakukan dengan menggunakan variabel atau macro.

Jika menggunakan perantara variabel digunakan keyword const :

const my_konstanta = 306; /* nilai pada variabel my_konstanta adalah tetap 306

*/

jika secara langsung mengunakan macro atau directive #define:

#define my_konstanta = 306 /* MACRO tidak perlu diakhiri titik koma (;) */ float nilai = my_konstanta; /* memberikan variabel nilai dengan my_konstanta

(nilai=306) */ Contoh :

#include <stdio.h> #define PI=3.14

/* Perhatikan huruf kecil dan besarnya */ main() { int a = 2, B, niLAi; float bil_pecahan; B = 4; bil_pecahan = 2.0; niLAi = a * (2 + B);

printf(“ Hasil dari %d * (2 + %d) = %d \n“,a,b,niLAi);

printf(“Perkalian dari %4.2f * %4.2f = %4.2f \n”, bil_pecahan, PI, bil_pecahan*PI);

/* Format specifier untuk %d dan %f akan dijelaskan pada sesion berikutnya */

}

3. Format Specifier untuk fungsi Output (printf(), cprintf())

Kode format ini digunakan untuk menampilkan output dengan tipe-tipe yang telah ditentukan, baik tipe karakter, integer maupun pecahan.

Contoh : #include <stdio.h> main() { int a, b, c = 10; float bil = 10.56;

(8)

8 a = 5; b = 8;

clrscr();

printf (“Hasil tampilan numerik terformat %d, %d, %f \n”, a, 78, bil); printf (“Hasil tampilan string dan karakter : %s dan %c \n”,”coba-coba”,’A’);

}

Output:

Hasil tampilan numerik terformat 5, 78, 10.56789 Hasil tampilan string dan karakter : coba-coba dan A

K ode Format Kegunaan

%c Mena mpilkan seb ua h karakter %s Mena mpilkan nila i string

%d Mena mpilkan nila i de sima l integer %i Mena mpilkan nila i de sima l integer %u Mena mpilkan inte ger tidak bertanda %x Mena mpilkan nila i hexa desim al %o Mena mpilkan nila i oktal %f Mena mpilkan nila i pe cahan

%e Mena mpilkan nila i pe cahan scie ntific %g Se bagai pengganti % f atau % e %p Mena mpilkan alam at m em ori po inte r 4. Fungsi Masukan Data (scanf(), gets())

Fungsi masukan dengan scanf() mempunyai format seperti printf() di atas, sedangkan gets() khsusus untuk masukan string.

#include <stdio.h> main()

{ int a; char kar;

char kalimat[20]; /* variabel string merupakan array dari tipe char.. lebih

jelasnya ada pada sesion array */

printf(“Masukan suatu nilai = “); scanf(“%d”,&a); printf(“Masukan suatu karakter = “); scanf(“%d”,&kar); printf(“Masukan suatu kalimat = “);scanf(“%s”,kalimat); printf(“Masukan suatu kalimat = “);gets(kalimat);

}

perbedaan antara gets() dengan scanf() adalah: scanf() mengambil string yang dibatasi dengan spasi sedangkan gets() mengambil semua string

(9)

9 Input :

“Saya Belajar Bahasa C” Ouput :

scanf() = “Saya”

gets() = “Saya Belajar Bahasa C”

5. Operator

a. Operator Aritmatika

Operator Arti

* Perkalian

/ Pembagian

% Pembagian Modulus (sisa bagi) + Pertambahan

- Pengurangan Contoh:

Z = A + B; Z = A / B; Z = A % B;

b. Operator Unary

Operator ini hanya menggunakan satu operand saja.

Oper ator Arti

- U nary Minus

++ P enambahan dengan nilai 1 -- P engurangan d engan nilai 1 (tipe) cast

sizeof U kuran dari op erand dalam by te ! U nary Not

~ O perator Komplemen satu & Alamat Memori operand

* P ointer pada suatu operan d Contoh: int B, A ; float P; int *alamat; B = 0x04; /* nilai B = 04H (4 heksadesimal) */ A = -B; /* A = -04H */ B++; /* B = B + 1 sehingga B = 0x05 */ B--; /* B = B – 1 sehingga B = 0x04 */

P = (float) B; /* integer B dikonversi nilainya ke P (P=5.0) */ A = sizeof(B); /* A = 2 (ukuran tipe data Integer) */

A = !B; /* bit NOT (0000 0100) mejadi (1111 10111) */

A = ~B; /* bit komplemen (1111 10111) mejadi (0000 0100) */

alamat = &B; /* alamat = alamat memori dari variabel B shg “alamat” sama

dengan “ “B” */

(10)

10

c. Operator Pengerjaan

Oper ator Contoh M aksud/Ekuivalen dengan

= A = B + C += A += 3 A = A + 3 -= A -= B A = A - B *= A * = B A = A * B /= A /= B A = A / B %= A %= B A = A % B d. Operator Bitwise ( Pergeseran Bit)

Operator ini digunakan untuk penggeseran bit-bit atau manipulasi bit pada nilai variabel yang ada.

Operator kondisi Contoh Arti

<< Z = A << 4 Penggeseran bit ke kiri 4x >> Z = A >> 3 Penggeseran bit ke kanan 3x

& Z = A & 3 nilai A di AND-kan dg nilai 3 ^ Z = A ^ 3 nilai A di XOR-kan dg nilai 3 | Z = A | 3 nilai A di OR-kan dg nilai 3 &= A&=5 A = A & 5

<<= A <<= 4 A = A << 4 >>= A >>= 7 A = A >> 7 ^= A ^=2 A = A ^ 2 |= A | = 3 A = A | 3 6. Pengambilan Keputusan a. if (kondisi) statemen ; contoh: if (A > B) A = B; *** CATATAN: ***

Setiap Kondisi harus dan wajib diapit oleh tanda kurung.

Jika statemen lebih dari dua, maka harus digunakan blok statemen

If ( A > B);

{

A+ = B; A ++; }

Operator kondisi Arti

< Lebih kecil

<= Lebih Kecil Sama Dengan > Lebih Besar

>= Lebih Besar Sama Dengan

== Sama Dengan

!= Tidak Sama Dengan && Logika AND

(11)

11 b. if (kondisi) ... else ; Contoh: if (A > B) A = B; else A++; c. switch ..case contoh: switch( A ) {

case 1 : statement; break; case 2 : statement; break; default : statement; break; }

statement switch akan menyeleksi kondisi yang diberikan dan akan membandingkan hasilnya dengan konstanta-konstanta yang berada di case. Break digunakan sebagai peloncat keluar blok switch, sedangkan default merupakan pilihan selain dari konstanta-konstanta yang ada pada case. ***PENTING****

Apabila telah selesai memproses sebuah bagian dari case dan jika belum ditemukan statemen break, maka proses akan masuk ke bagian case berikutnya. Contoh: #include <stdio.h> main() { int A = 1; clrscr(); switch(A) { case 1: printf(“Satu \n”); case 2: printf(“Dua \n”);

default: printf(“Bukan Satu atau Dua...!\n”); }

}

Output : Satu Dua

Bukan Satu atau Dua...!

(12)

12 contoh menggunakan (break)

#include <stdio.h> main() { int A=1; clrscr(); switch(A) {

case 1: printf(“Satu \n”); break; case 2: printf(“Dua \n”); break;

default: printf(“Bukan Satu atau Dua...!\n”); break; } } Output: Satu 7. Perulangan Proses a. for ( )

sintaks umum : for(nilai awal; pembanding;counter)

{ statemen } contoh : #include <stdio.h> main() { int i, clrscr(); for(i=0;i<5;i++)

/*pengulangan diproses sebanyak 0 sampai 4, kenapa bisa begitu...? */ { printf(“%d\n”,i); } } output: 0 1 2 3 4

(13)

13

b. while( )

sintak : while( kondisi)

{ statemen } contoh: #include <stdio.h> main() { int i=0; while(i<5) { printf(“%d\n”,i);

/*hasil output contoh ini sama dengan contoh pada for( )*/ i++; } } c. do { } while( ) sintak: do { statemen } while( kondisi ); contoh: #include <stdio.h> main() { int i=0; do { printf(“%d\n”,i); i++; }while (i < 5); }

/*Nah...sekarang bagaimana hasil output dari contoh di atas....? dan lihat perbedaan sintaks-sintaks ketiga statemen pengulangan tersebut. Sekarang coba jelaskan bagaimana hasil dari contoh program di bawah ini...!, */

#include <stdio.h> main() { int i =0; for(;;) { printf(“%d\n”,i++); } }

(14)

14

PERTEMUAN KEEMPAT

FUNGSI (SESI 1)

Pada bab ini akan dijelaskan definisi fungsi, struktur fungsi dan contoh penggunaannya Setelah mempelajari materi di babi ni diharapkan mahasiswa dapat membuat subprogram menggunakan fungsi

Fungsi merupakan bagian dari sub program yang dapat di panggil oleh fungsi lain. Dalam bahasa C tidak ada statemen procedure seperti halnya dengan Pascal. Fungsi itu sendiri adalah sub program yang mengembalikan nilai tertentu, dan main() itu sendiri adalah fungsi utama.

Sintaks :

<type data> nama fungsi ([<argumen>]) { statemen; .... } contoh: #include <stdio.h> int nilai_A,nilai_B; long nilai_C;

void InputData() /* void -> tipe data untuk fungsi yang tidak mengembalikan nilai (procedure)*/

{

clrscr();

printf(“Melaksanakan Inputan \n”);

printf(“Masukan Nilai A = “);scanf(“\n%d”,&nilai_A); printf(“Masukan Nilai B = “);scanf(“\n%d”,&nilai_B); }

int Tambah(int a,int b) {

int c; c=a+b;

printf(“Melaksanakan Perhitungan Penambahan \n”); return c; /*return -> mengembalikan nilai*/

(15)

15 int Kurang(int a,int b)

{

printf(“Melaksanakan Perhitungan Pengurangan \n”); return (a-b);

}

long Kali(int a,int b) {

printf(“Melaksanakan Perhitungan Perkalian \n”); return (a*b);

}

float Bagi(int a,intb) {

printf(“Melaksanakan Perhitungan Pembagian \n”); return a/b;

}

long Pangkat(int a,int b) /* untuk pemangkatan dapat anda gunakan fungsi pow() dari lib

<math.h> */

{

long temp; int i;

printf(“Melaksanakan Perhitungan Pemangkatan \n”); temp=1; for(i=0;i<b;i++) { temp=temp*a; } return temp; } main() { InputData(); nilai_C=Tambah(nilai_A,nilai_B); printf(“\nHasil A + B = %d”,nilai_C); printf(“\nHasil A – B = %d”,Kurang(nilai_A,nilai_B); printf(“\nHasil A x B = %d”,Kali(nilai_A,nilai_B); printf(“\nHasil A / B = %d”,Bagi(nilai_A,nilai_B); printf(“\nHasil A ^ B = %d”,Pangkat(nilai_A,nilaiB); }

(16)

16 Coba Kode Program Diatas

Perhatikan Output dair Kode Program diatas dan Laporkan beberapa hal berikut 1. Bagaimana Outpur Kode Program tersebut.

2. Dari 7 (tujuh) fungsi yang ada bagaimana urutan pemanggilan fungsi-fungsi tersebut

3. Dari 6 fungsi selain fungsi main(), ada satu fungsi yang outputnya tidak dicetak oleh fungsi main(). Fungsi manakah itu ? Perintah apa yang ada pada fungsi lain dan tidak ada di fungsi itu ?

4. Jika anda mengulang materi variabel, A,B dan C merupakan variabel ….. sedangkan a,b,c dan i merupakan variabel …..

5. Apakah perubahan nilai pada variabel a,b di suatu fungsi tambah() berpengaruh pada fungsi pangkat ()?

(17)

17

PERTEMUAN KELIMA

FUNGSI (SESI 2)

Pada bab ini akan dijelaskan bagaimana membuat sub program PENYANDIAN CAESAR dan KONVERSI KARAKTER KE BIT dengan menggunakan fungsi Setelah mempelajari materi di babi ni diharapkan mahasiswa dapat membuat sub program dalam bentuk fungsi PRAKTEK

Buat sebuah aplikasi penyandian caesar sederhana untuk menyandi karakter A-Z/a-z dengan ketentuan sebagai berikut :

1. Inputan 1 abjad terang dan 1 abjad kunci 2. Output 1 abjad sandi

3. Rumus sandi = terang + kunci

4. Proses Input, Penyandian dan Output dilakukan oleh fungsi yang berbeda 5. Pengguna diberikan pilihan apakah akan menyandi abjad lagi atau tidak 6. Laporkan kode program yang anda buat dan outputnya

PRAKTEK

Buat sebuah aplikasi untuk mengubah abjad ke bit ASCII dengan ketentuan sebagai berikut :

1. Inputan 1 bilangan abjad

2. Output 1 rangkaian bit ASCII (8 bit)

3. Proses Input, Konversi dan Output dilakukan oleh fungsi yang berbeda 4. Pengguna diberikan pilihan apakah akan mengkonversi lagi atau tidak 5. Laporkan kode program yang anda buat dan outputnya

(18)

18

PERTEMUAN KEENAM

ARRAY

Pada bab ini akan dijelaskan bagaimana membuat dan mengoperasikan array Setelah mempelajari materi di babi ni diharapkan mahasiswa dapat melakukan berbagai manipulasi array

Array merupakan kumpulan data yang bertipe sama dan memiliki nama variabel yang sama. Contoh penggunaan array dapat anda lihat pada program di bawah ini:

#include <stdio.h> main()

{

int angka[10]; //mendeklarasikan 10 data integer pada variabel angka int i;

clrscr();

for (i=0;i<5;i++) {

printf(“Masukan angka bebas : “); scanf(“\n%d”,angka[i]);

}

printf(“\n”); //pindah satu baris for (i=0;i<5;i++)

{

printf(“Angka ke-%d = %d”,i,angka[i]); }

} output:

Masukan angka bebas : 1 Masukan angka bebas : 5 Masukan angka bebas : 3 Masukan angka bebas : 9 Masukan angka bebas : 8 Angka ke-1 = 1

Angka ke-2 = 5 Angka ke-3 = 3 Angka ke-4 = 9 Angka ke-5 = 8

(19)

19

Untuk penggunaan array dua dimensi atau lebih dapat anda lihat pada contoh di bawah:

PRAKTIK !!! # include <stdio.h> main() { long hasil[50][50]; int suku,i,brs,j; clrscr(); printf(“Tabel Perkalian”); printf(“---“);

printf(“Masukan Jumlah baris / kolom : “);scanf(“\n%d”,&suku); clrscr();

printf(“Tabel Perkalian”); printf(“---\n“);; brs=4;

printf(“x”);

for (i= 1;<= suku;i++) {

gotoxy((i*5)+1,brs);printf(“%5d”,i); gotoxy(1,brs+i+1);printf(“%d”,i); }

/* proses ....*/

for (i=1;i <= suku;i++) /* baris */ for (j=1;j<= suku;j++) /*kolom */ {

hasil[i][j]=i*j; }

for (i=1;i<=suku ;i++) /* baris */ for (j=1;j<=suku ;j++) /* kolom */ {

gotoxy((j*5)+1,brs+i+1); printf(“%5d”,hasil[i][j]); }

}

(20)

20

PERTEMUAN KETUJUH

BEKERJA DENGAN BILANGAN

Pada bab ini akan dijelaskan bagaimana membuat aplikasi penyandian VIGINERE dan SCTR Setelah mempelajari materi di babi ni diharapkan mahasiswa dapat melakukan berbagai operasi bilangan seperti mengimplementasikan algoritma enkripsi dengan C

PRAKTEK

Buat aplikasi penyandian VIGINERE untuk menyandi teks terang bebas dengan ketentuan : 1. Input teks terang berupa abjad dengan panjang maksimum 255 abjad

2. Input kata kunci abjad dengan panjang maksimum 255 abjad 3. Output teks sandi dengan format grup lima abjad

4. Fungsi untuk input, Output dan Proses dipisah

5. Usahakan untuk memetakan fungsi sesuai penggunaannya 6. Laporkan kode program yang anda buat dan outputnya

PRAKTEK

Buat aplikasi penyandian SCTR untuk menyandi teks terang bebas dengan ketentuan : 1. Input teks terang berupa abjad dengan panjang maksimum 255 abjad

2. Input kata kunci abjad dengan panjang maksimum 255 abjad 3. Output teks sandi dengan format grup lima abjad

4. Fungsi untuk input, Output dan Proses dipisah

5. Usahakan untuk memetakan fungsi sesuai penggunaannya 6. Laporkan kode program yang anda buat dan outputnya

(21)

21

PERTEMUAN KEDELAPAN

BEKERJA DENGAN FILES

Pada bab ini akan dijelaskan bagaimana membuat mengakses, membaca dan menulis file Setelah mempelajari materi di babi ni diharapkan mahasiswa dapat melakukan berbagai operasi dengan file seperti membaca, menambah, menghapus file dengan C

Fungsi-fungsi operasi file Fungsi pada

C

Kegunaan Deklarasi

fopen membuka file /menciptakan file (bila belum ada)

FILE *PF = fopen(char *namafile, char *mode); fclose/fcloseall menutup file tertentu / menutup

semua file

fclose(FILE *pf); / fcloseall(); getc membaca karakter dari file Variabel = getc(FILE *pf);

putc menulis karakter ke file putc(FILE *pf);

fgets membaca kalimat (string)

karakter dari file

fgets(char *str, int p, FILE *fp)

fputs menulis kalimat (string)

karakter ke file

fputs(char *str, FILE *fp) fread membaca satu blok byte dari

file

fread(void *buffer, int b_byte, int c, FILE *fp);

fwrite menulis satu blok byte ke file fwrite(void *buffer, int b_byte, int c, FILE*fp); fprintf membaca karakter dari file

terformat

fprintf(FILE *pf, “string control”, daftar argument);

fscanf menulis karakter ke file

terformat

fscanf(FILE *pf, “string control”, daftar argument); Keterangan :

1. FILE *pf : pointer file yang dihasilkan oleh perintah fopen 2. mode : modus file saat dibuka

(22)

22 PRAKTEK !!!

# include <conio.h> # include <ctype.h> # include <process.h> main(int argc, char *argv[]) {

int kode; char jawaban; if (argc != 3) {

puts("Cara Penggunaan CP[spasi][file_input][spasi][file_output]"); exit(1);

}

if (file_ada(argv[2])) {

printf("\nFile sudah ada, overwrite (Y/T) ? "); jawaban= toupper(getche());

if (jawaban != 'Y') exit(0);

}

if ((kode=salin_file(argv[1], argv[2]=0) puts("File sudah disalin"); else

switch (kode) {

case -1 : puts("File input tidak ditemukan !"); break;

case -2 : puts("File oputput tidak dapat diciptakan !"); break;

case -3 : puts("Kesalahan saat membaca file input"); break;

case -4 : puts("Kesalahan pada saat menulis file output"); break;

} }

LAPORKAN !!!

1. Bagaimana output aplikasi diatas (perhatikan 1 fungsi kurang dan lengkapi) 2. Kembangkan aplikasi diatas untuk menyandi sebuah file teks dengan system

(23)

23

PERTEMUAN KESEMBILAN

POINTER (SESI 1)

Pada bab ini akan dijelaskan apa itu pointer, bagaimana deklarasi dan penggunaannya Setelah mempelajari materi di babi ni diharapkan mahasiswa dapat menggunakan pointer untuk membuat program lebih cepat dan efisien

1. Konsep Pengalamatan Langsung char nilai1;

char nilai2; nilai1=5; nilai2=nilai1;

Contoh di atas merupakan pemberian nilai dari suatu variabel ke variabel lain secara langsung atau istilah lainnya adalah memberikan nilai pada suatu alamat variabel secara langsung. Variabel nilai1 pada mulanya diberikan nilai 5, kemudian nilai2 secara langsung diberikan nilai yang sama dengan variabel nilai1.

char nilai1=5; char nilai2; Alamat Memori

---

SEG : OFF VARIABEL DATA

--- 777F : 0000 nilai1 5 777F : 0001 nilai2 0 ... : ... --- nilai2=nilai1; ---

SEG : OFF VARIABEL DATA

---

777F : 0000 nilai1 5

777F : 0001 nilai2 5

... : ...

(24)

24

Tabel variabel memori

---

&nilai1 nilai1 &nilai2 nilai2

---

777F:0000 2 777F:0001 2

---

tabel di atas menunjukan gambaran bagaimana pemberian nilai tersebut berlangsung di dalam RAM. SEGMENT dan OFFSET merupakan bentuk pengalamatan memori untuk memproses data yang dilakukan dalam sistem operasi mode REAL (real mode), contohnya DOS.

Variabel nilai1 kita anggap beralamat memori di 777F:0000 sedangkan nilai2 beralamat 777F:0001. Kedua variabel ini mempunyai tipe yang sama, yaitu char (1 byte) dan tiap-tiap alamat memori menyimpan data dalam 1 byte.

2. Konsep Pengalamatan Tidak Langsung

Pointer merupakan tipe variabel data yang berisi alamat dari variabel lain . char nilai1=2;

char *ptr_nilai; Alamat Memori

---

SEG : OFF VARIABEL DATA

--- 777F : 0000 nilai1 2 777F : 0001 *0) ptr_nilai 0 777F : 0002 *1) ptr_nilai 0 777F : 0003 *2) ptr_nilai 0 777F : 0004 *3) ptr_nilai 0 ---

ptr_nilai=&nilai1; /* & = referensi alamaat memori variabel ---

SEG : OFF VARIABEL DATA

--- 777F : 0000 nilai1 2 777F : 0001 *0) ptr_nilai 00 777F : 0002 *1) ptr_nilai 00 777F : 0003 *2) ptr_nilai 7F 777F : 0004 *3) ptr_nilai 77 ---

(25)

25

Tabel Variabel memori

---

&nilai1 nilai1 &ptr_nilai ptr_nilai *ptr_nilai ---

777F:0000 2 777F:0001 777F:0000 2

--- nilai1=5;

Tabel Variabel memori

---

&nilai1 nilai1 &ptr_nilai ptr_nilai *ptr_nilai ---

777F:0000 5 777F:0001 777F:0000 5

---

contoh di atas menunjukan bahwa menggunakan tipe pointer pada variabel, menggunakan tanda (*) di depan nama variabelnya. Pada awalnya variabel nilai1 diberikan nilai 2 sedangkan variabel pointer ptr_nilai berisi alamat yang belum jelas dan mempunya panjang data sebanyak 4 byte untuk menyimpan suatu alamat. Pada saat ptr_nilai direferensikan ke nilai1 (ptr_nilai=&nilai1;) maka ptr_nilai kini telah menunjuk ke variabel nilai1. Jika variabel nilai1 mengalami perubahan maka ptr_nilai juga akan mengalami perubahan.

Untuk dapat mengambil nilai/isi yang ditunjuk oleh ptr_nilai gunakan (*) : *ptr_nilai;

(26)

26 # include <stdio.h> # include <conio.h> main() { char *ptr_nilai; unsigned char cetak; int nilai1;

clrscr();

printf("Masukan sebuah nilai : ");scanf("\n%d",&nilai1); printf("Nilai HexaDesimal : %X H\n",nilai1);

ptr_nilai=(char*)&nilai1; cetak=0;

cetak=*((char*)ptr_nilai+0);

printf("Nilai Byte Terendah : %X H\n",cetak); cetak=0;

cetak=*(ptr_nilai+1);

printf("Nilai Byte Tertinggi : %X H\n\n",cetak);

ptr_nilai[0]+=5; /*penambahan 5 pada byte terendahnya*/ printf("Nilai Desimal+5 : %d\n",nilai1);

printf("Nilai HexaDesimal+5 : %X H\n",nilai1); cetak=0;

cetak=*(ptr_nilai+0);

printf("Nilai Byte Terendah : %X H\n",cetak); cetak=0;

cetak=*(ptr_nilai+1);

printf("Nilai Byte Tertinggi : %X H\n",cetak); *(ptr_nilai+1)+=5;

}

PRAKTIK!!! Coba aplikasi diatas dan bandingkan apakah hasilnya sama dengan berikut ?

Masukan sebuah nilai : 6374 Nilai HexaDesimal : 18E6 H Nilai Byte Terendah : E6 H Nilai Byte Tertinggi : 18 H Nilai Desimal+5 : 6379 Nilai HexaDesimal+5 : 18EB H Nilai Byte Terendah : EB H Nilai Byte Tertinggi : 18 H

(27)

27

PERTEMUAN KESEPULUH

POINTER (SESI 2)

Pada bab ini akan dijelaskan apa itu pointer, bagaimana deklarasi dan penggunaannya Setelah mempelajari materi di babi ni diharapkan mahasiswa dapat menggunakan pointer untuk membuat program lebih cepat dan efisien

1. Operasi Penugasan Pointer #include “stdio.h” #include “conio.h” main() { float *x1,*x2,y; clrscr() y = 13.45;

x1 = &y; /*alamat dari y disimpan di x1*/ x2 = x1; /*isi variabel x1 disalin ke variabel x2*/

printf(“Nilai variabel y = %2f ada di alamat %p\n”,y,x1); printf(“Nilai variabel y = %2f ada di alamat %p\n”,y,x2); getch();

}

2. Operasi Aritmatika Pointer #include “stdio.h”

#include “conio.h” main()

{

Int nilai[3], *penunjuk; clrscr();

nilai[0] = 125; nilai[1] = 345; nilai[2] = 750; penunjuk = &nilai[0];

printf(“Nilai %i ada di alamat memori %p\n”,*penunjuk,penunjuk); printf(“Nilai %i ada di alamat memori %p\n”,*(penunjuk+1),penunjuk+1); printf(“Nilai %i ada di alamat memori %p\n”,*(penunjuk+2),penunjuk+2); getch();

(28)

28

3. Operasi Logika Pointer #include “stdio.h” #include “conio.h” main() { Int a = 100,b = 200, *pa, *pb; clrscr(); pa = &a; pb = &b;

if (pa < pb) printf(“pa menunjuk ke memori lebih rendah dari pb\n”); if(pa==pb) printf(“pa menunjuk ke memori yang sama dengan pb\n”); if(pa > pb) printf(“pa menunjuk ke memori lebih tinggi dari pb\n”); getch()

}

4. Pointer dan String (Array Karakter) #include “stdio.h”

void misteri1 (char *s); main ()

{

char string[] = “karakter”;

printf(“string sebelum proses adalah %s”,string); misteri1(string);

getch(); }

void misteri1 (char *s) { while (*s != ‘\0’) { If (*s >= ‘a’ && *s <= ‘z’) *s -=32; ++s; } }

(29)

29

PERTEMUAN KESEBELAS

MEMBUAT PUSTAKA

Pada bab ini akan dijelaskan apa itu pustaka dan bagaimana membuatnya Setelah mempelajari materi di babi ni diharapkan mahasiswa dapat menulis program pustaka .h pada C

Pada pembahasan di pertemuan pertama, kita telah membahas struktur C. sebuah aplikasi yan dibangun dengan bahasa C selalu diawali dengan deklarasi header yang menyatakan pustaka (library) yang digunakan. Sebenarnya apa itu pustaka ? sebuah file (pre-compiled) yang berisi tentang kumpulan-kumpulan fungsi. library disini tentu saja bukan perpustakaan, tetapi sistematika-nya mirip perpustakaan. kita dapat meminjam buku yang diperlukan, tanpa harus membelinya. nah library dalam pemrograman juga seperti itu, kita dapat saja menggunakan salah satu fungsi dari library, tanpa menulis ulang source-code dari fungsi tersebut, jadi lebih menghemat waktu dan tenaga.

C di GNU/Linux (atau gcc) mengenal dua pustaka dasar, yaitu static library dan shared (dynamic) library. static library sederhananya adalah kumpulan dari object file (pre-compiled) yang disimpan dalam sebuah file dengan akhiran *.a. sedangkan shared (dynamic) library sama juga dengan static library (shared library disimpan dalam akhiran *.so).

Perbedaan kedua jenis pustaka diatas adalah :

Pertama, file biner hasil kompilasi yang menggunakan shared library, itu tidak mengandung source atau kode biner dari library atau pustaka yang digunakan, hanya referensi-nya saja. sedangkan pada static library, pustaka-pustaka yang digunakan akan diikut sertakan dalam file biner-nya. Kedua, static library hanya diperlukan pada saat kompilasi saja, sedangkan shared library diperlukan saat kompilasi dan running.

Selanjutnya mungkin kita lebih sering menggunakan shared library karena lebih mudah pengembangannya.

(30)

30 Misalkan kita membuat pustaka baru dengan nama teman.h

# include <stdio.h> void fungsi_satu(void) { printf(“cetakan pertama\n”); } void fungsi_dua(void) { printf(“cetakan kedua”); }

lalu setelah terbentuk library-nya, kita letakan header dan library teman pada current direktori.

Selanjutnya kita panggil teman.h dengan program sebagai berikut : # include "teman.h" int main(void) { fungsi_satu(); fungsi_dua(); }

(31)

31

PERTEMUAN KEDUABELAS

MENULIS PUSTAKA ENKRIPSI

Pada bab ini akan djelaskan pembuatan pustaka enkripsi pada C Setelah mempelajari materi di babi ni diharapkan mahasiswa dapat menulis program pustaka enkripsi sederhana .h pada C

# include <stdio.h> int sandi (int bil1,int bil2) {

int bil3; bil3=bil1^bil2; return(bil3); }

Simpan pustaka diatas dengan nama xor.h dan selanjutnya kita sudah memiliki puta untuk melakukan penyandian dengan fungsi XOR.

Selanjutnya kita modifikasi xor.h sebagai berikut : # include <stdio.h>

int kunci (int awal) {

Int akhir; akhir=awal+=1; }

int sandi (int bil1,int bil2) {

int bil3; bil3=bil1^bil2; return(bil3); }

Simpan pustaka diatas dengan nama sandi.h

Selanjutnya modifikasi sandi.h untuk penciptaan kunci dan fungsi penyandian yang lebih rumit.

(32)

32

PERTEMUAN KETIGABELAS

MENULIS PUSTAKA MEMBACA DAN

MENULIS FILE

Pada bab ini akan dijelaskan bagaimana membuat pustaka untuk mengoperasikan file Setelah mempelajari materi di babi ni diharapkan mahasiswa dapat membuat sebuah aplikasi yang cukup rumit dengan C

Untuk sementara kita kembali ke materi bekerja dengan file. Berikut kutipan praktikum pada materi tersebut (perhatikan juga koreksi tambahan fungsi yang telah anda buat) #include <stdio.h> #include <doc.h> #include <io.h> #include <fcntl.h> #include <alloc.h> #include <conio.h> #include <ctype.h> #include <process.h> main(int argc, char *argv[]) {

int kode; char jawaban; if (argc != 3) {

puts("Cara Penggunaan CP[spasi][file_input][spasi][file_output]"); exit(1);

}

if (file_ada(argv[2])) {

printf("\nFile sudah ada, overwrite (Y/T) ? "); jawaban= toupper(getche());

if (jawaban != 'Y') exit(0);

}

if ((kode=salin_file(argv[1], argv[2]=0) puts("File sudah disalin"); else

switch (kode) {

(33)

33

break;

case -2 : puts("File oputput tidak dapat diciptakan !"); break;

case -3 : puts("Kesalahan saat membaca file input"); break;

case -4 : puts("Kesalahan pada saat menulis file output"); break;

} }

Pada materi pertemuan 11, kita mengenal bagaimana membuat sebuah pustaka sederhana. Sebuah pustaka yang berisi perintah untuk mencetak tulisan. Pada bahasa pemrograman C untuk mencetak tulisan digunakan perintah

printf(“cetakan pertama”); perintah diatas adalah perintah utama untuk mencetak tulisan.

Konsep yang sama kita gunakan untuk membuat pustaka buka-tutup file. Dari kode program yang ada diatas, anda tentukan perintah mana yang merupakan perintah utama untuk buka-tutup file.

BUAT !!!

Sebuah pustaka untuk buka-tutup file dan lengkapi dengan program utama untuk membuktikan pustaka yang anda buat benar-benar bekerja

LAPORKAN !!!

(34)

34

PERTEMUAN KEEMPATBELAS

MEMBUAT ANTAR MUKA APLIKASI

ENKRIPSI

Pada bab ini akan dijelaskan bagaimana membuat antar muka yang mudah dioperasikan Setelah mempelajari materi di babi ni diharapkan mahasiswa dapat membuat sebuah aplikasi yang cukup rumit dengan C

Hingga pertemuan kesepuluh kita telah mengenal bagaimana membuat aplikasi dengan bahasa pemrograman C. Pertemuan keempatbelas ini kita akan mencoba menggabungkan aplikasi-aplikasi sederhana yang sudah kita buat.

Sabah aplikasi pasti memiliki fungsi input, proses dan output. Dari ketiga fungsi tersebut, yang dapat kita lihat atau disebut antar muka adalah input dan output.

Pembuatan antar muka berkaitan erat dengan tujuan aplikasi, operator aplikasi dan pengguna output. Sebuah aplikasi sebaiknya memberikan output sesuai dengan tujuan aplikasi. Hasil proses lain yang mungkin dihasilkan namun tidak berhubungan dengan tujuan pembuatan tidak usah ditampilkan. Berikutnya operator, pengetahuan ini diperlukan agar antar muka yang kita buat mudah digunakan sesuai dengan pengetahuan yang dimiliki operator. Hal-hal seperti jeda tulisan, warna tampilan dan penanganan kesalahan digunakan untuk membantu operator mengoperasikan aplikasi. Terakhir adalah kualitas output sesuai dengan keinginan pengguna aplikasi.

Beberapa perintah inputan yang bisa digunakan seperti scanf, gets, getche, getch, fscanf, dll

Beberapa perintah output yang bisa digunakan seperti printf,putc, puts,fprintf, dll Untuk penanganan kesalahan dapat menggunakan perintah pemilihan (while ,if, case)

BUAT !!!

Sebuah antar muka untuk aplikasi penyandian yang telah anda buat. Hal-hal yang harus diperhatikan.

• Apa input aplikasi anda

• Apakah ada tahapan khusus yang harus ditaati? Jika ada, pastikan inputan yang anda buat sesuai dengan tahapan tersebut.

• Buat penanganan kesalahan untuk mengantisipasi kesalahan inputan dari user

• Berikan output sesuai tujuan aplikasi

• Berikan jeda, spasi, warna, asesoris untuk membuat tampilan lebih mudah dilihat LAPORKAN !!!

(35)

35

REFERENSI

1. Struktur Data, Ema Utami, Suwanto Raharjo, Sukrisno, Graha Ilmu, 2007 2. Pemrograman Lanjutan Turbo C, Abdul Kadir, Andi Offset, 1993

Gambar

tabel  di  atas  menunjukan  gambaran  bagaimana  pemberian  nilai  tersebut  berlangsung  di  dalam  RAM

Referensi

Dokumen terkait

Salah satu cara untuk meningkatkan nilai jual produk pertanian di Kabupaten Malang adalah dengan membuat sistem rantai pasok yang dapat meminimalkan biaya distribusi

perhatikan gambar di bawah ini dari kumpulan benda berikut manakah yang lebih banyak manakah yang kurang. ayo pasangkan setiap paku pada

Implementasi teori entrepreneur (kewirausahaan) pada dasarnya adalah suatu usaha yang dilakukan melalui pengawasan melekat oleh diri sendiri melalui kreatifitas

DADAN HAERI GURATMAN,

Daerah penghasil rokok dan tembakau adalah Kabupaten Banjarnegara, Kabupaten Banyumas, Kabupaten Blora, Kabupaten Boyolali, Kabupaten Cilacap, Kabupaten Demak,

Dengan melakukan perhitungan dan langkah-langkah yang sama untuk setiap pengujian maka dapat ditentukan nilai viskositas akhirnya adalah sebagai nilai..

Selain itu tataruang kantor yang baik akan memberikan keuntungan- keuntungan yakni, mencegah penghamburan tenaga dan waktu para pegawai karena berjalan mondar-mandir yang

Obat golongan ini mempunyai efek utama meningkatkan sekresi insulin oleh sel beta pankreas, dan merupakan pilihan utama untuk pasien dengan berat badan normal