You are on page 1of 35

BAB I PENDAHULUAN

Algoritma pemrograman sangat luas sekali bahasannya yang digunakan sebagai dasar pemrograman engineering seperti : 1. 2. 3. 4. 5. Fungsi dan Prosedur Pointer Struktur Operasi File Rekursi

A.Fungsi Dan Prosedur Pengertian Fungsi

Fungsi merupakan suatu bagian dari program yang dimaksudkan untuk mengerjakan suatu tugas tertentu dan letaknya terpisah dari program yang memanggilnya. Fungsi merupakan elemen utama dalam bahasa C karena bahasa C sendiri terbentuk dari kumpulan fungsi-fungsi. Dalam setiap program bahasa C, minimal terdapat satu fungsi yaitu fungsi main(). Fungsi banyak diterapkan dalam program-program C yang terstruktur. Keuntungan penggunaan fungsi dalam program yaitu program akan memiliki struktur yang jelas (mempunyai readability yang tinggi) dan juga akan menghindari penulisan bagian program yang sama. Dalam bahasa C fungsi dapat dibagi menjadi dua, yaitu fungsi pustaka atau fungsi yang telah tersedia dalam C++ dan fungsi yang didefinisikan atau dibuat oleh programmer. Beberapa Fungsi yang telah tersedia di dalam bahasa C++, antara lain:
Fungsi Operasi String (tersimpan dalam header file string.h) strcpy()

Berfungsi untuk menyalin suatu string asal ke variable string tujuan. Bentuk umum : strcpy(var_tujuan, string_asal); strlen()

berfungsi untuk memperoleh jumlah karakter dari suatu string. Bentuk umum : strlen(string); strcat()

Digunakan untuk menambahkan string sumber ke bagian akhir dari string tujuan.
1

Bentuk umum : strcat(tujuan, sumber); strupr()

Digunakan untuk mengubah setiap huruf dari suatu string menjadi huruf capital. Bentuk umum : strupr(string); strlwr()

Digunakan untuk mengubah setiap huruf dari suatu string menjadi huruf kecil semua. Bentuk umum : strlwr(string); strcmp()

Digunakan untuk membandingkan dua buah string. Hasil dari fungsi ini bertipe integer dengan nilai : (a) Negative, jika string pertama kurang dari string kedua. (b) Nol, jika string pertama sama dengan string kedua (c) Positif, jika string pertama lebih besar dari string kedua. Bentuk umum : strcmp(string1, string2); Fungsi Operasi Karakter (tersimpan dalam header ctype.h) islower()

Fungsi akan menghasilkan nilai benar (bukan nol) jika karakter merupakan huruf kecil. Bentuk umum : islower(char); isupper()

Fungsi akan menghasilkan nilai benar (bukan nol) jika karakter merupakan huruf kapital. Bentuk umum : isupper(char); isdigit()

Fungsi akan menghasilkan nilai benar (bukan nol) jika karakter merupakan sebuah digit. Bentuk umum : isdigit(char); tolower()

Fungsi akan mengubah huruf capital menjadi huruf kecil. Bentuk umum : tolower(char);
2

toupper()

Fungsi akan mengubah huruf kecil menjadi huruf kapital. Bentuk umum : toupper(char); Fungsi Operasi Matematik (tersimpan dalam header math.h dan stdlib.h) sqrt()

Digunakan untuk menghitung akar dari sebuah bilangan. Bentuk umum : sqrt(bilangan); pow()

Digunakan untuk menghitung pemangkatan suatu bilangan. Bentuk umum : pow(bilangan, pangkat); sin(), cos(), tan()

Masing-masing digunakan untuk menghitung nilai sinus, cosinus dan tangens dari suatu sudut. Bentuk umum : sin(sudut); cos(sudut); tan(sudut); atof()

Digunakan untuk mengkonversi nilai string menjadi bilangan bertipe double. Bentuk umum : atof(char x); atoi()

Digunakan untuk mengkonversi nilai string menjadi bilangan bertipe integer. Bentuk umum : atoi(char x); div()

Digunakan untuk menghitung hasil pembagian dan sisa pembagian. Bentuk umum :div_t div(int x, int y) Strukturnya : typedef struct { int qout; // hasil pembagian int rem // sisa pembagian
3

} div_t; max() Digunakan untuk menentukan nilai maksimal dari dua buah bilangan. Bentuk umum :max(bilangan1, bilangan2); min() Digunakan untuk menentukan bilangan terkecil dari dua buah bilangan. Bentuk umum :min(bilangan1, bilangan2); Membuat Fungsi Sendiri Deklarasi Fungsi Sebelum digunakan (dipanggil), suatu fungsi harus dideklarasikan dan didefinisikan terlebih dahulu. Bentuk umum pendeklarasian fungsi adalah : tipe_fungsi nama_fungsi(parameter_fungsi); Sedangkan bentuk umum pendefinisian fungsi adalah : Tipe_fungsi nama_fungsi(parameter_fungsi) { statement statement ... } Hal-hal yang perlu diperhatikan dalam penggunaan fungsi : 1. Kalau tipe fungsi tidak disebutkan, maka akan dianggap sebagai fungsi dengan nilai keluaran bertipe integer. 2. Untuk fungsi yang memiliki keluaran bertipe bukan integer, maka diperlukan pendefinisian penentu tipe fungsi. 3. Untuk fungsi yang tidak mempunyai nilai keluaran maka dimasukkan ke dalam tipe void 4. Pernyataan yang diberikan untuk memberikan nilai akhir fungsi berupa pernyataan return. 5. Suatu fungsi dapat menghasilkan nilai balik bagi fungsi pemanggilnya. Parameter Formal dan Parameter Aktual 1. Parameter Formal adalah variabel yang ada pada daftar parameter dalam definisi fungsi. 2. Parameter Aktual adalah variabel (parameter) yang dipakai dalam pemanggilan fungsi. Cara Melewatkan Parameter Cara melewatkan suatu parameter dalam Bahasa C ada dua cara yaitu : 1. Pemanggilan Secara Nilai (Call by Value) formal. Yang dikirimkan ke fungsi adalah nilai dari datanya, bukan alamat
4

