• Tidak ada hasil yang ditemukan

Modul Algoritma Dan Pemrograman I Dengan Bahasa C++

N/A
N/A
Protected

Academic year: 2021

Membagikan "Modul Algoritma Dan Pemrograman I Dengan Bahasa C++"

Copied!
68
0
0

Teks penuh

(1)

MODUL PRAKTIKUM

ALGORITMA DAN PEMROGRAMAN I

Bahasa

: C++

Software : Turbo C++ 4.5

LABORATORIUM KOMPUTER

PROGRAM TEKNIK INFORMATIKA

UNIVERSITAS TEKNOLOGI YOGYAKARTA

2009

(2)

1.

PENDAHULUAN

Istilah-Istilah Umum

Sebelum mempelajari lebih lanjut, perlu diketahui beberapa istilah umum yang sering digunakan dalam hubungannya dengan Algoritma dan pemrograman.

Program, merupakan kata, ekspresi, pernyataan atau kombinasinya yang disusun dan dirangkai menjadi satu kesatuan prosedur yang berisi urutan langkah untuk

menyelesaikan masalah yang diimplementasikan dengan menggunakan bahasa pemrograman, sehingga dapat dieksekusi oleh komputer. Pemrograman

Bahasa Pemrograman, merupakan prosedur/tata cara penulisan program. Pada bahasa pemrograman, terdapat 2 hal penting, yaitu sintax dan sematik. Sintax merupakan aturan aturan gramatikal yang mengatur tata cara penulisan kata, ekpresi dan pernyataan. Sematik merupakan anturan untuk menyatakan suatu arti.

Pemrograman merupakan suatu proses mengimplementasikan urutan langkah untuk menyelesaikan suatu masalah dengan menggunakan bahasa pemrrograman.

Beberapa Standar dalam penulisan program yang baik: a. Kebenaran logika dan penulisan

b. Waktu minimum untuk penulisan program

c. Kecepatan maksimum untuk mengeksekusi program d. Ekpresi penggunaan memori yang sesuai

e. Kemudahan merawat dan mengembangkan program f. User friendly

g. Portabilias Program, bisa berjalan di berbagai sistem operasi

h. Pemrograman Modular/Pemecahan program dalam beberapa modul Selain standar penulisan program, terdapat pula Standar perawatan dan pengembangan program, sebagai berikut:

a. Dokumentasi yang baik b. Penlisan Intruksi

- Penulisan progrm yang baik/teratur Contoh penulisan yang kurang baik:

{

printf(”Terima kasih\n”);”Tekan enter”);}

(3)

- Penggunaan hurus besar dan huruf kecil dalam penulisan variabel dan komentar

- Pemberian tabulasi yang berbeda dalam penulisan program

c. Penggunaan prosedur-prosedur standar yang sudah dikenal oleh umum.

Algoritma merupakan suatu metode khusus yang tepat dan terdiri dari sereangkaian langkah yang terstruktur dan ditulis secara sistematis, yang akan dikerjakan untuk menyelesaikan suatu masalah. Proses dari maslaah hingga menjadi suatu algoritma disebut dengan tahap pemecahan masalah, sedangkan tahap dari algoritma hingga menjadi sautu program yang siap diimplementasi disebut dengan tahap implementasi.

Algoritma pemrograman yang baik memiliki beberapa ciri, yaitu: a. tepat, benar, sederhana, standar dan efektif

b. logis, terstruktur, dan sistematis c. semua operasi terdefinisi

d. semua proses harus berakhir setelah sejumlah langkah dilakukan

e. ditulis dengan bahasa yang standar dengan format pemrograman agar mudah untuk diimplejmentasikan dan tidak menimbulkan arti ganda.

Contoh Algoritma:

Perhatikan gambar di bawah ini:

Terdapat 2 gelas, A dan B. Gelas A diisi dengan Air Teh. Sedangkan gelas B diisi dengan Air Kopi. Bagimana cara menukar, sehingga hasil akhirnya Gelas A menjadi berisi Air Kopi dan gelas B berisi Air Teh?

Mungkin sebagian kita membuat langkah-langkah (Algoritma) sebagai berikut: 1. Masukkan air Teh dari Gelas A ke Gelas B

2. Masukkan air Kopi dari Gelas B ke Gelas A

masalah algoritma solusi

Tahap pemecahan masalah

Tahap implementasi

(4)

Tetapi perlu diperhatikan, bahwa Algoritma di atas merupakan sebuah algoritma yang tidak logis. Bagaimana mungkin Air Teh dari gelas A dimasukkan ke gelas B

sementara gelas B masih ada isinya?

Agar dapat melakukan pertukaran dengan benar, tentunya diperlukan satu buah gelas kosong, sebagai perantara. Anggap saja Gelas C., sehingga Algoritmanya adalah: 1. Sediakan Gelas C

2. Masukkan air Teh dari Gelas A ke Gelas C 3. Masukkan air Kopi dari Gelas B ke Gelas A 4. Masukkan air Teh dari Gelas C ke Gelas B

(5)

Contoh lain, penggunaan algoritma dapat dijumpai pada : - langkah-langkah pembuatan kue

- langkah-langkah merakit komputer - langkah-langkah mengisi pulsa telepon - dll

Pemrogram atau Programmer adalah orang yang bekerja menyusun sautu program. Untuk menghasilkan program yang baik dibutuhkan pemrogram yang baik dan berkualitas. Adapun beberapa cirinya adalah:

- mampu menyusun algoritma dengan baik

- menguasai bahasa dan teknik penulisan program dengan baik - dapat bekerja sama dalam sautu tim kerja

- dapat bekerja secara efisien dan tepat wktu.

Bahasa C dan C++

Berbicara dengan c++, tidak terlepas dari C yang merupakan bahasa pendahulunya. C pertama kali dimunculkan oleh Brian W. Kerninghan dan Dennis M. Rithche pada tahun (sekitar) 1972. sekitar 1 dekade setelahnya muncullah C++ oleh Bjarne Stroustrup dari Laboratorium Bell, AT&T, tahun 1983. Nama C++ diberikan oleh Rick Mascitti . Salah satu Keistimewaan dari C++ adalah dukungannya pada program berorientasi obyek (Object Oriented Programming/OOP)

Interpreter adalah suatu jenis penterjemah yang menterjemahkan perbaris instruksi untuk setiap saat. Keuntungannya adalah penyusunan program relatif lebih cepat dan bisa langsung diuji sekalipun masih ada beberapa kesalahan. Kelemahannya adalah kecepatannya menjadi lambat sebab sebelum suatu instruksi dijalankan selalu diterjemahkan terlebih dahulu. Disamping itu saat memori dieksekusi, interpreter juga harus ada dalam memori selain itu source program tidak dapat dirahasiakan karena dapat dilihat oleh orang lain.

Kompiler menterjemahkan seluruh instruksi dalam program sekaligus. Proses pengkompilasian cukup dilakukan sekali saja dan hasil terjemahan bisa dijalankan secara langsung tanpa tergantung lagi oleh program sumber maupun kompilernya. Keuntungannya adalah proses eksekusi berjalan cepat, program sumber dapat dirahasiakan sebab yang dieksekusi adalah program dalam bahasa mesin. Kelemahannya adalah proses pembuatan dan pengujian relatif lebih lama sebab ada waktu untuk kompilasi dan adapula waktu untuk proses linking

Jenis-jenis File yang Dimiliki Turbo C Beberapa jenis file yang penting :

(6)

 File HEADER

Merupakan file-file teks yang berisi fungsi-fungsi khusus yang digabungkan dengan

program dengan perintah ”include”.File-file header biasanya berektensi .h. Contoh : stdio.h dan conio.h

 File LIBRARY

Merupakan file-file yang di dalamnya terdapat fungsi-fungsi dasar dari Turbo C yang digabungkan dengan program utama dengan perintah ”link”. File-file library ini bertipe .lib

 File RUN TIME

Merupakan file yang akan digabungkan dengan program pada saat proses LINK. File Run Time disesuaikan dengan model memory-nya

 MATH Library

File ini digunakan untuk hal-hal yang berhubungan dengan operasi bilangan. File yang kegunaannya hampir sama dengan file ini adalah emu.lib

 File Editor, File Object dan File Eksekusi

File editor merupakan program yang disusun dalam Turbo C. File ini adalah file teks dan mempunyai ekstensi .c

File Object merupakan file hasil proses COMPILE dari File Editor. nama File Object sama dengan nama file editor dengan ekstensi .obj

File Eksekusi, merupakan file hasil proses LINK. File ini bernama sama dengan file-file sebelumnya dan dapat dijalankan dari prompt DOS. Ekstensi file eksekusi adalah .exe Kebanyakan versi C yang beredar adalah kompiler. Proses Kompilasi–Linking dari program C dapat digambarkan sebagai berikut :

Editor Editor File Include (File Judul) File Program Sumber Kompiler

File Pustaka File Obyek File Obyek Lain

Linker

(7)

Software Pembantu

 Untuk memudahkan pembuatan program, pada panduan ini menggunakan software Turbo C 4.5

Turbo C merupakan salah satu kompiler C yang sangat terkenal. Kompiler ini juga menyediakanlingkungan program terpadu yang disebut IDE (Integrated Development Environment) yang bisa dipakai untuk :

 Menulis program

 Mengkompilasi program

 Melakukan pencarian kesalahan (debugging)

 Mengkaitkan berbagai objek dan pustaka (linking)

 Menjalankan program

PENGENALAN C++

Pada umumnya, program C++ mempunyai susunan umum sbb: #preprocessor directive void main() { //isi program } Keterangan:

