43
BAB I PENDAHULUAN Algoritma pemrograman sangat luas sekali bahasannya yang digunakan sebagai dasar pemrograman engineering seperti : 1. Fungsi dan Prosedur 2. Pointer 3. Struktur 4. Operasi File 5. 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”) 1

Pengenalan Algoritma dan pemrograman dengan C++

Embed Size (px)

DESCRIPTION

Informatika

Citation preview

Page 1: Pengenalan Algoritma dan pemrograman dengan C++

BAB I

PENDAHULUAN

Algoritma pemrograman sangat luas sekali bahasannya yang digunakan sebagai dasar pemrograman engineering seperti :

1. Fungsi dan Prosedur2. Pointer3. Struktur4. Operasi File5. 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

Page 2: Pengenalan Algoritma dan pemrograman dengan C++

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

Page 3: Pengenalan Algoritma dan pemrograman dengan C++

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

Page 4: Pengenalan Algoritma dan pemrograman dengan C++

} 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)

Call by value akan menyalin nilai dari parameter aktual ke parameter

formal.

Yang dikirimkan ke fungsi adalah nilai dari datanya, bukan alamat

4

Page 5: Pengenalan Algoritma dan pemrograman dengan C++

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

nilai asli di bagian program yang memanggilnya.

Pengiriman parameter secara nilai adalah pengiriman searah, yaitu

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

alamat dari suatu variabel ke dalam fungsi.

·Yang dikirimkan ke fungsi adalah alamat letak dari nilai datanya,

bukan nilai datanya.

Fungsi yang menerima kiriman alamat ini makan menggunakan

alamat yang sama untuk mendapatkan nilai datanya.

Perubahan nilai di fungsi akan merubah nilai asli di bagian program

yang memanggil fungsi.

Pengiriman parameter secara referensi adalah pengiriman dua arah,

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 keduaOperator 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

Page 6: Pengenalan Algoritma dan pemrograman dengan C++

Deklarasi pointer

Seperti halnya variabel yang lain, variabel pointer juga harus dideklarasikanterlebih 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.

DeklarasiKode = 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

Page 7: Pengenalan Algoritma dan pemrograman dengan C++

· 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 KarakterUntuk 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 KarakterUntuk 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 .

7

Page 8: Pengenalan Algoritma dan pemrograman dengan C++

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);}elsereturn(0);}Hasil

8

Page 9: Pengenalan Algoritma dan pemrograman dengan C++

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

Page 10: Pengenalan Algoritma dan pemrograman dengan C++

{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);}elsereturn 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;}elsereturn 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/d1.7E+308) sehingga fungsi pangkat dapat fungsi pangkat() dapat memproses data bilangan real

10

Page 11: Pengenalan Algoritma dan pemrograman dengan C++

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

Page 12: Pengenalan Algoritma dan pemrograman dengan C++

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

Page 13: Pengenalan Algoritma dan pemrograman dengan C++

printf("\tJumlah uang yang harus ditabungkan setiap tahunnya adalah %f", 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;}

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

Page 14: Pengenalan Algoritma dan pemrograman dengan C++

#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

Page 15: Pengenalan Algoritma dan pemrograman dengan C++

return(pkt);}elsereturn 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;}elsereturn 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

Page 16: Pengenalan Algoritma dan pemrograman dengan C++

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

Page 17: Pengenalan Algoritma dan pemrograman dengan C++

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

Page 18: Pengenalan Algoritma dan pemrograman dengan C++

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

Page 19: Pengenalan Algoritma dan pemrograman dengan C++

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

Page 20: Pengenalan Algoritma dan pemrograman dengan C++

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

Page 21: Pengenalan Algoritma dan pemrograman dengan C++

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

Page 22: Pengenalan Algoritma dan pemrograman dengan C++

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

Page 23: Pengenalan Algoritma dan pemrograman dengan C++

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

Page 24: Pengenalan Algoritma dan pemrograman dengan C++

{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

Page 25: Pengenalan Algoritma dan pemrograman dengan C++

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

Page 26: Pengenalan Algoritma dan pemrograman dengan C++

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

Page 27: Pengenalan Algoritma dan pemrograman dengan C++

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

Page 28: Pengenalan Algoritma dan pemrograman dengan C++

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.balance);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

Page 29: Pengenalan Algoritma dan pemrograman dengan C++

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");dofputc(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");doputchar(c=getc(f_ptr));while(c!='\n');fclose(f_ptr);getc();return 0;}

29

Page 30: Pengenalan Algoritma dan pemrograman dengan C++

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

Page 31: Pengenalan Algoritma dan pemrograman dengan C++

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;}elsecheck=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

Page 32: Pengenalan Algoritma dan pemrograman dengan C++

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

Page 33: Pengenalan Algoritma dan pemrograman dengan C++

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

33

Page 34: Pengenalan Algoritma dan pemrograman dengan C++

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

Page 35: Pengenalan Algoritma dan pemrograman dengan C++

35