Call by value akan menyalin nilai dari parameter aktual ke parameter

memori letak dari datanya. Fungsi yang menerima kiriman nilai akan menyimpannya di alamat terpisah dari nilai aslinya yang digunakan oleh bagian program yang memanggil fungsi. Perubahan nilai di fungsi (parameter formal) tidak akan merubah Pengiriman parameter secara nilai adalah pengiriman searah, yaitu nilai asli di bagian program yang memanggilnya. dari bagian program yang memanggil fungsi ke fungsi yang dipanggil. Pengiriman suatu nilai dapat dilakukan untuk suatu ungkapan, tidak hanya untuk sebuah variabel, elemen array atau konstanta saja. 2. Secara Referensi (Call by Reference) Pemanggilan secara Referensi merupakan upaya untuk melewatkan Yang dikirimkan ke fungsi adalah alamat letak dari nilai datanya, Fungsi yang menerima kiriman alamat ini makan menggunakan Perubahan nilai di fungsi akan merubah nilai asli di bagian program Pengiriman parameter secara referensi adalah pengiriman dua arah, alamat dari suatu variabel ke dalam fungsi. bukan nilai datanya. alamat yang sama untuk mendapatkan nilai datanya. yang memanggil fungsi. yaitu dari fungsi pemanggil ke fungsi yang dipanggil dan juga sebaliknya. Pengiriman secara acuan tidak dapat bdilakukan untuk suatu ungkapan. B.Pointer Pengertian pointer Pointer (variabel penunjuk) adalah suatu variabel yang berisi alamat memori dari suatu variabel lain. Alamat ini merupakan lokasi dari obyek lain (biasanya variabel lain) di dalam memori. Contoh, jika sebuah variabel berisi alamat dari variabel lain, variabel pertama dikatakan menunjuk ke variabel kedua Operator Pointer ada dua, yaitu : 1. Operator& Operator & bersifat unary (hanya memerlukan satu operand saja). Operator & menghasilkan alamat dari operandnya. 2. Operator * Operator * bersifat unary (hanya memerlukan satu operand saja). Operator * menghasilkan nilai yang berada pada sebuah alamat.
5

Deklarasi pointer Seperti halnya variabel yang lain, variabel pointer juga harus dideklarasikan terlebih dahulu sebelum digunakan. Bentuk Umum : Tipe_data *nama_pointer;

Tipe data pointer mendefinisikan tipe dari obyek yang ditunjuk oleh pointer. Secara teknis, tipe apapun dari pointer dapat menunjukkan lokasi (dimanapun) dalam memori. Bahkan operasi pointer dapat dilaksanakan relatif terhadap tipe dasar apapun yang ditunjuk. Contoh, ketika kita mendeklarasikan pointer dengan tipe int*, kompiler akan menganggap alamat yang ditunjuk menyimpan nilai integer - walaupun sebenarnya bukan (sebuah pointer int* selalu menganggap bahwa ia menunjuk ke sebuah obyek bertipe integer, tidak peduli isi sebenarnya). Karenanya, sebelum mendeklarasikan sebuah pointer, pastikan tipenya sesuai dengan tipe obyek yang akan ditunjuk.
C.Struktur Pengertian struktur Sekumpulan variabel yang dapat terdiri dari beberapa tipe data berbeda dan dikelompokkan dalam satu nama. Tipe data yang bisa digunakan merupakan tipe data dasar, array, pointer dsb. Deklarasi Kode = struct, contoh : Struct nama_struktur{ Tipe_data field1; Tipe_data field2; }var1, var2, ; Untuk mengakses field tersebut digunakan operator unary (tanda titik), contoh : nama_struktur.nama_field D. Operasi File File adalah sebuah organisasi dari sejumlah record. Masing-masing record bisa terdiri dari satu atau beberapa field. Setiap file terdiri dari satu atau beberapa byte. 1.Membuka file Untuk membuka atau mengaktifkan file, fungsi yang digunakan adalah fungsi fopen(). File dapat berupa file biner atau file teks. File biner adalah file yang pola penyimpanan di dalam disk dalam bentuk biner, yaitu seperti bentuk pada memori (RAM) computer. File teks adalah file yang pola penyimpanan datanya dalam bentuk karakter. Penambahan yang perlu dilakukan untuk menentukan mode teks atau biner adalah t untuk file teks dan b untuk file biner. Prototype fungsi fopen() ada di header fungsi stdio.h Bentuk umum : file *fopen(char *namafile, char *mode); Keterangan : namafile adalah nama dari file yang akan dibuka/diaktifkan.
6