(8)

1. Preprocessor directive yang tersedia paa bahasa C++ akan dijalankan terlebih dahulu sebelum program utama c dijalankan. bentuk umum penulisan

preprocessor directive: 2. #include <nama_file>

beberapa file preprocessor yang sering digunakan di antaranya adalah: iostream.h : diperlukan pada program yang melibatkan obyek cout

conio.h : diperlukan bila melibatkan perintah clrscr()/pembersihan layar math.h : diperlukan pada program yang menggunakan operasi sqrt()/akar

dll.

graphic.h : diperlukan pada saat akan menggunakan mode grafik. dll 3. fungsi main() merupakan fungsi yang akan dijalankan setelah file-file

preprocessor dieksekusi.

4. untuk mengawali dan mengakhiri suatu blok, digunakan tanda kurung kurawal

”{” dan ”}”

5. setiap pernyataan dalam program diakhiri oleh tanda semicolon (”;”) 6. untuk memberikan komentar-komentar, diawali dengan tanda // atau jika

(9)

Praktikum 1:

Latihan 1a:

Ketiklah program berikut: #include <stdio.h> #include <conio.h> void main()

{

printf("ALGORITMA DAN PEMROGRAMAN"); printf("MENGGUNAKAN BAHASA C/C++\n"); getch();

}

 Simpanlah di folder Anda masing-masing dengan nama yang sesuai dengan cara memilih menu File>>save.

 Untuk mengecek program apakah berjalan atau tidak, pilih menu Debug>>run

 Jika ada kesalahan, maka program akan langsung menunjuk pada baris mana kesalahan tersebut. perbaiki dan jalankan

(10)

 Perhatikan perintah-perintah di atas.

- Perintah printf digunakan untuk memerintahkan menampilkan suatu data ke layar.

- Tanda \ pada string yang dilewatkan sebagai argumen printf() mempunyai makna khusus. Tanda ini bisa digunakan untuk menyatakan karakter khusus seperti :

Karakter Keterangan

\\ menyatakan karakter backslash \t menyatakan karaktertab

\n menyatakan pindah baris \0 menyatakn karakter ascii null

\a karakter bell

\b karaker backspace

\f karakter ganti halaman (form feed) \r karakter carriege return (ke awal baris) \v karaker tab vertical

\l menyatakan karakter petik tunggal \” menyatakan karakter petik ganda \? menyatakan karakter tanda tanya

\ooo karakter yang nilai iktalnya adlah ooo (3digit)

\xhh karakter yang nilai heksadesimalnya adalah hh (2 digit hexadesimal)

- perintah getch() memberikan kesempatan kepada pengguna untuk melihat hasil, yang merupakan singkatan dari get character. komputer akan melanjutkan jika pengguna sudah menekan suatu karakter

(angka/huruf/karakter lain). Bentuk umum perintah printf adalah:

printf(“string kontrol”, daftar argumen)

Contoh: Perintah

printf("ALGORITMA DAN PEMROGRAMAN"); Dapat diganti menjadi

(11)

 %s merupakan penentu format untuk data bertipe string. Tentang penentu format dibahas dalam bab tersendiri.

 Ubahlah baris:

printf("ALGORITMA DAN PEMROGRAMAN"); menjadi

printf("ALGORITMA DAN PEMROGRAMAN\n"); kemudian coba jalankan (Debug>>Run)

 Simpan ulang File anda dengan memeilih menu file>>save. Latihan 1b.

Buatlah file baru. Buatpula kode programnya jika diinginkan hasil tampilan saat di jalankan sbb:

============================================

= LATIHAN 1.B =

= ALGORITMA DAN PEMROGRAMAN II = = OLEH: UM412 (ISI NAMA ANDA) = = FAKULTAS TEKNOLOGI INFORMASI = = TULIS NAMA UNIVERSITAS ANDA = ============================================

Nb:

Dilarang copy-paste dari latihan sebelumnya  Simpan dan jalankan.

Latihan 1c.

(12)

2.

VARIABEL, CONSTANTA, TIPE DATA &

OPERATOR

Variabel & Constanta

Variabel adalah tempat penampung data. Variabel berada di memory komputer. Isi variabel dapat berubah-ubah. Biasanya setiap variabel mempunyai tipe. Kita dapat memilih sendiri nama variabel yang disesuaikan dengan tujuan.

Ketentuan penamaan variabel :

1. Nama variabel terdiri dari huruf, angka dan garis bawah. Nama variabel boleh didahului oleh huruf dan garis bawah, tetapi tidak boleh didahului oleh angka.

Contoh : nilai1, nilai_1, _nilai_turbo_c, a123

2. Tidak boleh menggunakan operator hitung ( + - / * % ) dan juga tidak boleh menggunakan karakter khusus ( : ; , # @ $ & dan titik )

3. Nama variabel tidak boleh berisi spasi

4. Tidak boleh memakai reserved words (kata-kata yang sudah mempunyai arti di dalam turbo C), secara sendiri. Variabel boleh memakai reserved word jika digabungkan dengan kata lain.

Contoh variabel yang salah : main, printf, scanf, dan sebagainya Contoh variabel yang benar : program_main, printf_1

5. Turbo C membedakan huruf besar dan kecil. Variabel gaji, Gaji dan GAJI adalah tiga variabel yang berbeda.

6. Panjang variabel boleh berapa saja, tetapi hanya 32 karakter pertama yang dikenal.

Tipe Data Dasar

Data berdasarkan jenisnya dapat dibagi menjadi 5 kelompok yang dinamakan sebagai tipe data dasar, yaitu :

 Bilangan bulat (integer)

 Bilangan real presisi-tunggal

 Bilangan real presisi-ganda

 Karakter

 Tak-bertipe

TIPE TOTAL BIT KAWASAN KETERANGAN

char 8 -128 .. 127 Karakter

(13)

TIPE TOTAL BIT KAWASAN KETERANGAN

float 32 3.4E-38 .. 3.4E+38 Bilangan Real presisi-tunggal double 64 1.7E-308 .. 1.7E+308 Bilangan Real presisi-ganda

void 0 Tidak bernilai Tak-bertipe

Variabel digunakan dalam program untuk menyimpan suatu nilai dan nilai yang ada padanya dapat diubah-ubah selama eksekusi program berlangsung. Variabel yang digunakan dalam program haruslah dideklarasikan terlebih untuk dengan tujuan memesan memori dan menentukan jenis data yang bisa disimpan di dalamnya.

Contoh :

Pendefinisian variable int jumlahsiswa;

float potongan_harga, hargaKotor, harga; char jawaban

Pemberian nilai variabel: jumlahsiswa = 10; potongan_harga= 0.20; hargaKotor= jumlah * harga;

jawaban=’y’;

Pemodifikasi Tipe/Type Modifier

Ada beberapa pemodifikasi tipe (type modifier) yang dapat dikenakan di awal tipe data dasar (kecuali void). Pemodifikasi tipe tersebut adalah :

Signed : Long Unsigned : Short

Tabel kemungkinan pemakaian pemodifikasi tipe pada tipe dasar : NAMA TIPE TOTAL BIT KAWASAN

unsigned char 8 0 .. 255

signed char 8 -128 .. 127

unsigned int 16 0 .. 63535

signed int 16 -32768 .. 32767

short int 16 -32768 .. 32767

unsigned short int 16 0 .. 65535 signed short int 16 -32768 .. 32767

long int 32 -2147483648 .. 2147483647

signed long int 32 -2147483648 .. 2147483647 unsigned long int 32 0 .. 4294967295

long double 80 3.4E-4932 .. 1.1E+4932

(14)

 Tipe long int boleh ditulis menjadi long

 Tipe signed int bisa ditulis menjadi signed saja

 Tipe unsigned int boleh ditulis dengan unsigned

Penentu Format

Penentu format untuk data tipe lain dapat dilihat pada tabel berikut : Tipe Data Penentu

Format Integer %d Floating Point -Bentuk Desimal %f Bentuk Berpangkat %e Double Precision %lf Character %c String %s Unsigned Integer %u Long Integer %ld

Long Unsigned Integer %lu Unsigned Hexadec. Int. %x Unsigned Octal Int. %o

Menggunakan Type Cast

Type Cast merupakan upaya untuk mengkonversikan suatu tipe menjadi tipe yang lain. Bentuk umum tipe cast adalah :

(tipe) ungkapan

dengan tipe dapat berupa pengenal tipe seperti char atau int. Misalnya jika x dideklarasikan bertipe int, bila dikehendaki agar ungkapan x/2 menghasilkan nilai pecahan (real) maka ungkapan x/2 dapat ditulis menjadi (float) x/2.

Contoh : #include <stdio.h> Void main() { int a=52; float b; b=a/3;

printf("Nilai a/3 adalah %f\n", b); b=(float) a / 2;

printf("Nilai b = (float) a /3 adalah %f\n", b); getch();

(15)

Mendefinisikan Konstanta

Berbeda dengan variabel, yang mana isi bisa berubah/diubah sesuai keinginan, konstanta merupakan tempat penyimpanan suatu nilai dalam memory yang mana nilai tersebut tidak akan diubah-ubah/bersifat konstant/tetap. Pendefinisiannya dilakukan dengan menggunakan pengarah praprocessor #define atau dengan const.

Contoh:

const pi=3.142 #define pi=3.142

Operator

Operator merupakan simbol atau karakter yang biasa dilibatkan dalam program untuk melakukan suatu operasi atau manipulasi seperti penjumlahan, memberikan nilai, membandingkan kesamaan dan sebagainya.

Operator yang dikenakan terhadap dua buah nilai (operand) disebut unary, misalnya a + b. Sedangkan operator yang hanya memiliki sebuah operand disebut unary, misalnya–c.

1. Operator Aritmatika BINARY * / % + -Perkalian Pembagian Sisa pembagian Penjumlahan

Pengurangan atau negasi UNARY

+

-Tanda minus Tanda plus

2. Operator Penurunan dan Penaikan ++

--Operator penaikan Operator penurunan Contoh :

x = x + 1 ; dapat ditulis ++x; atau x++ ; y = y–1 ; dapat ditulis - -y; atau y - - ;

3. Operator Hubungan > < >= <= != Lebih besar Lebih kecil

Lebih besar atau samadengan tidak sama dengan

(16)

== assignmen/pengisian) 4. Operator bitwise & | ! And Or not