mod eadalah jenis operasi file yang akan dilakukan terhadap file. Jenis-jenis operasi file : r : menyarakan file hanya dapat dibaca (file harus sudah ada) w : menyatakan file baru akan dibuat/diciptakan (file yang sudah ada akan dihapus) a : untuk membuka file yang sudah ada dan akan dilakukan proses penambahan data (jika file belum ada, otomatis akan dibuat) r+ : untuk membuka file yang sudah ada dan akan dilakukan proses pembacaan dan penulisan. w+ : untuk membuka file dengan tujuan untuk pembacaan atau penulisan. Jika file sudah ada, isinya akan dihapus. a+ : untuk membuka file, dengan operasi yang akan dilakukan berupa perekaman maupun pembacaan. Jika file sudah ada, isinya akan dihapus. Contoh : pf = fopen(COBA.TXT, w); 2. Menutup file Untuk menutup file, fungsi yang digunakan adalah fclose(). Prototype fungsi fclose() ada di header file stdio.h Bentuk Umum : int fclose(FILE *pf); atau int fcloseall(void); 3. Menulis Karakter Untuk menulis sebuah karakter, bentuk yang digunakan adalah : putc(int ch, file *fp) Ket: - fp adalah pointer file yang dihasilkan oleh fopen() - ch adalah karakter yang akan ditulis. 4. Membaca Karakter Untuk membaca karakter dari file, fungsi yang digunakan adalah : getc(file *fp); Ket: - fp adalah pointer file yang dihasilkan oleh fopen() - Fungsi feof(), digunakan untuk mendeteksi akhir file pada saat membaca datafoef(file *fp). 5. Membaca dan Menulis String Fungsi untuk membaca dan menulis string adalah : fgets() dan fputs(). Bentuk umum: fgets(char *str,int p, file*fp) fputs(char *str, file*fp) E.Rekursi Rekursi adalah proses pemanggilan fungsi oleh dirinya sendiri secara berulang. Istilah rekursi sebenarnya berasal dari bahasa latin recursus,yang berarti menjalankan ke belakang. Rekursi di gunakan untuk penyederhanaan algoritma dari suatu proses sehingga program yang di hasilkan menjadi lebih efisien .

BAB II ISI PROGRAM


1.FUNGSI DAN PROSEDUR
Fungsi merupakan suatu bagian dari program yang dimaksudkan untuk mengerjakan suatu tugas tertentu dan letaknya terpisah dari program yang memanggilnya. Fungsi merupakan elemen utama dalam bahasa C karena bahasa C sendiri terbentuk dari kumpulan fungsi-fungsi. Dalam setiap program bahasa C, minimal terdapat satu fungsi yaitu fungsi main(). Fungsi banyak diterapkan dalam program-program C yang terstruktur. Keuntungan penggunaan fungsi dalam program yaitu program akan memiliki struktur yang jelas (mempunyai readability yang tinggi) dan juga akan menghindari penulisan bagian program yang sama. Contoh 1A #include <stdio.h> #include<conio.h> int pangkat(int n, int m); main() { int n, m; printf("menghitung nilai basis pangkt eksponen\n"); printf("\nmasukan nilai basis: "); scanf("%d",&n); printf("masukan nilai eksponen: "); scanf("%d", &m); printf("hasil dari %d^%d adalah %d", n, m, pangkat(n,m)); getch(); } int pangkat(int n, int m) { int i; int pkt=1; if(m==0)return(1); if(m==1)return(n); if(m>0) { for(i=1; i<=m;i=i+1) pkt=pkt*n; return(pkt); } else return(0); } Hasil

Analisis Stdio.h adalah library file yang berisi fungsi-fungsi standar yang di gunakan sebagai input-input dalam bahasa C dan Conio.h adalah file yang berisi fungsi-fungsi yang di gunakan untuk memanggil perintah I/O dalam sistem operasi. Deklarasi global variabel > int pangkat(int n,int m) Tipe fungsi > integer Parameter Formal > double n,m; Parameter Aktual> printf("Hasil dari %.2le^%2le adalah %2le",n,m,pangkat (n,m)) Contoh 1B #include <stdio.h> #include<conio.h> #include<math.h> double pangkat(double n, double m); main() { double n, m; printf("\t\tmenghitung nilai basis pangkat eksponen\n"); printf("\n\t\tmasukan nilai basis: "); scanf("%le",&n); printf("\t\tmasukan nilai eksponen: "); scanf("%le", &m); printf("\t\thasil dari %.2le^%.2le adalah %.2le", n, m, pangkat(n,m)); getch(); } double pangkat(double n, double m) { int i; double pkt=1; if(m==0)return(1); if(m==1)return(n); if(n==0)return(0); if((ceil(n)!=n)&&(n<0)) { printf("error, n tidak dapat berupa bilangan negatif.\n"); return 0; } else if((ceil(n)==n)&&(fabs(m)>9.0))
9

{ printf("error, bilangan n negatif hanya bisa dipangkatkan\n"); printf("sampai dengan pangkat +9 atau -9\n"); return 0; } if(m>0) { if((m<10)&&(ceil(m)==m)) { for(i=1; i<=m;i=i+1) pkt=pkt*n; return(pkt); } else return exp(m*log(n)); } else { if((m>-10)&&(ceil(m)==m)) { for(i=1; i<=-m;i=i+1) pkt=pkt*n; return 1.0/pkt; } else return exp(m*log(n)); } } hasil

analisis Stdio.h adalah library file yang berisi fungsi-fungsi standar yang di gunakan sebagai input-input dalam bahasa C dan Conio.h adalah file yang berisi fungsi-fungsi yang di gunakan untuk memanggil perintah I/O dalam sistem operasi. Deklarasi global variabel > double pangkat( double n, double m Tipe fungsi > double Parameter Aktual: printf("Hasil dari %d^%d adalah %d", n, m, pangkat(n,m)); Pada Contoh 1B fungsi pangkat() menggunakan nilai data dengan tipe double( 2.2E-308 s/d 1.7E+308) sehingga fungsi pangkat dapat fungsi pangkat() dapat memproses data bilangan real
10

Contoh 2 #include<stdio.h> #include<conio.h> main() { float sum(void); printf("\n\t\tjumlahnya adalah %.2f\n", sum()); getch(); } float sum(void) { int i, num; float entri, total=0; printf("\t\tBerapakah banyak bilangan yang akan di masukan? "); scanf("%d", &num); for(i=1; i<=num; i++) { printf("\n\t\tbilangan ke %d: ", i); scanf("%f", &entri); total = total + entri; } return total; hasil

Program ini mengunakan sebuah fungsi untuk membaca sekelompok bilangan yang di input dan mengembalikan nilai jumlah dari seluruh bilangan tersebut (float sum(void)). Contoh 3a #include<stdio.h> #include<conio.h> #include<math.h> float jumlah_total(int n_tahun, int m_perioda, float tabungan_tahunan, float bunga); main() { int n_tahunan, m_perioda; float tabungan_tahunan, bunga, total_uang; printf("\tBerapa tahun masa penabungan? "); scanf("%d", &n_tahunan); printf("\tBerapa kali pembayaran bunga dilakukan dalam setahun? "); scanf("%d", &m_perioda);
11

printf("\tBerapa besar uang yang ditabung dalam setiap tahun? "); scanf("%d", &tabungan_tahunan); printf("\tBerapa bunga setiap tahunnya? "); scanf("%d", &bunga); total_uang = n_tahunan, m_perioda, tabungan_tahunan, bunga; printf("\tJumlah_total uang yang terkumpul selama %d tahun adalah %f", n_tahunan, total_uang); getch(); return 0; } float jumlah_total(int n_tahun, int m_perioda, float tabungan_tahunan, float bunga) { int i; float total =0; for(i=1; i<=n_tahun; i++) total = total + pow((1.0+bunga/(100.0*m_perioda)), i*m_perioda); return tabungan_tahunan*total; }

Analisis Math.h adalah liblary file yang berisi fungsi-fungsi matematika seperti pow() yang digunakan untuk menghitung pemangkatan suatu bilangan. Perogram ini menghitung uang yang terkumpul selama masa penabungan. Contoh 3b #include<stdio.h> #include<conio.h> #include<math.h> #include<ctype.h> float tabungan(int n_tahunan, int m_perioda, float total_uang, float bunga); main() { int n_tahunan, m_perioda; float total_uang, bunga; float tabungan_tahunan; printf("\tBerapa masa penabungan? "); scanf("%d", &n_tahunan); printf("\tBerapa kali pembayaran bunga dilakukan dalam setahun? "); scanf("%d", &m_perioda); printf("\tBerapa besarnya total uang yang diharapkan? "); scanf("%d", &total_uang); printf("\tBerapa bunga setiap tahunnya? "); scanf("%d", &bunga); tabungan_tahunan = n_tahunan, m_perioda, total_uang, bunga;
12

printf("\tJumlah uang yang harus ditabungkan setiap tahunnya tabungan_tahunan); getch(); return 0; } float tabungan(int n_tahun, int m_perioda, float total_uang, float bunga) { int i; float total =0; for(i=1; i<=n_tahun; i++) total = total + pow((1.0+bunga/(100.0*m_perioda)), i*m_perioda); return total_uang/total; }

adalah

%f",

Analisis Ctype.h adalah library file yang berisi fungsi-fungsi yang digunakan untuk perubahan dan klasifikasi karakter dan Math.h adalah liblary file yang berisi fungsi-fungsi matematika seperti pow() yang digunakan untuk menghitung pemangkatan suatu bilangan. Contoh prosedur: #pragma hdrstop #include<stdio.h> #include<conio.h> float Volume; void LuasLingkaran() { int r; float Luas; r=10; Luas=3.14*r*r; printf("Luas Lingkaran = %2.2f",Luas); } void VolumeBalok(int &p,int &l,int &t) { Volume=p*l*t; } int main(int argc,char*argv[]) { LuasLingkaran (); VolumeBalok(2,3,4); printf("\nVolume Balok =%2.2f",Volume); getch(); return 0;

13

#include <stdio.h> #include<conio.h> #include<math.h> double pangkat(double n, double m); main() { double n, m; printf("\t\tmenghitung nilai basis pangkat eksponen\n"); printf("\n\t\tmasukan nilai basis: "); scanf("%le",&n); printf("\t\tmasukan nilai eksponen: "); scanf("%le", &m); printf("\t\thasil dari %.2le^%.2le adalah %.2le", n, m, pangkat(n,m)); getch(); } double pangkat(double n, double m) { int i; double pkt=1; if(m==0)return(1); if(m==1)return(n); if(n==0)return(0); if((ceil(n)!=n)&&(n<0)) { printf("error, n tidak dapat berupa bilangan negatif.\n"); return 0; } else if((ceil(n)==n)&&(fabs(m)>9.0)) { printf("error, bilangan n negatif hanya bisa dipangkatkan\n"); printf("sampai dengan pangkat +9 atau -9\n"); return 0; } if(m>0) { if((m<10)&&(ceil(m)==m)) { for(i=1; i<=m;i=i+1) pkt=pkt*n;
14

return(pkt); } else return exp(m*log(n)); } else { if((m>-10)&&(ceil(m)==m)) { for(i=1; i<=-m;i=i+1) pkt=pkt*n; return 1.0/pkt; } else return exp(m*log(n)); } }