Prioritas Operator Matematika

Seperti halnya operasi matematika, dalam c, mempunyai prioritas operasi mana yang akan dikerjakan terlebih dahulu. Adapun urutan prioritas dapat dilihat di dalam tabel di bawah ini: Prioritas Tertinggi Prioritas Terendah ++ --- (unary minus) * / % + -Contoh: x=4+2-5; //hasil: x=1 x=4-2+5; //hasil: x=7 x=4-4/2; //hasil: x=2

Keyword dan Identifier

Dalam bahasa pemrograman, suatu program dibuat dari elemen-elemen sintaks individual yang disebut dengan token., yang di dalamnya memuat variabel, konstanta, keyword, operator dan tanda baca. keyword merupakan kata kunci yang sudah

digunakan dalam suatu program. keyword ini tidak boleh digunakan untuk

memberikan nama suatu variabel. beberapa keyword yang dikenal dalam C adalah: void, int, float, define, if, dan lain-lain.

contoh: #include <conio.h> void main() { float luas; luas=28*10;

printf(”luasnya adalah %7.0f”,luas);

}

(17)

{,} merupakan token tanda baca luas merupakan token variabel float merupakan token keyword *,= merupakan token operator

Praktikum 2:

Latihan 2a:

Ketiklah program berikut: #include <stdio.h> #include <conio.h> void main() { int panjang,lebar; float luas; printf("\n"); printf("====================================\n"); printf("PROGRAM PENCARI LUAS PERSEGI PANJANG\n"); printf("====================================\n"); printf("Masukkan panjang :");scanf("%d",&panjang); printf("Masukkan lebar :");scanf("%d",&lebar); luas=panjang*lebar;

printf("====================================\n"); printf("Luasnya adalah : %7.2f\n",luas);

printf("====================================\n"); getch();

}

- Simpan hasil pekerjaan Anda di folder masing-masing, dan jalankan (dengan memilih menu Debug>>run atau Ctrl+F9)

(18)

Latihan 2b. jika sudah berhasil, buatlah sebuah file baru yang dapat digunakan untuk mencari luas dari persegi panjang jika tampilan yang di inginkan seperti berikut:

Latihan 2c. simpan hasil yang sudah dibuat sebelumnya. perbaiki program yang yang sudah dibuat, sehinggap program dapat digunakan untuk mencari garis miring dan keliling segitiga siku dengan tampilan seperti berikut:

Catatan:

- Untuk menghitung garis miring dihitung dengan rumus gm=sqrt(alas*alas+tinggi*tinggi)