2. POINTER
Pointer (variabel penunjuk) adalah suatu variabel yang berisi alamat memori dari suatu variabel lain. Alamat ini merupakan lokasi dari obyek lain (biasanya variabel lain) di dalam memori. Contoh, jika sebuah variabel berisi alamat dari variabel lain, variabel pertama dikatakan menunjuk ke variabel kedua. Contoh 1: #include <stdio.h> #include <conio.h> main() { int y=3; int x; int *py; int *px; py=&y; x=*py; px=&x; printf("\ny=%d \n&y=%x \npy=%x \n*py=%d",y,&y, py, *py); printf("\nx=%d \n&x=%x \npx=%x \n*px=%d",x,&x, px, *px); getch(); }
15

Analisis Program ini menggunakan variabel penunjuk yaitu suatu variabel yang berisi alamat memori dari suatu variabel lain ,operator yang di gunakan adalah & dan *. pembukian #include<stdio.h> int main(void) { int *p; int x; x=10; p=&x; printf("\tnilai x: %d\n",x); printf("\tnilai &x: %dp\n",&x); printf("\tnilai *p: %d\n",*p); printf("\tnilai p: %p\n",p); *p=20; printf("\tnilai x: %d\n",x); printf("\tnilai &x: %dp\n",&x); printf("\tnilai *p: %d\n",*p); printf("\tnilai p: %p\n",p); return 0; }

Contoh 2 Program ini membandingkan variabel biasa, variabel array, dan variabel pointer yang akan di teruskan ke sebuah fungsi sebagai parameter call by value dan call by references.sehingga dilengkapi dengan deklarasi void dan variabel. #include <stdio.h> #include <conio.h> int a=3; void ubah (int a);
16

main() { ubah(a); printf("nilai a sekarang adalah %d \n",a); getch(); } void ubah (int a) { a=20*a; } Hasil

Contoh 3 Pada program ini membaca dan mencetak bilangan yang hanya untuk mencari output yang telah di input jumlah bilangannya, script di atas hanya melakukan percobaan terhadap kode-kode array. #include<stdio.h> #include<conio.h> main() { float data[10]; int bilangan,i=0; printf("\tBerapa banyak bilangan ?"); scanf("%d",&bilangan); do { printf("\tMasukan nilai dari array %d:",i); scanf("%f",data[i]); i=i+1; } while((i!=10)&&(i<bilangan)); for(i=0;i<bilangan;i++) printf("%.2f",data[i]); printf("\n"); getch(); return 0; }

Contoh 4
17

Program ini adalah pengamatan elemen-elemen array dengan pointer seperti: *p adalah pointer yang ditugaskan menunjuk array #include<stdio.h> #include<conio.h> #include<alloc.h> #define MAX 10 void cetak_awal(void); int array[MAX]; main() { int*p=array; int i; for(i=0;i<MAX;i++) array[i]=i; for(i=0;i<MAX;i++) printf("%d\n",*p++); p=&array[5]; printf("array[5]=%d\n",array[5]); printf("*p.......=%d\n",*p); printf("\n"); cetak_awal(); getch(); return 0; } void cetak_awal(void) { printf("array[0]=%d\n",array[0]); printf("*array =%d",*array); } Contoh : Pada perogram ini menggunakan strncpy yaitu string yang digunakan untuk mengcopy setring dengan deklarasi string tujuan dan string asal dan jumlah karakter string yang akan di copy. #include <stdio.h> #include <string.h> void main() { char namaKu[256]="Inan Layyinan"; char namaSaya[256]="12345678901234567890"; char umurSaya=18; strncpy(namaSaya,"Bukan Inan layyinan",40); printf("%s\n", namaSaya); strncpy(namaSaya,"Alan",5); printf("%s\n", namaSaya); strncpy(namaSaya, namaKu, 256);
18

printf("%s\n",namaSaya); sprintf(namaSaya, "%s adalah %s dan berumur %d tahun", namaKu, namaKu, umurSaya); printf(namaSaya); }

Contoh : Program ini menggunakan fungsi fgets dan fflush yang berfungsi untuk membaca string dari keyboard sehingga harus ditentukan karakter yang akan di baca. #include <stdio.h> #include <string.h> void main () { char nama[11]; printf("Silakan masukan nama anda:"); fgets(nama,15,stdin); fflush(stdin); printf("Selamat pagi, %s.\n", nama); printf("%s mempunyai 2 email yang belum dibaca pagi ini.", nama); }

Contoh : Program ini adalah perbaiak dari program diatas yang mengatasi masalah newline character sehingga menggunakan do/while loop untuk memastikan bahwa operator sudah memasukan namanya, meskipun hanya teriri dari sebuah karakter. #include <stdio.h> #include <string.h> void main () { char nama[17]; int i, max=17; do { printf("silakan masukan nama anda:"); fgets(nama,17,stdin); fflush(stdin); for (i=0;i<max;i++){ if(nama[i]=='\n'){
19

nama[i]='\0'; break; } } if(i>0){ break; }else{ printf("anda belum memasukan nama...\n"); } }while(i==0); printf("selamat pagi , %s.\n", nama); printf("%s mempunyai 1000 teman pagi ini", nama); }

Contoh: Program ini adalah mencari string di dalam string dengan strstr #include<stdio.h> #include<string.h> main() { char namaLengkap[]="Inan Layyinan"; char namaDicari[]="inan"; if (strstr(namaLengkap,namaDicari)) { printf("%s terdapat dalam %s",namaDicari,namaLengkap); } }

Contoh ; Program ini menggunaka pointer dan menggunakan fungsi strtod untuk mengkonversi string menjadi bilangan bertipe double #include<stdio.h> #include<string.h> #include<stdlib.h>
20

void formatstrbil(char*i) { char*j,*k, temp[256]; int p,ptemp=0; j = k=strchr(i,'.'); if(j>0) { p=strlen(i)-1; while (p>j-i) { temp[ptemp++]=i[p]; p--; } temp[ptemp++]=','; k=--j; }else{ j = k =strchr(i,0)-1; } while (j-i>=0) { temp[ptemp++]=j[0]; if((k-j+1)%3==0&&k-j!=0&&j-1!=0) { temp[ptemp++]='.'; } } ptemp--; p=0; while (ptemp>=0) i[p++]=temp[ptemp--]; i[p]=0; } main() { char strbil[256],*error; double bil; do { printf("Silahkan Masukan sebuah bilangan:"); fgets(strbil,256,stdin); if(strchr(strbil,'\n'))strchr(strbil,'\n')[0]=0; bil=strtod(strbil,&error); if(*error!=0); printf("Yang anda masukan bukan bilangan double\n"); } while(*error!=0); formatstrbil(strbil); printf(strbil);}

21

Latihan Program untuk menentukan jumlah vokal, konsonan, karakter spasi, dan karakter lain yang di input pada sebuah baris teks menggunakan fungsi dan prosedur. #include <stdio.h> #include <string.h> #include <conio.h> #include <ctype.h> /*inisialisasi prosedur/fungsi*/ void ambilString(void); void tampil(void); int hitung_karakter(int l_teks); /*Deklarasi variabel*/ char angka[] = {'1','2','3','4','5','6','7','8','9','\0'}; char h_vokal[] = {'A','I','U','E','O','\0'}; char teks [256]; int vokal = 0; /*Menghitung vokal*/ int konsonan = 0; /*Menghitung konsonan*/ int bilangan = 0; /*Menghitung bilangan*/ int spasi = 0; /*Menghitung spasi*/ int lainya = 0; /*Sisi karakter yang tidak terhitung*/ int l_teks, i; /*Fungsi Utama*/ void main (void) { /*Header untuk tampilan awal*/ printf ("==================================================="); printf ("PROGRAM MENENTUKAN JUMLAH KONSONAN, VOKAL, SPASI\n"); printf ("BILANGAN DAN KARAKTER LAINYA.\n"); printf ("==================================================="); ambilString (); /*Menjalankan fungsi ambilstring*/ hitung_karakter(l_teks); /*Menjalankan fungsi hitung_karakter dgn meneruskan parameter l_teks(panjang teks)*/ tampil (); /*Menjalankan fungsi ambilstring*/ getch (); } /*Akhir fungsi main*/

22

3.STRUKTUR
Contoh 1 Program ini digunakan untuk menampilkan tanggal, input sudah dideklarasikan sebelumnya dengan kata kunci struct #include <stdio.h> Struct tanggal { Char *tanggal; Char *bulan; Char *tahun; } Tgl_lahir = {23,12,1992}; Int main(void){ Printf {Tanggal lahir : %s-%s-%s,tgl_lahir.tanggal,tgl_lahir.bulan,tgl_lahir.tahun); Return(0); } Hasil

Contoh 2 Program untuk membaca data seorang nasabah sehingga harus ada inisialisasi awal sebuah struktur #include <stdio.h> #include<conio.h> #include<dos.h> struct tanggal { unsigned int bulan; unsigned int hari; unsigned int tahun; }; struct detail
23

{ char nama[60]; char alamat[200]; struct tanggal lahir; }teman[100]; main() { int jumlah; void baca(int jumlah); printf("BErapa teman mau ditambahkan ?"); scanf("%d",&jumlah); baca(jumlah); getch(); } void baca(int jumlah) { int i; for(i=0;i<jumlah;i++) { printf("\nNama teman :");scanf("%s[^\n]",&teman[i].nama); printf("\nAlamat teman :");scanf("%s[^\n]",&teman[i].alamat); printf("\nHari kelahiaran:");scanf("%s[^\n]",&teman[i].lahir.hari); printf("\nBulan Kelahiran :");scanf("%s[^\n]",&teman[i].lahir.bulan); printf("\nTahun Kelahiran :");scanf("%s[^\n]",&teman[i].lahir.tahun); } }

Contoh 3 Program yang mendefinisikan variabel struktur sebagai pointer dengan isisialisasi awal sebuah struktur. #include<stdio.h> #include<conio.h> typedef struct { int no_account;
24

char tipe_account; char nama[60]; float balance; } record; record nasabah_lama,nasabah_baru; main() { int jumlah; void baca(int jumlah); printf("berapa nasabah mau ditambahkan ?"); scanf("%d",&jumlah); baca(jumlah); getch(); } void baca(int jumlah) { int i; for(i=0;i<jumlah;i++); { printf("No Acccount :"); scanf("%d",&record[i].no_account); printf("tipe Account :"); scanf("%c",&record[i].tipe_account); printf("Nama :"); scanf("%s[^\n]",record[i].nama); printf("balance :"); scanf("%f",&record[i].balance); } } #include<stdio.h> #include<conio.h> main() { int n=123; char t='A'; float b=1000900.67; typedef struct{ int bulan; int hari; int tahun; }tanggal; struct{ int *no_account; char *tipe_account; char *nama; float *balance; tanggal pembayaran_terakhir; }nasabah,*ptr_nasabah=&nasabah;
25