- untuk dapat menggunakan fungsi sqrt, diperlukan header math.h (tambahan perintah #include <math.h>)

(19)

3.

FUNGSI-FUNGSI UMUM

Terdapat beberapa perintah/fungsi yang sering digunakan dalam bahasa c++, di antaranya adalah :

- fungsi untuk menampilkan : printf,puts, putchar, dll - fungsi untuk memasukkan: scanf, getch, getche, dll

- fungsi numeric: sqrt, pow, tan, div, ceil, floor, exp, max, min dll. - fungsi string: strcpy,strcat,strupr,strlwr dll

PRINTF()

Merupakan fungsi yang paling umum digunakan dalam menampilkan data. Berbagai jenis data dapat ditampilkan ke layar dengan fungsi ini.

Bentuk penulisan : printf(“string kontrol”, argumen1, argumen2, …);

 String kontrol dapat berupa keterangan yang akan ditampilkan pada layar beserta penentu format seperti %d, %f. Penentu format dipakai untuk memberi tahu kompiler mengenai jenis data yang akan ditampilkan

 Argumen adalah data yang akan ditampilkan ke layar. Argumen ini dapatr berupa variabel, konstanta atau ungkapan

PUTS()

Fungsi ini digunakan khusus untuk menampilkan data string ke layar. Sifat fungsi ini, string yang ditampilkan secara otomatis akan diakhiri dengan \n (pindah baris). Dibandingkan dengan printf(), perintah ini mempunyai kode mesin yang lebih pendek.

PUTCHAR()

Digunakan khusus untuk menampilkan sebuah karakter ke layar. Penampilan karakter tidak diakhiri dengan perpindahan baris, misalnya :

putchar(‘A’); sama dengan printf(“%c”, A);

Contoh : #include <stdio.h> #include <conio.h> void main() { char A; int nilai1=20; float nilai2=2000.0; clrscr();

printf("Angka %d dapat ditampilkan dalam format %3d \n", nilai1, nilai1); printf("Angka %f dapat ditampilkan dalam format %8.3f”,nilai2,nilai2);

(20)

printf(”dan %-8.0f\n", nilai2); putchar('T');

puts("ekan sembarang tombol untuk melanjutkan"); getch();

} Hasil :

SCANF()

Merupakan fungsi yang dapat digunakan untuk memasukkan berbagai jenis data. Bentuk scanf() sesungguhnya menyerupai fungsi printf() yang melibatkan penentu format. Bentuk

penulisan : scanf(“string kontrol”, daftar argumen);

contoh:

scanf("%f",&gaji);

scanf("%d-%d-%d",&bil1,&bil2,&bil3);

Hal-hal yang perlu diperhatikan dalam pemakaian scanf yaitu :

1. scanf memberi pergantian baris secara otomatis, artinya Anda tidak perlu memberi \n untuk berpindah ke baris berikutnya.

2. scanf memakai penentu format, tetapi tidak memerlukan penentu lebar field. Contoh

yang salah : scanf(“10.2f”,&gaji);

3. Variabel yang dipakai di dalam scanf harus didahului dengan operator alamat (&). 4. jika diinginkan memasukkan lebih dari 1 data, maka dapat dilakukan dengan

memasukkan data-data dalam 1 baris dengan pemisah koma(”,”), garis hubung (”-”), titik koma (”,”) atau spasi (” ”)

GETCH() dan GETCHE()

Dipakai untuk membaca sebuah karakter dengan sifat karakter yang dimasukkan tidak perlu diakhiri dengan enter. Fungsi getch() merupakan singkatan dari get character artinya baca karakter tetapi isian data yang dimasukkan tidak akan ditampilkan di layar. Fungsi getche() sebenarnya adalah singkatan dari get character and echo, artinya baca karakter lalu tampilkan di layar Contoh : getch(); karakter=getch(); getche(); Catatan :

 Program yang menggunakan printf(), putchar(), scanf() dan puts() mengandung baris yang berisi #include <stdio.h>

 Program yang melibatkan getche() atau getch() mengandung baris yang berisi #include <conio.h>

(21)

Fungsi Matematika

Include : #include<stdlib.h>

Beberapa fungsi matematika yang sering digunakan adalah :

Fungsi Keterangan Contoh Hasil

sqrt Menghitung akar positif dari sebuah bilangan bulat

sqrt(x);

pow Menghitung xy z = pow(10,2);

tan sin cos acos asin atan

Menghitung nilai tangent dari sebuah sudut Menghitung nilai sinus dari sebuah sudut Menghitung nilai cos dari sebuah sudut Menghitung nilai arctan dari sebuah sudut Menghitung nilai arcsin dari sebuah sudut Menghitung nilai arctan dari sebuah sudut ceill membulatkan ke atas

floor membuatkan ke bawah exp mencari nilai exponensial ex

fmod mencari sisa pembagian fmod(9,2) 1

Fungsi String

String merupakan bentuk data yang biasa dipakai dalam bahasa pemrograman untuk keperluan menampung dan memanipulasi data teks

Catatan:

- Variabel string adalah variabel yang dipakai untuk menyimpan string, misalnya : char nama[20];

- Merupakan instruksi untuk mendeklarasikan variabel string dengan panjang maksimal mengandung 20 karakter (termasuk karakter NULL).

- Pemasukan data string ke dalam suatu variabel biasa dilakukan dengan memakai gets(). - Bentuk penulisan : gets(nama variabel);

Jika memakai scanf() instruksinya menjadi scanf(“%s”, nama variabel);

 Didepan nama variabel tidak perlu menggunakan operator &

 Data string yang dimasukkan tidak dapat mengandung spasi

 Prototipe gets() ada pada file stdio.h

Untuk menampilkan isi variabel string, pernyataan yang dapat digunakan berupa :

 puts(variabel string);

 printf(“%s”, variabel string);

 printf(variabel string);

Fungsi Keterangan Contoh Hasil

strlen Menghitung panjang string strlen(”Turbo C”); 3 strlwr mengubah string menjadi huruf

kecil

strwr(”Turbo C”); turbo c

strupr mengubah string menjadi huruf besar

(22)

strcpy mongkopi string dari variabel satu ke variabel lain

strcpy(a,b);

strcat Menggabungkan beberapa string srcat(”a”,”b”); ab atof mengkonversi data dari

alphanumeric menjadi numeric

atof(”100 orang”); atof(”1e3”); 100.0 1000

Praktikum 3:

Latihan 3.a:

Ketiklah program berikut: #include <stdio.h> #include <conio.h> void main() { char A; int nilai1=20; float nilai2=2000.0; clrscr();

printf("Angka %d dapat ditampilkan dalam format %3d \n", nilai1, nilai1);

printf("Angka %f dapat ditampilkan dalam format %8.3f",nilai2,nilai2);

printf(" dan %-8.0f\n", nilai2); putchar('T');

puts("ekan sembarang tombol untuk melanjutkan"); getch();

}

 Simpan dan jalankan!

Latihan 3.b

Jika sudah berhasil, buatlah sebuahfile baru, dan ketikkan kode berikut:

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

(23)

{ char A; int angka1,angka2; float angka3; char nama[20]; clrscr();

printf("Masukkan Nama Anda :"); scanf("%s",&nama);

printf("Masukkan 2 angka secara berturut-turut dengan jarak spasi :");

scanf("%d %d",&angka1, &angka2);

printf("TERIMA KASIH %s \n",strupr(nama)); angka3=sin(angka1);

printf("Nilai sinus dari %d adalah %4.2f\n",angka1,angka3 );

printf("Nilai cos dari %d adalah %4.2f\n",angka2,cos(angka2));

getch(); }

Simpan dan jalankan Latihan 3.c

(24)

4.

STRUKTUR PERCABANGAN

 Pernyataan if  Pernyataan if-else  Pernyataan switch Pernyataan IF bentuk umum : if (kondisi) Pernyataan Contoh :

Jika pembelian lebih besar dari 500000, maka diskonnya 5% dari pembelian if (beli >= 500000)

diskon=0.05*beli;

Jika if diikuti oleh pernyataan majemuk, maka diperlukan tanda awal blok dan akhir blogk

berupa kurung kurawal (”{ }”)

Contoh :

Jika pembelian lebih besar dari 500000, maka disktonnya 5% dari pembelian dan masih ditambah voucher senilai 50000

if (beli >= 500000) {

diskon=0.05*beli;

bonus=”voucher belanja senilai 50000”;

}

Pernyataan If-Else dan Kondisi Bentuk umum : if (syarat1) pernyataan 1 else pernyataan 2; Contoh :

(25)

if (nilai>=60)

keterangan=”lulus” //tanpa tanda titik koma else

keterangan=”uji ulang”

atau bisa juga ditulis dengan perintah Kondisi:

keterangan = (nilai>=60)? ”lulus”: ”uji ulang”;

perintah kondisi hanya berlaku jika pernyataan bersifat tunggal

seperti halnya if, jika terdapat pernyataan majemuk, maka diperlukan tanda blok kurung

kurawal (”{ }”)

Pernyataan If - Else If- Else Bentuk umum : if (syarat1) pernyataan 1 else if (syarat2) pernyataan 2 else if (syarat3) pernyataan 3 else pernyataan 4; Contoh:

Jika nilai>=85, kategori A Jika nilai>=75, kategori B jika nilai>=60, kategori C jika nilai<60, kategori D if (nilai>=85) kategori[0]=’A’ else if (nilai>=75) kategori[0]=’B’ else if (nilai>=60) kategori[0]=’C’ else kategori[0]=’D’;

atau bisa juga ditulis dengan pernyataan kondisi:

kategori[0]= (nilai>=85) ?’A’: (nilai>=75) ?’B’: (nilai>=60) ?’C’:’D’;

(26)

Tangga if-else dapat dipakai untuk menguji beberapa syarat. Cara lain untuk menyatakan bebrapa syatat dapat juga dilakukan dengan perintah switch.

Di dalam pernyataan switch, sebuah variabel secara berturut-turut diuji oleh daftar konstanta bilangan bulat atau konstanta karakter. Jika sesuai dengan sebuah konstanta, pernyataan yang mengikuti konstanta akan dikerjakan. jika tidak terdapat konstanta yang sesuai, pernyataan default akan dikerjakan

Bentuk Umum : switch (variabel) { case konstanta1: { pernyataan; break; } case konstanta2: { pernyataan; break; } default { pernyataan; } } contoh:

jika kategori=”A”, maka keterangan =”Istimewa” jika kategori=”B”, maka keterangan =”Baik” jika kategori=”C”, maka keterangan =”Cukup”

switch (kategori[0]) { case ’A’: { printf(”Istimewa”); break; } case ’B’: { printf(”Istimewa”); break; } case ’C’: {

(27)

printf(”Istimewa”);

break; } default

{

printf(“Maaf, kategori tidak dikenal”);

break; } }

Catatan:

1. Switch hanya dapat memeriksa persamaan dengan sebuah konstanta, sedangkan IF dapat memeriksa syarat-syarat lain (>,<, >=,<=,!= dan sebagainya). contoh:

pernyataan ”jika nilai >= 85” tidak bisa dilakukan dengan menggunakan

pernyataan switch.

2. Tidak ada dua konstanta yang sama didalam sebuah switch

Praktikum 4:

Latihan 4.a:

Ketikkan perintah berikut:

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

{

char nama[20], keterangan[30]; char kategori;

int nilai;

printf("Masukkan Nama: ");gets(nama);

printf("Nilai : ");scanf("%d",&nilai); if (nilai>=85)

{

printf("\nSelamat..., %s",&nama); printf("\nAnda Layak dapat Bintang"); kategori =’A’;

}

else if (nilai>=75) {

(28)

printf("\nSelamat..., %s",&nama);

printf("\nSelangkah lagi... Anda layak dapat bintang...!"); kategori[0] =’B’; } else { printf("\nMaaf..., %s",&nama);

printf("\nSebaiknya Anda belajar lagi...!"); kategori[0] =’C’; } printf("\nKategori : %s",&kategori[0] ); getch(); return 0; } Latihan 4.b:

Buat program untuk menentukan suatu bilangan GENAP atau GANJIL jika diinginkan

Input :

Masukkan sebuah bilangan bulat : 6 Output :

Nilai 6 habis dibagi 2

Sehingga termasuk sebagai bilangan GENAP Latihan 4.c:

Buatlah program dengan tampilan seperti berikut: Output 1 :

============================= LATIHAN 4.C

MENCARI LUAS

============================= 1. Luas Persegi Panjang

2. Luas Segi tiga 3. Luas Lingkaran

============================= Pilihan Anda : 1

============================= Output 2: jika yang dipilih 1 :

Terima kasih, menu yang anda pilih nomor 1 Masukkan Panjang : 20

Masukkan Lebar : 10 Luasnya Adalah : 200

(29)

5.

STRUKTUR PERULANGAN

forwhiledo–while Perulangan FOR Bentuk umum Loop For :

for (inisialisasi; syarat; penambahan) pernyataan;

Keterangan :

 Inisialisasi adalah pernyataan untuk menyatakan keadaan awal dari variabel kontrol.

 Syarat adalah ekspresi relasional yang menyatakan berhentinya pengulangan.

 Penambahan menyatakan perubahan variabel kontrol setiap terjadi pengulangan. Setiap bagian harus dipisahkan oleh tanda titik koma.

Contoh : int i;

for (i=1; i <=5 ; i++) printf("%d \n",i);

Pada program tersebut : Inisialisasi : i = 1 Syarat : i <= 5

Penambahan : i++ , artinya ditambah 1 Hasil : 1 2 3 4 5

Pengembangan Perulangan For

(30)

contoh : int x,y;

for (x=0,y=0; x+y<=20; x++,y++) printf("%5d %5d %5d\n",x,y,x*y); Hasil:

Variasi lain adalah dengan menghilangkan salah satu bagian dari perintah perulangan contoh : #include <stdio.h> #include <conio.h> void main() { char ulang; clrscr();

for (ulang=' '; ulang!='t'; ) {

printf("Belajar perulangan Variasi For: \n");

printf("Mengulang lagi? (t untuk menghentikan) : \n"); ulang=getche();

} }

Jika program di atas dijalankan, maka komputer akan meminta pengguna untuk memasukkan karakter, dan akan dihentikan jika pengguna memasukkan huruf t

Pengurangan elemen loop dapat juga digunakan pada perlulangan tanpa batas (Loop tak terhingga)

contoh :

char ch;

for (ch=' '; ; ) ch=getche();

(31)

Contoh: int t,x; x=100;

for (t=0 ; t<x ; t++ ) ;

dalam contoh di atas, lama perlulangan tergantung besar angka yang ada pada variabel x. Perulangan WHILE

Bentuk umum :

while (syarat) pernyataan;

Pernyataan pada loop while dapat berupa sebuah pernyataan atau blok pernyataan atau pernyataan kosong. Pernyataan akan diulang selama syarat benar,

contoh : int i=1; while (i <= 5) { printf("ALGORITMA\n"); i=i++; } Hasil :

Loop while menyatakan bahwa pengulangan akan dilakukan terus selama syarat terpenuhi. Perulangan DO WHILE Bentuk umum : do { pernyataan; pernyataan; } while (syarat)

Berbeda dengan perlulangan while, Perulangan menggunakan do while syarat akan dicek setelah pernyataan dijalankan 1x. jika memenuhi syarat, maka akan mengulang lagi.

(32)

int pilih; do

{

printf("=============\n"); printf("1. Kelas Reguler \n"); printf("2. Kelas Intensif\n"); printf("=============\n"); printf("Pilihan Anda:"); scanf("%d",&pilih);

} while ( (pilih!=1) && (pilih!=2));