nasabah.no_account=&n; nasabah.tipe_account=&t; nasabah.nama="Budi"; nasabah.balance=&b; printf("%d%c%c%f\n",*ptr_nasabah->no_account,*ptr_nasabah->tipe_account,*ptr_nasabah>nama,*ptr_nasabah->balance); }

Contoh 4 Program struktur yang mengandung pointer #include<stdio.h> #include<conio.h> main() { int n=123; char t='A'; float b=1000900.67; typedef struct tanggal { int bulan; int hari; int tahun; }tanggal; struct { int *no_account; char *tipe_account; char *nama; float *balance; tanggal pembayaran_terakhir; } nasabah,*ptr_nasabah=&nasabah; nasabah.no_account=&n; nasabah.tipe_account=&t; nasabah.nama="Budi"; nasabah.balance=&b; printf("%d%c%c%f\n",*nasabah.no_account,*nasabah.tipe_account,*nasabah.nama,*nasabah .balance); printf("%d%c%c%f\n",*ptr_nasabah->no_account,*ptr_nasabah->tipe_account,*ptr_nasabah>nama,*ptr_nasabah->balance); getch(); }

26

Contoh 5 Program meneruskan struktur ke sebuah fungsi yang digunakan untuk melakukan penambahan saldo dengan pendeklarasian struktur dahulu. #include<stdio.h> #include<conio.h> #include<string.h> struct{ int no_account; char*tipe_account; char*nama; float saldo; }nasabah; float adjust(char nama[],int no_account,float saldo); main() { printf("\n\t\t\t==============================="); printf("\n\t\t\tPROGRAM PENAMBAH SALDO NASABAH\n"); printf("\n\t\t\t===============================\n"); nasabah.nama="Inan layyinan"; nasabah.no_account=6; nasabah.tipe_account="A"; nasabah.saldo=350000; printf("\t\t\tNama Nasabah:%s\n",nasabah.nama); printf("\t\t\tNo Account:%d\n",nasabah.no_account); printf("\t\t\tsaldo awal adalah :Rp.%.f\n",nasabah.saldo); nasabah.saldo=adjust(nasabah.nama,nasabah.no_account,nasabah.saldo); printf("-\t\t\t===============================",nasabah.saldo); printf("\n\t\t\tSaldo terakhir adalah : Rp.%f\n",nasabah.saldo); printf("\n\t\t\tPress any key to Exit!"); getch(); } float adjust(char nama[],int no_account,float saldo) { float saldo_baru; float transaksi; printf("\t\t\tNilai transaksi :Rp."); scanf("%f",&transaksi); saldo_baru=saldo+transaksi; return(saldo_baru); }

27

Program ini meneruskan pointer yang menunjuk pada sebuah struktur ke dalam fungsi sehinggga dilengkapi dengan transfer sebuah pointer bertipe struktur ke sebuah fungsi dan deklarasi fungsi adjust dengan meneruskan pointer ptr_record (void adjust(record *ptr_nasabah)/ void adjust(record *ptr_record)). #include<stdio.h> #include<conio.h> typedef struct{ char*nama; int no_account; char tipe_account; float balance; } record; void adjust(record *ptr_nasabah); main() { void adjust(record *ptr_record); static record nasabah={"Budi",123,'A',1000900.67}; printf("%s%d%c%.2f\n",nasabah.nama,nasabah.no_account,nasabah.tipe_account,nasabah.ba lance); adjust(&nasabah); printf("%s%d%c%.2f\n",nasabah.no_account,nasabah.tipe_account,nasabah.balance); getch(); } void adjust(record *ptr_nasabah) { ptr_nasabah->nama="Anto"; ptr_nasabah->no_account=890; ptr_nasabah->tipe_account='S'; ptr_nasabah->balance=0; return ; }

28

4.OPERASI FILE
File adalah sebuah organisasi dari sejumlah record. Masing-masing record bisa terdiri dari satu atau beberapa field. Setiap field terdiri dari satu atau beberapa byte. Membuka file,Untuk membuka atau mengaktifkan file, fungsi yang digunakan adalah fungsi fopen(). File dapat berupa file biner atau file teks. File biner adalah file yang pola penyimpanan di dalam disk dalam bentuk biner, yaitu seperti bentuk pada memori (RAM) computer. File teks adalah file yang pola penyimpanan datanya dalam bentuk karakter. Penambahan yang perlu dilakukan untuk menentukan mode teks atau biner adalah t untuk file teks dan b untuk file biner. Prototype fungsi fopen() ada di header fungsi stdio.h Contoh 1 Program membuat file Kucingku.exe dengan menggunakan jenis operasi file w yang menyatakan file yang baru akan di buat/diciptakan (file yang sudah ada akan dihapus) #include<stdio.h> #include<conio.h> #include<stdlib.h> #include<ctype.h> main() { FILE*f_ptr; char d; f_ptr=fopen("kucingku.exe","w"); do fputc(toupper(d=getchar()),f_ptr); while(d!='\n'); fclose(f_ptr); getchar(); return 0; } Contoh 2 #include<stdio.h> #include<conio.h> #include<stdlib.h> #include<ctype.h> main() { FILE*f_ptr; char c; f_ptr=fopen("kucingku.exe","r"); do putchar(c=getc(f_ptr)); while(c!='\n'); fclose(f_ptr); getc(); return 0; }