Jika program di atas dijalankan, komputer akan meminta pengguna untuk memasukkan pilihan. jika yang dipilih tidak sama dengan 1 dan 2, maka komputer akan mengulang.

Praktikum 5:

Latihan 5.a.

Ketiklah program berikut:

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

{

int i, pangkat2, jumlah; float akar;

char garis[40] = "==============================="; clrscr();

printf("Tabel Kuadrat dan Akar Kuadrat \n"); printf("%s\n",garis);

printf("Bilangan Kuadrat Akar Kuadrat\n"); printf("%s\n",garis);

for (i=1; i<=10; i++) { pangkat2 = i * i; akar = sqrt(i); printf(" %2d %3d %6.4f \n",i,pangkat2,akar); } printf("%s\n",garis); getch(); }

(33)

 Simpan dan jalankan

Latihan 5b

Ubahlah program yang sudah dibuat, sehingga menjadi seperti berikut:

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

{

int i, pangkat2, jumlah; float akar;

char garis[50] = "========================================"; float jumlah1,jumlah2,jumlah3;

jumlah1=0;jumlah2=0;jumlah3=0; clrscr();

printf("Tabel Kuadrat dan Akar Kuadrat \n"); printf("%s\n",garis);

printf("Bilangan Kuadrat Akar Kuadrat\n"); printf("%s\n",garis);

for (i=1; i<=10; i++) { pangkat2 = i * i; akar = sqrt(i); jumlah1+=i; jumlah2+=pangkat2; jumlah3+=akar; printf(" %8d %8d %8.2f \n",i,pangkat2,akar); } printf("%s\n",garis); printf("Jumlah%4.0f %8.0f %8.2f \n",jumlah1,jumlah2,jumlah3); printf("%s\n",garis);

(34)

getch(); }

 Jika berhasil, maka hasil terlihat seperti berikut:

 Keterangan:

- Jumlah 55, merupakan jumlah dari variabel i setelah diulang-ulang sampai 10X jumlah1+=1, bisa juga ditulis jumlah1=jumlah1+i; yang artinya nilai jumlah yang baru adalah nilai jumlah sebelumnya ditambah dengan i, sehingga:

jumlah1=jumlah1+i

Saat i=1, maka jumlah1=0+1= 1, dimana jumlah1 sebelumya=0 dan i=1; Saat i=2, maka jumlah1=1+2= 3, dimana jumlah1 sebelumya=1 dan i=2; Saat i=3, maka jumlah1=3+3= 6, dimana jumlah1 sebelumya=3 dan i=3; Saat i=4, maka jumlah1=6+4= 10, dimana jumlah1 sebelumya=6 dan i=4; dst

Latihan 5d.

Buatlah program untuk menghitung suatu faktorial contoh:

5!=5*4*3*2*1 =120 Jika diinginkan tampilan hasinya:

Latihan 5e.

(35)

Ubahlah program Anda, sehingga jika di jalankan tampak seperti berikut:

Latihan 5f.

Jika sudah berhasil, simpan dengan nama lain.

Buatlah sebuah program jika diinginkan tampil seperti berikut

Latihan 5g.

Jika sudah berhasil, simpan dengan nama lain.

Buatlah sebuah program jika diinginkan menampilkan angka: 0 1 2 3 4 5 4 3 2 1 0 1 2 3 4 5 4 3 2 1 0

(36)

Latihan 5h.

Jika sudah berhasil, simpan dengan nama lain.

Buatlah sebuah program jika diinginkan menampilkan angka:

1 9 2 8 3 7 4 6 5 5 Latihan 5i.

Jika sudah berhasil, simpan dengan nama lain.

Buatlah sebuah program jika diinginkan menampilkan angka: 1 12 123 1234 12345 Latihan 5j.

Jika sudah berhasil, simpan dengan nama lain.

Buatlah sebuah program jika diinginkan menampilkan angka: 1 121 12321 1234321 123454321 Latihan 5k.

Jika sudah berhasil, simpan dengan nama lain.

Buatlah sebuah program yang dapat digunakan untuk menampilkan bilangan prima dari 2 sampai n, dimana n diinputkan oleh user.

(37)

Algoritma Mencari bilangan prima:  0 bukan bilangan prima

 1 bukan bilangan prima  2 bilangan prima

 jika bukan 0,1,2, Semua bilangan yang habis dibagi 2 bukan bilangan prima  jika tidak (tidak masuk dalam kategori di atas):

o anggap n adalah suatu bilangan dan m adalah nilai integer dari akar n. jika dari 3 sampai m terdapat terdapat n habis dibagi dengan bilangan tersebut (bilangan antara 3 sampai akar n), maka bukan bilangan prima jika tidak masuk dalam kategori di atas, berarti bilangan prima

(38)

6.

ARRAY

Array merupakan deretan variabel yang berjenis sama dan mempunyai nama sama. Pada bahasa C, array mempunyai lokasi yang bersebelahan. Alamat terkecil menunjuk ke elemen pertama dan alamat terbesar menunjuk ke alamat terakhir. Sebuah elemen pada array diakses melalui indeksnya.

Array 1 dimensi Bentuk umum:

tipe_array nama_array[ukuran]; //array 1 dimensi cara pemberian nilai/assignmen

nama_array[index_array]=constant; nama_array[index_array]=var; Keterangan:

tipe_array : menyatakan tipe dasar array

ukuran : menyatakan banyaknya elemen pada array index_array : nomor index dari array yang akan di isi Contoh :

int nilai[5]; nilai[0]=90; nilai[1]=80;

hal ini menyatakan array nilai mempunyai 5 elemen, yaitu : nilai[0] , nilai[1] , nilai[2] , nilai[3] dan nilai [4]

Semakin besar ukuran array, semakin besar pula memori yang digunakan. Total memori yang digunakan adalah :

byte total = ukuran dari tipe dasar * banyaknya elemen

dalam contoh diatas, jumlah memori yang digunakan sebesar 2*5 byte =10 byte di mana 2 byte merupakan jumlah memori yang digunakan untuk menyimpan 1 buah variabel bertipe integer. meskipun jumlah elemen yang dideklarasikan 5, tetapi dalam prakteknya, pemrogram bisa menambah elemen secara otomatis jika nomor index yang bersangkutan di sebutkan, contoh: nilai[8]=75, padahal pada saat pendefinisian maksimal 5.

(39)

Bentuk umum:

tipe_array nama_array[ukuran1][ukuran2]; //array 2 dimensi tipe_array nama_array[ukuran1][ukuran2][ukuran3]; //array 3 dimensi dst.

Contoh:

int matrix1[2][2]; char nama[10][20];

matrix1 mempunyai elemen array :

matrix1[1][1], matrix1[1][2], matrix1[2][1], dan matrix1[2][2] sedangkan contoh cara pengisian data:

matrix1[1][1]=90;

nama[1]=”Um”

jika diinginkan menampilkan, maka dapat digunakan printf atau untuk string gunatan gets

printf(”nilai matrix1[1,1] adalah%d”,matrix1[1][1]);

printf(”nama anak ke 1 adalah ”),gets(nama[1]);

Adapun jumlah memori yang digunakan sebesar

byte total = ukuran dari tipe dasar * banyaknya elemen1 * banyaknya elemen2 sehingga

matrix1[2][2] memerlukan memori sebesar 2*2*2 byte =8 byte. contoh penggunaan Array:

int i,j; int m[2][2]; clrscr();

for(i=1; i<=2; i++) { for(j=1; j<=2; j++) { m[i][j] = i*j; printf("%3d", m[i][j]); } printf("\n"); } Inisialisasi Array

(40)

Bentuk umum :

tipe nama_array [ukuran1, ukuran2, …, ukuran n] = {daftar nilai};

Daftar nilai berisi konstanta yang sesuai dengan tipe array. Setiap konstanta dipisahkan oleh tanda koma. Konstanta pertama akan mengisi elemen pertama, konstanta kedua untuk elemen kedua dan seterusnya.

contoh:

int nilai[5] = {90,85,75,99,100}; hal ini menunjukkan bahwa

nilai[0]=90, nilai[1]=80 dan seterusnya.

Contoh penulisan dalam program:

main() {

int nilai[5] = {90,85,75,99,100};

for (int x=0;x<=2;x++) cout<<nilai[x]<<endl; } Hasil: 90 85 75 Pointer

Pointer adalah sebuah variabel yang berisi alamat memori komputer di mana suatu variabel diletakkan.

Perhatikan contoh penggunaan memori di bawah ini:

varA varB

nilai variable ... ... 255 700 ... ... ...

alamat memori 1456 1457

 variabel varA di simpan di memori komputer pada alamant 1456 dan , variabel varB diletakkan di 1457

(41)

Operator Pointer Ada 2 operator pointer : 1. Operator &

Bersifat unary (hanya memerlukan satu operan). Operator ini menghasilkan alamat dan operannya. Contoh : x = &a, jika kita mengacu pada gambar di atas, maka isi variabel x adalah 1004.

2. Operator *

Operator * dan operator & bersifat saling komplemen. Operator * juga bersifat unary dan menghasilkan nilai yang berada pada sebuah alamat..

Contoh:

int varA, *alamat1, varB; varA=5;

alamat1=&varA; varB=*alamat1;

printf("\n Isi variabel varA adalah %4d", varA);

printf("\n Isi variabel alamat1 adalah %4u", alamat1); printf("\n Isi variabel varB adalah %4d", varB);

printf("\n Isi variabel alamat1 sekarang adalah %4u", alamat1++);

Jika dijalankan, maka hasilnya adalah:

Keterangan:

 variabel alamat1 berisi alamat memory dari variabel varA.

 pada contoh di atas, 8808 merupakan tempat di mana data variabel a di simpan di memory komputer pada saat program dijalankan. angka tidak mutlak, bisa berubah setiap saat jika program ini di jalankan di lain waktu.

 variabel alamat1 harus bertipe sama dengan varA, yaitu integer.

 *x menghasilkan isi dari alamat yang dituju X, sehingah asil dari varB=5, karena alamat yang dituju alamat1 adalah variabel A.

Alamat dapat dicetak dengan format %u sebab alamat adalah bilangan bulat tanpa tanda (unsigned integer)

 nilai increment alamat1 adalah sama dengan jumlah memory yang digunakan oleh variabel int (variabel yang dituju), yaitu 2, sehingga ++alamat1 menghasilkan nilai 8808+2=8810;

Contoh 2:

(42)

int hasil; nilai[0]=95; nilai[1]=90; nilai[2]=80; nilai[3]=75; alamat1=&nilai[1];

hasil=*(alamat1+2); //sama dengan hasil=nilai[1+2] printf("\n Isi variabel nilai[1] adalah %4d", nilai[1]); printf("\n Isi variabel alamat1 adalah %4u", alamat1); printf("\n Isi variabel nilai[3] adalah %4d", nilai[3]); printf("\n Isi variabel Hasil adalah %4u", hasil);

Hasilnya:

Keterangan:

 hasil=*(alamat1+2); sama halnya dengan hasil= nilai[3], yaitu nilai[1+2]

Array dapat ditunjuk dengan index-nya dan dengan alamat. Penunjukan dengan alamat akan lebih cepat daripada penunjukan dengan index-nya.

Contoh 1:

/* menggunakan index array */ #include <stdio.h> #include <ctype.h> #include <conio.h> void main() { char kata[80]; int i;

printf("Masukkan kalimat(huruf besar):\n");gets(kata); printf("huruf kecilnya adalah : ");

for(i=0; kata[i]; i++) printf("%c",tolower(kata[i])); getch();

}

(43)

#include <stdio.h> #include <ctype.h> #include <conio.h> void main() { char kata[80], *p; clrscr();

printf("Masukkan kalimat(huruf besar):\n"); gets(kata); printf("huruf kecilnya adalah:\n");

p=kata; while (*p) printf("%c",tolower(*p++)); getch(); } Hasil: Contoh 2: #include <stdio.h> #include <conio.h> void main() { char kata[80]; char *p; int i; clrscr();

printf("Masukkan 2 kalimat: "); gets(kata); for (i=0; kata[i] && kata[i] != '.'; i++); p=&kata[i+1];

printf("Kalimat ke-2 adalah : \n"); printf(p);

getch(); }

(44)

Contoh3:

Penggunaan Array dalam Pengurutan Data: #include<stdio.h>

#include<conio.h>

void InputData(int z[],int x); void BubbleSort(int z[],int x); void SelectionSort(int z[],int x); void Tampil(int z[],int x);

main() {

int N,data[100]; int ch;

printf("Masukkan banyak data : "); scanf("%d",&N);

InputData(data,N); printf("Menu Utama");

printf("Jenis-jenis metode pengurutan \n"); printf("1. Bubble Sort\n");

printf("2. Selection Sort\n");

printf("\nMasukkan jenis pengurutan (1-2) : "); scanf("%d",&ch);

switch(ch) {

case 1 : BubbleSort(data,N);break; case 2 : SelectionSort(data,N);break; }

printf("\n\nData yang telah terurut : \n"); Tampil(data,N);

getch(); }

void InputData(int z[],int x) { int i; for(i=0;i<x;i++) { printf("Data ke %d : ",i+1); scanf("%d",&z[i]); } }

void BubbleSort(int z[],int x) { int i,j,tmp; for(i=0;i<x;i++) for(j=0;j<x;j++) if(z[i]<z[j]) { tmp=z[i]; z[i]=z[j]; z[j]=tmp; } }

void SelectionSort(int z[],int x) {

(45)

for(i=0;i<x-1;i++) { int min=i; for(j=i;j<x+1;j++) if(z[min]>z[j]) min=j; tmp=z[i]; z[i]=z[min]; z[min]=tmp; } }

void Tampil(int z[],int x) { for(int i=0;i<x;i++) printf("%d ",z[i]); } Hasil: Array Pointer

Seperti halnya variabel lain, Array pointer bisa juga digunakan. bentuk umum:

tipe *nama_variable_pointer[ukuran] contoh

char *y[10]

array pointer ini sering digunakan dalam berbagai operasi string. Contoh dalam aplikasi:

#include <stdio.h> #include <ctype.h>

(46)

#include <conio.h> void main() { char *jurusan[] = { "Jogja-Semarang", "Jogja-Solo", "Jogja-Surabaya", "Jogja-Malang" }; int pilih; clrscr();

printf("Masukkan Pilihan Anda(1-4):"); scanf("%d",&pilih); printf("\nAngkutan yang Anda pilih adalah : \n");

printf("%s",jurusan[pilih-1]); getch(); } Hasil: Contoh 2: #include <stdio.h>; #include <conio.h>; void main() {

char *nama1 = "SEBENING EMBUN PAGI"; char *nama2 = "SEJERNIH MATA AIR"; char *nama3; clrscr(); puts("Awal :"); printf("Nama-1 : %s", nama1); printf("\nNama-2 : %s", nama2); nama3=nama1; nama1=nama2; nama2=nama3; puts("\n\nSetelah ditukar :"); printf("Nama-1 : %s", nama1);

(47)

printf("\nNama-2 : %s", nama2); }

Hasil:

Pointer banyak dilibatkan dalam program C, misalnya untuk melewatkan string dari suatu fungsi ke fungsi yang lain. Penerapan pointer yang paling umum yaitu untuk menciptakan variabel dinamis yang memungkinkan untuk memakai memori bebas (memori yang belum dipakai) selama eksekusi program.

Agar suatu pointer menunjujk ke variabel lain, mula-mula pointer harus diisi dengan alamat dari variabel yang akan ditunjuk. Untuk menyatakan alamat dari suatu variabel, operator & (operator alamat, yang bersifat unary) bisa digunakan dengan cara menempatkan operator di depan nama variabel.

Jika suatu variabel sudah ditunjuk pointer, variabel tersebut dapat diakses melalui variabel itu sendiri (dikatakan sebagai pengaksesan langsung) ataupun melalui pointer (dikatakan sebagai pengaksesan tidak langsung). Pengaksesan tak langsung dilakukan dengan menggunakan operator indirection berupa simbol * (bersifat unary).

(48)

Praktikum 6:

Latihan6.a

Ketiklah program di bawah ini:

/* memasukkan data nilai*/ #include <stdio.h> #include <ctype.h> #include <conio.h> void main() { char nama[10] [25];

float nilai[10], jumlah, rata; int jumlahAnak,i;

char garis[40]="\n=================================="; clrscr();

printf("Banyaknya Anak : "); scanf("%d",&jumlahAnak); jumlah=0;

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

printf("Nama Mahasiswa : "); scanf("%s",&nama[i]); printf("Nilai : "); scanf("%f",&nilai[i]);

jumlah += nilai[i]; }

clrscr(); printf(garis);

printf("\nDaftar Nilai Ujian Bahasa C");

printf("\nNama Mahasiswa Nilai"); printf(garis);

for (i=1; i<=jumlahAnak; i++)

printf("\n %-25s %5.1f", nama[i], nilai[i]); printf(garis);

rata= jumlah / jumlahAnak;

printf("\nRata-rata adalah %5.2f ", rata); getch();

}

Simpan dan jalankan Latihan 6.b

Buatlah program berikut:

(49)

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

{

int matrix1[5][5], matrix2[5][5], matrix3[5][5]; int baris,kolom,i,j;

int jumlah;

char garis[40]="==================================\n"; clrscr();

printf("%s",garis);

printf("Jumlah baris matrix: "); scanf("%d",&baris); printf("Jumlah kolom matrix: "); scanf("%d",&kolom); printf("%s",garis);

printf("Matrix 1:\n"); for (i=1; i<=baris; i++) for (j=1; j<=kolom; j++) { printf("matrix1[%d,%d]:",i,j); scanf("%d",&matrix1[i][j]); } printf("%s",garis); printf("Matrix 2:\n"); for (i=1; i<=baris; i++) for (j=1; j<=kolom; j++)

{

printf("matrix2[%d,%d]:",i,j); scanf("%d",&matrix2[i][j]); }

//menghitung jumlah matrix1 +matrix2 for (i=1; i<=baris; i++)

for (j=1; j<=kolom; j++)

matrix3[i][j]=matrix1[i][j]+ matrix2[i][j]; //menampilkan hasil

printf("%s",garis); printf("Hasil :\n"); for (i=1; i<=baris; i++) {

printf("|");

(50)

printf("%8d ",matrix3[i][j]); printf(" |\n"); } printf("%s",garis); getch(); }

 Simpan dan jalankan. jika berhasil, maka akan tampak seperti berikut:

Latihan 6.c

Buatlah program untuk menghitung perkalian matrix di bawah ini:

Latihan 6.d

Buatlah program untuk mengurutkan data dengan metode selection sort. 8 2 7 4 1 2 12 15 X =

(51)

7.

FUNGSI

Fungsi merupakan sub program. fungsi yang pasti ada di dalam program adalah fungsi main() seperti program-program yang sudah dibuat sebelumnya.