29

Contoh 4 Program untuk membaca sebuah data array dari sebuah file dalam satu perintah sehingga menggunakan jenis operasi file r membaca file yang sudah ada. #include<stdio.h> #include<conio.h> #include<stdlib.h> #include<ctype.h> main() { FILE*f_ptr; float sample[100]; int i; if((f_ptr=fopen("data1.dat","r"))==NULL) printf("File tidak dapat dibuka.\n"); else { fread(sample,sizeof(sample),1,f_ptr); for(i=0;i<100;i++) printf("%f",sample[i]); } fclose(f_ptr); getch(); return 0; }

Contoh 5 Program sederhana yang mencopy sebuah file menjadi yang lain,sehingga pengguna ditanyakan nama file yang akan dicopy dan memeriksa untuk melihat apakah file yang dipilih ada. #include<stdio.h> #include<conio.h> #include<stdlib.h> #include<ctype.h> main() { FILE*pt1,*pt2;
30

char c; char *source,*destination; int check=0; do { printf("Masukan nama file yang akan dicopy :"); scanf("%[^\n]",source); if((pt1=fopen(source,"r"))==NULL) { printf("File tidak ditemukan. Lakukan lagi\n\n"); check=0; } else check=1; } while(check==0); printf("File %s akan dicopy ke:",source); scanf("%[^\n]",destination); pt2=fopen(destination,"w"); while((c=fgetc(pt1))!=EOF) fputc(c,pt2); fclose(pt2); fclose(pt1); getch(); return 0; }

5. REKURSI
Rekursi adalah fungsi yang memanggil dirinya sendiri. Contoh 1 Program yang digunakan untuk menyederhanakan algoritma sebuah program /*MENGHITUNG BILANGAN 1 SAMPAI 20 MENGGUNAKAN REKURSI*/ #include<stdio.h> void recount(int top); main() { recount(20); return 0; } void recount(int top) { if(top>1) recount(top-1);
31

printf("%4d",top); } Hasil

Contoh 2 Program untuk mencetak sebuah string pada screen dalam arah terbalik dengan menggunakan reverse #include<stdio.h> void reverse(char*s); main() { char str[]="INAN LAYYINAN ANAK INDONESIA" ; reverse(str); return 0; } void reverse(char*s) { if(*s) reverse(s+1); printf("%c",*s); } Hasil

Contoh 3 Program untuk menentukan nilai faktorial dari suatu bilangan. #include<stdio.h> #include<conio.h> long int faktorial(int N); void main() { int N; printf("Berapa faktorial ?"); scanf("%i",&N); printf("Factorial dari %i=%1d\n",N,faktorial(N)); getch(); } long int faktorial(int N) {
32

if(N==0) return(1); else return(N*faktorial(N-1));//fungsi faktorial() memanggil fungsi faktorial(); } Hasil

33

BAB 3 PENUTUP
A. SIMPULAN
Kegiatan praktik Algoritma dan pemrograman modul 2 merupakan kelanjutan dari modul 1 sehingga dasar-dasar pemrograman C++ pada modul 1 adalah syarat agar bisa memahami praktik modul 2 ,oleh karna itu dalam kegiatan ini sangat membutuhkan pemahaman dan ketelitian agar mampu memuat program sesuai dengan yang di inginkan,namun kadangkala terdapat eror yang sulit terlihat sehingga harus di telaah lebih mendalam tetapi bahasa pemrograman C++ adalah bahasa pemrograman yang cukup dimengerti oleh manusia, dan software yang digunakan adalah Turbo C++ dan Dev C++ perbedaan kedua software ini adalah Turbo C++ dapat dijalankan pada OS 32 bit sedangkan Dev C++ dapat dijalankan pada OS 64 bit. Pada modul 2 ini membahas pemakaian fungsi dan prosedur,pemrograman pointer, struktur,operasi file dan rekursi. Fungsi merupakan suatu bagian dari program yang dimaksudkan untuk mengerjakan suatu tugas tertentu dan letaknya terpisah dari program yang memanggilnya. Fungsi merupakan elemen utama dalam bahasa C karena bahasa C sendiri terbentuk dari kumpulan fungsi-fungsi. Pointer (variabel penunjuk) adalah suatu variabel yang berisi alamat memori dari suatu variabel lain. Alamat ini merupakan lokasi dari obyek lain (biasanya variabel lain) di dalam memori. Stuktur adalah Sekumpulan variabel yang dapat terdiri dari beberapa tipe data berbeda dan dikelompokkan dalam satu nama. File adalah sebuah organisasi dari sejumlah record. Masing-masing record bisa terdiri dari satu atau beberapa field. Setiap file terdiri dari satu atau beberapa byte. Rekursi adalah proses pemanggilan fungsi oleh dirinya sendiri secara berulang. Rekursi di gunakan untuk penyederhanaan algoritma dari suatu proses sehingga program yang di hasilkan menjadi lebih efisien Setelah belajar modul 2 ini saya lebih mengrti tentang penggunaan algoritma.

B. SARAN Sebaiknya modul 1 dipelajari tajam agar pada modul 2 lebih mudah dan sebaiknya penggunaan software hanya menggunakan Dev C++ karna lebih universal dan memberikan fasilitas yang lebih dari Turbo C++

34

35

You might also like