Contoh fungsi yang sering digunakan: clrsrc(); merupakan fungsi yang digunakan untuk membersihkan layar. fungsi clrscr ini terdapat dalam file header conio.h. sehingga untuk memanggil perintah clrscr() sebelumnya harus mengikutkan file conio.h dengan perintah #include <conio.h>. karena fungsi untuk membersihkan layar sudah dibuatkan oleh C dalam file conio.h, maka pemrogram tidak perlu susah-susah membuat sebuah fungsi sendiri. fungsi lain adalah printf(), puts(), gets() dan lain-lain.

adapun fungsi-fungsi yang tidak dibuatkan oleh C, maka pemrogram bisa membuat sendiri fungsi-fungsi sesuai dengan keinginan pemrogram

beberapat tujuan dibuatnya fungsi: - agar perintah lebih terstruktur

- mengurangi banyaknya perintah akibat perintah yang sama di ulang-ulang - efektifitas memori dll

Bentuk umum :

tipe_fungsi nama_fungsi (deklarasi parameter) {

pernyataan; pernyataan; return var }

cara pemanggilan fungsi

var=namafungsi(parameter); Keterangan:

- tipe_fungsi merupakan tipe dari hasil kembalian yang diinginkan. adapun nilai yang akan dikembalikan digunakan perintah return var. jika tidak menginginkan kembalian, cukup

diberikan perintar return; dan tipe_fungsi diisi dengan ”void”.

- perintah return berfungsi untuk mengembalikan nilai, keluar dari fungsi dan kembali ke program yang memanggil.

- deklarasi parameter merupakan parameter-parameter yang dilewatkan. jika tidak memerlukan parameter, maka cukup dikosongkan

(52)

Contoh 1: //Menggunakan fungsi #include <math.h> #include <stdio.h> #include <conio.h> void tampilkanGaris() { printf("========================================\n"); } void main() { tampilkanGaris(); printf("Belajar Fungsi\n"); tampilkanGaris(); getch(); } hasil: Keterangan:

- Pada contoh1 di atas, fungsi tampilkanGaris berisi perintah untuk menampilkan tanda = berulang kali.

- karena fungsi tampilkanGaris tidak mengembalikan nilai, maka dibeikan tipe void dan perintah return tidak harus dituliskan

- fungsi tampilkanGaris dipanggil 2 kali, sehingga tampak hasil garis sebanyak 2 kali pula. Contoh 2:

//Penggunaan fungsi dan parameter #include <stdio.h>

#include <conio.h>

void tampilkanGaris(int panjang) {

int i;

for (i=1;i<=panjang;i++) printf("="); printf("\n");

}

(53)

{ tampilkanGaris(20); printf("Belajar Fungsi\n"); tampilkanGaris(30); getch(); } Hasil: Contoh 3a:

//penggunaan fungsi, parameter dan return #include <stdio.h>

#include <conio.h>

void tambah1(int angka1,int angka2) {

int hasil;

hasil=angka1+angka2;

printf("%d ditambah %d sama dengan %d\n", angka1, angka2, hasil);

}

int tambah2(int angka1,int angka2) { int hasil; hasil=angka1+angka2; return hasil; } void main() { int h; tambah1(2,3); h=tambah2(33,20);

printf("Hasil 33 ditambah 20 sama dengan %d\n",h); getch();

}

hasil:

2 ditambah 3 sama dengan 5

(54)

Keterangan:

- Pada contoh 3 di atas, fungsi tambah1 tidak mengembalikan nilai, meskipun bisa menampilkan hasil, sehingga menggunakan tipe void

- fungsi tambah2 mengembalikan nilai bertipe integer yang dimasukkan dalam variabel

”hasil”. karena nilai yang dikembalikan bertipe integer, maka fungsi yang dipanggil pun harus pertipe integer, yaitu: int tambah2(...)

- untuk memanggil fungsi tambah1, cukup dengan perintah tambah1(2,3) di mana angka 2 bertipe integer dan angka 3 juga bertipe integer. angka 2 dan tidak bisa diganti-ganti sesuai dengan keinginan.

- untuk memanggil fungsi tambah2 menggunakan h=tambah2(33,20); yang mana variabel h harus bertipe integer, sesuai dengan tipe dari fungsi tambah2.

Contoh 3b:

//penggabungan fungsi dan pointer #include <stdio.h>

#include <string.h> #include <conio.h> void bulan(int bl) {

static char *namaBulan[]=

{ "-", "Januari", "Feburari", "Maret",

"April", "Mei", "Juni", "Juli", "Agustus", "September", "Oktober", "November", "Desember" };

printf("%s", namaBulan[bl]); }

void main() {

printf("Bulan ke-1 adalah bulan ");bulan(1); };

Hasil:

Bulan ke-1 adalah bulan Januari

Scope Variabel

Jika diperhatikan, dari contoh 3 di atas, terdapat 2 kali inisial variabel hasil, pada fungsi tambah1 dan pada fungsi tambah2.

Pada fungsi tambah1 terdapat inisial variabel int hasil; Pada fungsi tambah2 juga terdapat inisial variabel int hasil;

(55)

Hal ini menunjukkan bahwa inisial variabel pada suatu fungsi tidak dikenali di fungsi yang lain. Variabel ini disebut dengan variabel local. Adapun variabel jenis lain adalah variabel public, dimana semua fungsi mengenali variabel tersebut. Variabel public ini biasanya diinisialisasi pada sebelum penulisan fungsi-fungsi. Ruang lingkup variabel ini disebut dengan scope variabel

.

Perhatikan contoh di bawah ini: Contoh 4a:

//penggunaan fungsi, parameter dan return #include <stdio.h>

#include <conio.h>

void tambah1(int angka1,int angka2) {

int hasil;

hasil=angka1+angka2;

printf("%d ditambah %d sama dengan %d\n", angka1, angka2, hasil);

}

int tambah2(int angka1,int angka2) { int hasil; hasil=angka1+angka2; return hasil; } void main() { int h; tambah1(2,3); h=tambah2(33,20);

printf("Hasil 33 ditambah 20 sama dengan %d\n",h); getch();

}

Variabel “hasil” masih bersifat local. Agar menjadi variabel yang bersifat public, maka program dapat diubah menjadi:

//penggunaan fungsi, parameter dan return #include <stdio.h>

#include <conio.h>

int hasil;

(56)

{

hasil=angka1+angka2;

printf("%d ditambah %d sama dengan %d\n", angka1, angka2, hasil);

}

int tambah2(int angka1,int angka2) { hasil=angka1+angka2; return hasil; } void main() { int h; tambah1(2,3); h=tambah2(33,20);

printf("Hasil 33 ditambah 20 sama dengan %d\n",h); getch();

}

Variabel yang sudah diinisialisasi secara public, tidak perlu diinsialisasikan di dalam fungsi

lagi. Sehingga inisial “int hasil” pada fungsi tambah1 dan tambah2 dihilangkan dan

dipindahkan ke luar fungsi. Contoh 5:

//penggunaan fungsi,variabel local dan variable public #include <stdio.h> #include <conio.h> #include <math.h> int angka1; void test1() { angka1=100; } void test2() { int angka1; angka1=200; } void main() { clrscr(); angka1=25;

(57)

printf("\nNilai variabel angka1 adalah %d",angka1); test1();

printf("\nNilai variabel angka1 ");

printf("\nsetelah menjalankan fungsi test1 adalah %d",angka1); test2();

printf("\nNilai variabel angka1 ");

printf("\nsetelah menjalankan fungsi test2 adalah %d",angka1); getch();

} Hasil:

Keterangan:

 terdapat 2 kali inisialisais variabel angka1 (int angka1), inisial variabel angka1 yang diletakkan di luar fungsi bersifat public, tetapi inisial variabel yang diletakkan pada fungsi test2 bersifat local. Karena variabel angka1 yang ada di fungsi test2 bersifat local, maka pengubahan nilai variabel angka1 yang ada fungsi tersebut tidak mengubah nilai yang ada pada variabel nilai1 yang bersifat public. Pada fungsi main, angka1 diberi nilai 25, sehingga saat ditampilkan, bernilai 25. setelah menjalankan fungsi test1, nilai angka1 berubah menjadi 100. hal ini dikarenakan pada fungsi test1 terdapat perintah mengubah angka1 (angka1=100), yang mana pada fungsi test1 tidak terdapat inisialisasi variabel angka1 yang menunjukkan bahwa angka1 yang diubah adalah angka1 yang bersifat public. Setelah menjalankan fungsi test2, angka1 tidak berubah. Padahal pada fungsi test2 terdapat pengubahan angka1 (angka1=200). Hal ini

dikarenakan variabel angka1 yang diubah oleh test2 adalah variabel angka1 local.

Fungsi Recursi

Fungsi recursi merupakan sebuah fungsi yang di dalamnya terdapat perintah untuk memanggil fungsi itu sendiri.

Contoh 1: //fungsi recursi #include <stdio.h> #include <conio.h> int validasi(int x) { if (x>=100) { scanf("%d",&x);

(58)

validasi(x); } else return x; } void main() { clrscr(); int y=125;

printf("\nMasukkan angka kurang dari 100 :"); validasi(y);

printf("\nTerima kasih"); getch();

}

Hasil:

Masukkan angka kurang dari 100: 252 254

25

Terima kasih Keterangan:

 Pada fungsi validasi di atas, terdapat perintah untuk memanggil diri sendiri, yaitu perintah validasi(x). perintah ini akan dijalankan jika nilai x yang sebelumnya kurang dari 100. jika nilai lebih dari 100, maka akan langsung dikembalikan dengan perintah return x.

Contoh 2:

//fungsi faktorial dengan menggunakan recursi #include <stdio.h> #include <conio.h> int faktorial(int x) { int hasil; if ((x==0) || (x==1)) { return 1; } else return x*faktorial(x-1); } void main()

(59)

{

clrscr(); int y,z;

printf("\nMasukkan angka : ");scanf("%d",&y); z=faktorial(y);

printf("\n%d! adalah %d",y,z); getch(); } Hasil: Masukkan angka: 5 5! adalah 120 Contoh 3:

//fungsi ini akan diulang sampai ditekan tombol ‘y’

#include <iostream.h> #include <conio.h> char tunggusampaiditekantombol(char tb) { char t=getch(); if (tb==t) return '0'; else return tunggusampaiditekantombol(tb); } main() {

cout<<"tekan huruf y ya.."; tunggusampaiditekantombol('y'); cout<<"\nterima kasih";

} Hasil:

tekan huruf y ya.. terima kasih

(60)

Praktikum 7

Latihan 7.a

Ketiklah program berikut:

#include <conio.h> #include <math.h> float akar(float r) { float s; if (r>=0) { s=sqrt(r); return s; } else {

printf("\nMaaf, Anda memasukkan data yang salah"); return 0; } } void main() { float a,b; clrscr();

printf("Masukkan bilangan >= 0 : "); scanf("%f",&a); b=akar(a);

printf("\nAkar dari %8.2f adalah %8.2f",a,b); getch();

}

 Simpan dan jalankan

Latihan 7.b

CV TRUST merupakan sebuah lembaga yang bergerak dalam bidang IT. Untuk menghitung gaji karyawan menggunakan sistem perjam dan per golongan dengan ketentuan sebagai berikut:

Golongan Gaji Perjam Normal

1 50000

2 40000

(61)

Jika Lembur, maka gaji perjamnya adalah gaji perjam normal ditambah 5000. Buatlah programnya jika diinginkan:

Input: nama, jumlah jam kerja normal,golongan, jumlah jam kerja lembur Fungsi yang digunakan:

- fungsi hitunggaji dengan parameter:gol,jamnormal,jamlembur bertipe float output: total gaji yang diterima

contoh kerangka program:

#.include …..

float hitunggaji(int gol, int jamlembur, int jamlembur) { …. } void main() { …. }

contoh hasil yang diinginkan:

Latihan 7.c Dari soal 7b,

- tambahkan input untuk jumlah karyawan

- gunakan perulangan untuk memasukkan data-data karyawan - buatlah fungsi tersendiri untuk memasukkan data karyawan,

contoh pemanggilan: inputKaryawan(x) dimana x adalan nomor karyawan - buat pula fungsi tersendiri untuk menampilkan hasilnya

contoh: tampilkanHasil; Contoh kerangka program:

float hitunggaji(int gol, int jamlembur, int jamlembur) {

(62)

…. } void inputKaryawan(int x) { … … } void tampilkanHasil() { … } void main() { ….

For (x=1;x<=jlhkaryawan;x++) inputKaryawan(x); tampilkanHasil();

(63)

8.

STRUKTUR

Struktur adalah koleksi dari variabel yang dinyatakan dengan sebuah nama dengan sifat setiap variabel dapat memiliki tipe yang berlainan. Struktur biasa dipakai untuk mengelompokkan beberapa informasi yang berkaitan menjadi sebuah kesatuan. Struktur ini sering digunakan untum mencatat berkas data, seperti database mahasiswa, database penjualan dll. bentuk umum: struct nama_tipe_struktur { tipe field-1; tipe field-2; tipe field-n;

} var_struk1, var_struk2,..., var_strukn; atau struct nama_tipe_struktur { tipe field-1; tipe field-2; tipe field-n; }

nama_tipe_struk var_struk1, var_struk2,..., var_strukn; contoh : struct dataMahasiswa { char nama[30]; char kelas[10]; int nilai; }; dataMahasiswa mahasiswa1; atau struct dataMahasiswa { char nama[30]; int nilai; } mahasiswa1;

untuk mengisi atau mengambil suatu nilai field yang ada di dalam struk digunakan var_struk1.nama_field

(64)

contoh:

mahasiswa1.nilai=90; gets(mahasiswa1.nama); Struk bertingkat

Dalam prakteknya, suatu struk bisa di definisikan ke dalam struk lain. contoh: struct tanggal { int tanggal; int bulan; int tahun; }; struct dataMahasiswa { char nama[30]; int nilai;

struct tanggal tgl_lahir; } mahasiwa1;

jika diinginkan mengisi data bulan, maka dapat dilakukan dengan cara: mahasiswa1.tgl_lahir.bulan=9

sedangkan untuk mengambil data nama atau data nilai, puts(mahasiswa1.nama); n=mahasiswa1.nilai; Contoh: #include <stdio.h> #include <string.h> #include <conio.h> void main() { struct tanggal { int tanggal; int bulan; int tahun; }; struct dataMahasiswa {

(65)

char nama[30];

struct tanggal tgl_lahir; };

struct dataMahasiswa dataku; char tombol;

int i, jumlah = 0;

puts("DATA MAHASISWA : \n"); clrscr();

printf("Nama : "); gets(dataku.nama);

printf("Tanggal Lahir (tgl-bulan-tahun) : "); scanf("%d-%d-%d", &dataku.tgl_lahir.tanggal, &dataku.tgl_lahir.bulan,

&dataku.tgl_lahir.tahun); printf("\nData MAHASISWA\n");

printf("NAMA TANGGAL LAHIR"); printf("\n%-21s %d-%d-%d", dataku.nama, dataku.tgl_lahir.tanggal, dataku.tgl_lahir.bulan, dataku.tgl_lahir.tahun); getch(); } Hasil: Array Struktur

Penggabungan struktur dengan array sering kali dilakukan. Contoh : #include <stdio.h> #include <string.h> #include <ctype.h> #include <conio.h> #define maks 20 void main() {

(66)

struct tanggal { int tanggal; int bulan; int tahun; }; struct dataMahasiswa { char nama[30];

struct tanggal tgl_lahir; };

struct dataMahasiswa dataku[maks]; char tombol; int i, jumlah = 0; puts("DATA MAHASISWA : \n"); clrscr(); do { printf("Nama : "); gets(dataku[jumlah].nama); printf("Tanggal Lahir (tgl-bulan-tahun) : "); scanf("%d-%d-%d",

&dataku[jumlah].tgl_lahir.tanggal, &dataku[jumlah].tgl_lahir.bulan, &dataku[jumlah].tgl_lahir.tahun);

fflush(stdin); //hapus sisa data dalam penampung keyboard

jumlah ++;

printf("\nMasih ada data lagi [y/t] ? "); tombol = toupper(getch());

while ( !(tombol == 'T' || tombol == 'Y')) tombol = toupper(getch());

printf("%c\n\n", tombol); }

while (tombol== 'Y');

printf("\nData MAHASISWA\n");

printf("NAMA TANGGAL LAHIR"); for(i=0; i<jumlah; i++)

printf("\n%-21s %d-%d-%d", dataku[i].nama, dataku[i].tgl_lahir.tanggal,

(67)

dataku[i].tgl_lahir.bulan, dataku[i].tgl_lahir.tahun); getch(); } Hasil :

Praktikum 8

Latihan 8.a

Buatlah sebuah program dengan menggunakan tipe struk untuk memasukkan data buku perpustakaan, jika diketahui field-field bukunya: judul,penerbit,pengarang,tahun terbit.

Algoritma dan Pemrograman II dengan bahasa C++ Universitas Teknologi Yogyakarta

Umar, S.Kom um412(c)III-2009

(68)

Referensi

Sutejo Budi S, Algoritma & Teknik Pemrograman, Andi Offset, 2004

Munir Rinaldi, Algoritma dan Pemrograman Dalam Bahasa Pascal dan C Edisi 3, Penerbit Informatika, 2005

Gambar

Tabel kemungkinan pemakaian pemodifikasi tipe pada tipe dasar : NAMA TIPE TOTAL BIT KAWASAN

Referensi

Dokumen terkait

Selain keunikan dan potensi ekonomi yang tinggi dari jenis-jenis cauliflora tersebut di atas beberapa jenis juga tennasuk kelompok tumbuhan terancam langka atau

NO MAHASISWA TIM PENGUJI JUDUL TUGAS AKHIR WAKTU RUANG HARI/TGL Tanjung Winoko Pembimbing 1 : Kusumo Dradjad Sutjahjo, S.T., M.Si.. Pembimbing 2

Otot polos disebut juga otot tak sadar atau otot alat dalam (otot viseral).Otot polos tersusun dari sel – sel yang berbentuk kumparan halus.Masing – masing sel

Pupuk adalah setiap bahan yang diberikan ke dalam tanah atau disemprotkan pada tanaman dengan maksud menambah unsur hara yang diperlukan oleh tanaman.. Pemupukan adalah setiap

Cirrus creased his brow, struggling to make sense of the words, and was just about to check the sphere round his neck, to see where Tierra del Fuego might be, when

That is right. Begin by identifying some interesting problem, one that is already solved, and then blatantly copy the solution. Copy the solution by typing it out yourself. Get

Penelitian ini bertujuan untuk mengetahui besar penerimaan yang diperoleh dalam usaha keripik pisang gula aren pada industri Flamboyan kurun waktu 3 bulan,

Kelompok I terdiri dari 2 varietas (Adira IV dan Adira I) dan 1 klon (BIC 369) berproduksi lebih tinggi dari klon lokal II baik pada lokasi Pleihari maupun KP Banjarbaru..