laporan algo 2

97
LAPORAN PRAKTIK ALGORITMA & PEMROGRAMAN 2 disusun untuk memenuhi tugas mata kuliah Algoritma & Pemrograman Oleh : Taopik Hidayatulloh 1 AEA TEKNIK OTOMASI MANUFAKTUR DAN MEKATRONIKA POLITEKNIK MANUFAKTUR NEGERI BANDUNG Jl. Kanayakan no. 21, DAGO 40235, Tromol Pos 851 BANDUNG 40008 INDONESIA

Upload: gias-nawari

Post on 19-Dec-2015

26 views

Category:

Documents


0 download

DESCRIPTION

jkhjkhj

TRANSCRIPT

Page 1: Laporan Algo 2

LAPORAN PRAKTIK ALGORITMA & PEMROGRAMAN 2

disusun untuk memenuhi tugas mata kuliah Algoritma & Pemrograman

Oleh :

Taopik Hidayatulloh

1 AEA

TEKNIK OTOMASI MANUFAKTUR DAN MEKATRONIKA

POLITEKNIK MANUFAKTUR NEGERI BANDUNG

Jl. Kanayakan no. 21, DAGO 40235, Tromol Pos 851 BANDUNG 40008 INDONESIAPhone : 62 022 2500241 Fax : 62 022 2502649 Homepage : http ://www.polman-bandung.ac.id

e-mail : [email protected]

2012

Page 2: Laporan Algo 2

Dasar Teori

a.ARRAY

Array merupakan koleksi data dimana setiap elemen memakai nama dan tipe yang sama serta setiap elemen diakses dengan membedakan indeks array-nya. Berikut adalah contoh variable bernama c yang mempunyai lokasi memori yang semuanya bertipe int.

C[0] = -45;C[1] = 6;C[2] = 0;C[3] = 72;C[4] = 1543;C[5] = 43;C[6] = 4;

Masing-masing nilai dalam setiap lokasi mempunyai identitas berupa nama c dan nomor indeks yang dituliskan di dalam tanda kurung ‘[..]’. sebagai contoh, 72 adalah nilai dari c[3].

Deklarasi ArrayVariable array dideklarasikan dengan mencantumkan tipe dan nama variable yang diikuti dengan banyaknya lokasi memori yang ingin dibuat. Dengan demikian, deklarasi untuk variable array c di atas adalah :int c[7];

Perlu diperhatikan bahwa C++ secara otomatis menyediakan lokasi memori yang sesuai dengan yang dideklarasikan, dimana nomor indeks selalu dimulai dari 0. Nilai suatu variable array dapat juga diinisialisasi secara langsung pada saat deklarasi, misalnya;Int c[7] = {-45, 0, 6, 72, 1543, 43, 4}Berarti setiap lokasi memori dari variable array c langsung diisi dengan nilai-nilai yang dituliskan didalam tanda kurung kurawal.

Banyaknya lokasi memori dapat secara otomatis disediakan sesuai degan banyaknya nilai yang akan dimasukkan, seperti contoh berikut yang tentunya membuat variable array dengan 10 lokasi memori:Int x []={10, 15 12, 5, 13, 9, 6, 17, 25, 31};Untuk memperjelas gambaran anda tentang array perhatikan contoh aplikasi variable array, yaitu program untuk menghitung jumlah setiap elemen dalam suatu array.Sebagai gambaran dari program tersebut, dapat dibuat sebuah algoritma sebagai berikut:

1. Tentukan elemen array sebanyak yang diinginkan (dalam hal ini, elemen array tersebut berjumlah 12 buah)

2. Tentukan nilai awal indeks, batas akhir indeks dan kenaikannya (dalam hal ini, nilai awal indeks adalah 0, batas akhir indeks adalah jumlah elemen array diatas yaitu 12 dikurangi dengan 1, kenaikannya adalah 1)

Page 3: Laporan Algo 2

3. Lakukan perulangan sesuai dengan langkah 2

4. Lakukan penjumlahan masing-masing elemen array sampai batas akhir indeks terpenuhi

5. Tampilkan penjumlahan semua elemen array

6. Selesai.

Sedangkan implementasi dalam program dapat dilihat berikut ini.

Contoh Program array

123456789101112

/*Program :array1.cpp*/#include <stdio.h>#define SIZE 12main(){ int a[SIZE]={1, 3, 5, 4, 7, 2, 99, 16, 45, 67, 89, 45}; int indeks, total =0; for(indeks=0; indeks<=SIZE-1; indeks++) total += a[indeks]; printf("\nTotal setiap elemen array adalah %d",total); return 0;}

Bila program diatas dijalankan, akan muncul hasil :Total setiap elemen array adalah 383

Adapun keterangan dari program diatas adalah sebagai berikut :Hasil penjumlahan setiap elemen array diperoleh dari jumlah data atau elemen array sebanyak 12 buah yang sudah didefinisikan pada awal program yaitu #define SIZE 12. Kemudian setiap elemen array dari a[0] yang berisi data, a[1] yang berisi data 3 di jumlahkan sampai dengan a[11] yang berisi data 45. Proses penjumlahan dilakukan pada loop dimulai dari 0 sampai data yang terakhir atau elemen terakhir.

Array Dimensi SatuBentuknya :Tipe nama_var[ukuran];Dengan :Tipe : menyatakan jenis elemen array (int, char, unsigned, dan lain-lain)Ukuran : menyatakan jumlah maksimal elemen arrayContoh :Float nilai_ujian[5];

Pada turbo C++ array disimpan dalam memori secara berurutan. Elemen pertama berindeks nol digambarkan sebagai berikut :Nilai_ujian[0]

Page 4: Laporan Algo 2

Nilai_ujian[1]Nilai_ujian[2]Nilai_ujian[3]Nilai_ujian[4]

Masing-masing berbentuk float dan berjumlah 5 elemen.Selain itu, deklarasi array juga dapat berupa :Static int bulan[12]={1,2,3,4,5,6,7,8,9,10,11,12}Sesuai dengan deklarasi array diatas, maka isi variable array telah ditentukan yaitu :Bulan[0] bernilai 1Bulan[1] bernilai 2Bulan[2] bernilai 3Bulan[3] bernilai 4Bulan[4] bernilai 5Bulan[5] bernilai 6Bulan[6] bernilai 7Bulan[7] bernilai 8Bulan[8] bernilai 9Bulan[9] bernilai 10Bulan[10] bernilai 11Bulan[11] bernilai 12

Untuk memperjelas tentang array dimensi satu, perhatikan maslah berikut ini :

Misalkan Anda diminta membuat algoritma dan program untuk menampilkan bilangan dari 1 sampai bilangan 10, dengan pangkatnya masing-masing. Adapun batas nilai maksimal yang disimpan adalah 100.Sesuai yang telah Anda pelajari , bahwa bilangan 1 pangkatnya adalah 1. Hasil ini diperoleh dari 1*1, kemudian bilangan 2 pangkatnya adalah 4, hasil ini diperoleh dari 2*2 sampai bilangan 10 yang pangkatnya adalah 100, hasil ini diperoleh dari 10*10.Algoritma dari permasalahan diatas adalah berikut ini :1. Tentukan elemen array untuk menampung nilai perkalian2. Tentukan nilai awal indeks, batas akhir indeks dan kenaikannya (dalam hal ini , nilai awal indeks adalah 0, batas akhir indeks adalah 10, dan kenaikannya adalah 1)3. Lakukan perulangan sesuai langkah 24. Nilai awal indeks ditambah dengan 15. Lakukan perkalian masing-masing elemen array sampai batas akhir indeks terpenuhi.6. Tampilkan perkalian semua elemen array7. Selesai .Contoh program array dimensi satu

12345

/*Program :array2.cpp*/#include <stdio.h>int main(){ int square[100];

Page 5: Laporan Algo 2

67891011121314151617

int i; /*loop index*/; int k; /*the integer*/  /*calculate the squares */ for (i=0; i<10; i++) { k= i+1; square[i]=k*k; printf("\nPangkat dari %d adalah %d ", k, square[i]); } return 0;}

Bila program dijalankan akan muncul hasil :Pangkat dari 1 adalah 1Pangkat dari 2 adalah 4Pangkat dari 3 adalah 9Pangkat dari 4 adalah 16Pangkat dari 5 adalah 25Pangkat dari 6 adalah 36Pangkat dari 7 adalah 49Pangkat dari 8 adalah 64Pangkat dari 9 adalah 81Pangkat dari 10 adalah 100

Penjelasan :Dari program diatas, Anda dapat melihat ada 10 buah elemen yang masing-masing nilainya akan dipangkatkan, mulai dari 1 sampai 10. Dimana dalam memori sudah dipesan tempat sebanyak 100.Sedangkan apabila array akan dikirim ke sebuah fungsi caranya adalah hanya dengan mencantumkan nama array tanpa diikuti dengan tanda apapun, seperti contoh berikut :int c[5] = {-45, 0, 6, 72, 1543};——JUMLAH (c, 5)—-

Dalam contoh diatas, yang memanggil fungsi JUMLAH dengan mengirimkan argument berupa variable array c dan sebuah konstanta 5. Perhatikan bahwa variable array ditulis hanya c tanpa notasi tambahan apapun. Deklarasi variable array yang menjadi parameter dari suatu fungsi dituliskan dengan nama variable array yang diikuti dengan tanda kurung [], tanpa menuliskan banyaknya lokasi memori yang diinginkan.

ARRAY DIMENSI DUAStruktur array yang dibahas diatas mempunyai satu dimensi, sehingga variabelnya disebut variable array berdimensi satu. Pada bagian ini ditunjukkan array berdimensi lebih dari satu,

Page 6: Laporan Algo 2

yang sering disebut dengan array berdimensi dua.Sebagai contoh, sebuah matrik B berukuran 2 X 3 dapat dideklarasikan dalam C seperti berikut : int B[2][3] = {[2, 4, 1}, {5, 3, 7}}; yang menempati lokasi memori dengan susunan sebagai berikut :0 1 20 2 4 11 5 3 7

Dan definisi variable untuk setiap elemen tersebut adalah :0 1 20 b[0][0] b[0][1] b[0][2]1 b[1][0] b[1][1] b[1][2]

Sebagai implementasi dari keterangan diatas, perhatikan program berikut ini :Contoh Program array dimensi dua

123456789101112131415161718192021222324

/*Program :array2.cpp*/#include <stdio.h>void printArray(int[][3]);main(){ int matrik1[2][3] = {{1, 2, 3},{4, 5, 6}}; int matrik2[2][3] = {1, 2, 3, 4, 5}; int matrik3[2][3] = {{1, 2},{4}}; printArray (matrik1); printArray (matrik2); printArray (matrik3); return 0;} void printArray (int a[][3]){ int i,j; for (i=0; i<=1; i++) { for (j=0; j<=2; j++) printf("%d",a[i][j]);; printf("\n"); }}

Bila program diatas dijalankan, akan mucul hasil :123456123450

Page 7: Laporan Algo 2

120400

Penjelasan :Dari program diatas untuk matrik 1, penulisannya adalah 123 456, sedangkan pada matrik 2 penulisannya adalah 123 450. 0 disini mempunyai arti tempat yang disediakan untuk data kolom ke 3 dan baris ke 2 tidak diisi. Sedangkan matrik 3 penulisannya adalah 120 400. Dari matrik 3 disini kita bisa melihat bahwa pada baris pertama kolom ketiga data tidak diisi dan dianggap 0 dan pada baris kedua kolom kedua dan ketiga juga tidak diisi juga diisi 0.Dalam program tersebut, juga digunakan fungsi untuk menampung hasil penjumlahan matrik.Perhatikan contoh lain :Int datasiswa[4][3];Deklarasi diatas digunakan untuk mendeklarasikan suatu data siswa yang berbentuk demikian :No Nama Kelas Jumlah SiswaTahun 1989 Tahun 1990 Tahun 19911 Kelas 1 50 55 492 Kelas 2 60 60 553 Kelas 3 56 56 564 Kelas 4 49 50 54

Dari deklarasi diatas maka angka empat [4] menyatakan jumlah kelas, dan angka indek [3] menyatakan tahun.Data siswa [0][2] adalah Kelas 1 dan jumlah siswa tahun 1990 yaitu 55. Atau jumlah siswa kelas 1 pada tahun 1990 adalah 55.

Bentuk data siswa dapat juga digambarkan sebagai berikut :1 2 31 50 55 492 60 60 553 56 56 564 49 50 54

Array ini dapat pula diberi nilai tetap dengan static seperti pada array dimensi satu. Deklarasinya adalah sebagai berikut :Static int jumlah [4][3]={50, 55, 49,60, 60, 55,56, 56, 56,49, 50, 54};

ARRAY DIMENSI BANYAK

Page 8: Laporan Algo 2

Array ini seperti array dimensi dua tetapi dapat memiliki ukuran yang lebih besar. Sebenarnya array dimensi banyak ini tidak terlalu sering digunakan, tetapi sewaktu-waktu kalau dimensi yang dibutuhkan banyak, maka array ini sangat memegang peranan yang penting.

Contoh dan Praktikum

Contoh 1 (ARRAY)

Bahasa pemrograman

//---------------------------------------------------------------------

#include <conio.h>

#include <stdio.h>

//---------------------------------------------------------------------

main ()

{

char hari[7]={'A','S','L','R','K','J','B'};

char x;

printf ("masukkan kode hari : \n");

scanf ("%c",&hari[x]);

switch (hari[x])

{

case 'A': printf ("AHAD \n"); break;

case 'S': printf ("SENIN \n"); break;

case 'L': printf ("SELASA \n"); break;

case 'R': printf ("RABU \n"); break;

case 'K': printf ("KAMIS \n"); break;

Page 9: Laporan Algo 2

case 'J': printf ("JUMAT \n"); break;

case 'B': printf ("SABTU \n"); break;

default:

printf ("hari yang anda cari tidak terdaftar \n");

}

getch();

return 0;

}

//---------------------------------------------------------------------

Analisis :Pada percobaan kali ini kita mencoba penerapan ARRAY,dengan menggunakan ARRAY kita dapat memasukan beberapa data yang sama dalam satu inputan sehingga dalam mengerjakan praktikum ini memerlukan waktu yang lebih singkat daripada menggunakan cara

Page 10: Laporan Algo 2

biasa. Program yang dihasilkan adalah berupa program yang akan mengeluarkan output nama hari bila kita memasukan kode nama hari tersebut,hal ini didapat dengan bahasa pemerograman case.

Contoh 2

Bahasa pemrograman

#include<stdio.h>

#include<ctype.h>

#include<conio.h>

void main()

{

int jum;

jum=0;

int j,h,x;

char nama[20];

/*Memasukan karakter nama dalam array*/

printf("Masukan jumlah huruf : ");

scanf("%i",&x);

printf("Masukan Nama : ");

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

{scanf("%c",&nama[h]);}

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

{

/*Seleksi Karakter Vokal*/

Page 11: Laporan Algo 2

switch(toupper(nama[j]))

{

case'A': ++jum;

break;

case'I': ++jum;

break;

case'U': ++jum;

break;

case'E':++jum;

break;

case'O': ++jum;

break;

}

}

/*Menampilkan karakter nama dalam array*/

if (jum>0)

{

printf("Jumlah vokal:%d\n",jum);

}

else

{

printf("Tidak ada huruf vokal");

Page 12: Laporan Algo 2

}

}

Analisis :Di contoh kedua ini kita masih menggunakan input dengan cara Array,dan dalam program ini input dibatasi 20 karakter,program ini dapat menghitung berapa jumlah huruf vocal yang ada pada nama yang diinput.Dalam program ini kembali digunakan bahasa pemrograman pengulangan.

Page 13: Laporan Algo 2

Contoh 3

Bahasa pemrograman

#include<iostream.h>

#include<conio.h>

#include<stdio.h>

#include<stdlib.h>

main()

{

#define Nmaks 20

typedef int matrik[Nmaks][Nmaks];

int n,i,j;

matrik A,B,C;

cout<<"Program Perkalian Matrik A 3x3\n";

n=3;

gotoxy(2,7);cout<<"Masukkan entri-entri matriks A! ";

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

for(j=1;j<=n;j++){

gotoxy(2,7+3*i+j);printf("A[%d,%d]=",i,j);cin>>A[i][j];

}

Page 14: Laporan Algo 2

}

gotoxy(38,7);cout<<"Masukkan entri-entri matriks B!";

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

for(j=1;j<=n;j++){

gotoxy(38,7+3*i+j);printf("B[%d,%d]=",i,j);cin>>B[i][j];

}

}

clrscr();

cout<<"\n";

//proses perkalian matrik C=AxB

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

for(j=1;j<=n;j++){

C[i][j]=A[i][j]+B[i][j];

}

}

clrscr();

//proses output matrik A

gotoxy(9,10);

cout<<"A=";

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

for(j=1;j<=n;j++){

gotoxy(10+4*j,6+2*i);

cout<<A[i][j];

}

}

Page 15: Laporan Algo 2

//proses output matrik B

gotoxy(9,19);

cout<<"B=";

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

for(j=1;j<=n;j++){

gotoxy(10+4*j,15+2*i);

cout<<B[i][j];

}

}

//proses output matrik C

gotoxy(9,30);

cout<<"B=";

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

for(j=1;j<=n;j++){

gotoxy(10+4*j,26+2*i);

cout<<A[i][j];

}

}

gotoxy(24,30);

cout<<"x";

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

for(j=1;j<=n;j++){

gotoxy(24+4*j,26+2*i);

cout<<B[i][j];

}

Page 16: Laporan Algo 2

}

gotoxy(38,30);

cout<<"=";

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

for(j=1;j<=n;j++){

gotoxy(38+4*j,26+2*i);

cout<<C[i][j];

}

}

getch();

return 0;

}

Page 17: Laporan Algo 2

Analisis : Dalam contoh yang ketiga ini kita masih menggunakan system input Array,dan dalam program ini kita dapat menginput bilangan matrik,namun syang sekali kita hanya sebatas dapat menampilkan bilanagan matriks tidak dapat melakukan oprasi matematika pada program ini.

Latihan

1.

#include<stdio.h>#include<conio.h>

void main(){ int x,y,n[100],a,b,c,d;

printf("masukan jumlah bilangan yang diinginkan= "); scanf("%i",&x);

Page 18: Laporan Algo 2

for(a=1;a<=x;a++) {printf("masukan bilangan= "); scanf("%i",&n[a]);} for(b=1;b<=x;b++) {c=n[b];

for(d=1;d<=x;d++) {if(n[d]<=c) { c=n[d]; y=d; } else{c=c;} } printf("%d",c); n[y]= '/0';}}

Page 19: Laporan Algo 2

Analisis program:

Program ini berfungsi untuk mengurutkan angka dari yang terkecil ke angka terbesar dengan menggunakan system input array kita dapat memsukan angka sampai ribuan,namun dalam program ini saya batasi sampai 100.

2.

#include<iostream.h>

#include<conio.h>

#include<stdio.h>

#include<stdlib.h>

#pragma hdrstop

#pragma argsused

main()

{

#define Nmaks 10

typedef int matrik[Nmaks][Nmaks];

int n,i,j;

matrik A,B,C;

cout<<"Program Perkalian Matriks A 3x3 dan B 3x3\n";

Page 20: Laporan Algo 2

n=3;

gotoxy(7,14);cout<<"masukkan entri-entri matriks A!\n";

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

for(j=1;j<=n;j++){

gotoxy(7,14+3*i+j);printf("A[%d,%d]=",i,j);cin>>A[i][j];

}

}

gotoxy(41,14);cout<<"masukkan entri-entri matriks B!\n";

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

for(j=1;j<=n;j++){

gotoxy(41,14+3*i+j);printf("B[%d,%d]=",i,j);cin>>B[i][j];

}

}

clrscr();

cout<<"\n";

//proses perkalian matriks C=AxB

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

for(j=1;j<=n;j++){

C[i][j]=A[i][1]+B[1][j];

}

}

clrscr();

//proses output matriks A

gotoxy(1,6);

cout<<"A=";

Page 21: Laporan Algo 2

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

for(j=1;j<=n;j++){

gotoxy(1+4*j,2+2*i);

cout<<A[i][j];

}

}

//proses output matriks B

gotoxy(1,14);

cout<<"B=";

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

for(j=1;j<=n;j++){

gotoxy(1+4*j,10+2*i);

cout<<B[i][j];

}

}

//proses output matriks c

gotoxy(21,10);

cout<<"C=";

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

for(j=1;j<=n;j++){

gotoxy(20+4*j,6+2*i);

cout<<A[i][j];

}

}

gotoxy(24,30);

Page 22: Laporan Algo 2

cout<<"x";

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

for(j=1;j<=n;j++){

gotoxy(24+4*j,26+2*i);

cout<<B[i][j];

}

}

gotoxy(38,30);

cout<<"=";

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

for(j=1;j<=n;j++){

gotoxy(38+4*j,26+2*i);

cout<<C[i][j];

}

}

getch();

return 0;

}

Page 23: Laporan Algo 2

Analisa program :Program ini merupakan program untuk menampilkan output bilangan matrik,kita dapat menampilkan 3 matrik berordo 3 x 3 .namun saying program ini hanya sebatas bisa menampilkan bilangan matrik,tidak bisa membuat oprasi hitung matrik.

3.

#include<stdio.h>

void main ()

{ char nama[20];

nama [0]= 'B';

nama [1]= 'U';

nama [2]= 'D';

nama [3]= 'I';

Page 24: Laporan Algo 2

nama [4]= 'M';

nama [5]= 'A';

nama [6]= 'N';

nama [7]= '\0';

printf("%s\n", nama);

nama[4]='\0';

printf("%s\n",nama);

}

Analisis program:

Page 25: Laporan Algo 2

Program ini dibuat dengan metode input array dan penampilan data atau output string , maka setelah semua karakter diinput dalam bahasa pemrograman maka akan keluar 7 karakter yang diinput dan akan dibatasi 4 karakter pertama dengan metode string.

Dasar Teori

b.Fungsi dan Prosedur

Procedure dan Function disebut juga subroutine, merupakan blok statement yang dapat dipanggil dari lokasi yang berbeda di dalam program. Yang membedakan antara function dan procedure yaitu: suatu function jika dijalankan/dipanggil akan mengembalikan suatu nilai.

Dalam PASCAL dikenal istilah procedure dan function, dalam Basic dikenal sub dan function, sedangkan dalam C++, Java, PHP, dan keturunan C lainnya dikenal hanya istilah function. Apabila kita ingin membuat subroutine yang tidak mengembalikan nilai, kita dapat memberi nilai kembalian berupa void.

Fungsi (Function) merupakan blok dari kode yang dirancang untuk melaksanakan tugas khusus. Pada intinya fungsi berguna untuk :

Mengurangi pengulangan penulisan program yang berulangan atau sama. Dapat melakukan pendekatan top-down dan divide-and-conquer: program besar dapat

dipisah menjadi program-program kecil.

Program menjadi terstruktur, sehingga mudah dipahami dan dikembangkan.

Kemudahan dalam mencari kesalahan-kesalahan karena alur logika jelas dan kesalahan dapat dilokalisasi dalam suatu modul tertentu saja.

Modifikasi program dapat dilakukan pada suatu modul tertentu saja tanpa mengganggu program keseluruhan.

Mempermudah dokumentasi.

Reusability: Suatu fungsi dapat digunakan kembali oleh program atau fungsi lain

Page 26: Laporan Algo 2

Kategori Function dalam C/C++

Standard Library FunctionYaitu fungsi-fungsi yang telah disediakan oleh C/C++ dalam file-file header atau librarynya. Misalnya: clrscr(), printf(), getch()Untuk function ini kita harus mendeklarasikan terlebih dahulu library yang akan digunakan, yaitu dengan menggunakan preprosesor direktif.

Programmer-Defined FunctionAdalah function yang dibuat oleh programmer sendiri. Function ini memiliki nama tertentu yang unik dalam program, letaknya terpisah dari program utama, dan bisa dijadikan satu ke dalam suatu library buatan programmer itu sendiri yang kemudian juga di-include-kan untuk penggunaanya.

Struktur Function

1. Function PrototypePrototipe fungsi digunakan untuk menjelaskan kepada kompiler mengenai :

Tipe keluaran fungsi. Jumlah parameter.

Tipe dari masing-masing parameter.

Salah satu keuntungan pemakai prototipe, kompiler akan melakukan konversi antara tipe parameter dalam definisi dan parameter saat pemanggilan fungsi tidak sama atau akan menunjukkan kesalahan jika jumlah parameter dalam definisi dan saat pemanggilan berbeda.

Contoh lain :long kuadrat (long l) ;Pada contoh pertama, fungsi kuadrat ( ) mempunyai argumen/parameter bertipe long dan nilai balik bertipe long.

void garis ( );Pada contoh kedua, fungsi garis ( ) tidakmemiliki argumen/parameter dan nilai baliknya tidak ada (void).

Page 27: Laporan Algo 2

double maks (double x, double y)Pada contoh ketiga, fungsi maks( ) mempunyai dua buah argumen/parameter, dengan masing-masing argumen bertipe double.

2. Function Definition

tipe_data nama_fumgsi(arguman 1, argument 2){ Variabel_lokal; Statement_1; Statement_2; ... return (variabel);}3. Parameter Fungsi

Terdapat dua macam para parameter fungsi, yaitu :1. Parameter formal adalah variabel yang ada pada daftar parameter dalam definisi fungsi.2. Parameter Aktual adalah variabel yang dipakai dalam pemanggilan fungsi.

Contoh dan Praktikum

1.

a.

#include <stdio.h>

#include <conio.h>

#include <math.h>

double pangkat(double n, double m);

main()

{

double n, m;

printf("Menghitung nilai basis pangkat eksponen \n");

printf("\nMasukan nilai basis: ");

scanf("%le",&n);

printf("\nMasukan nilai eksponen: ");

scanf("%le",&m);

printf("\nHasil dari %.2le%.2le adalah %.2le", n, m, pangkat(n,m));

Page 28: Laporan Algo 2

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)

Page 29: Laporan Algo 2

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

}

}

Page 30: Laporan Algo 2

Analisis : Pada contoh pertama ini , kita belajar menggunakan penulisan program yang berbeda dengan di awal kita pelajari.Bila dulu kita menulis satu program dengan satu kurawal buka dan satu kurawal tutup,dalam praktikum kali ini kita coba memecah satu program menjadi dua modula atau menjadi dua bagian program.Program yang kita buat kali ini dapat menghitung oprasi matematika berbasis eksponen.

b.

#include <stdio.h>

#include <conio.h>

#include <math.h>

double pangkat(double n, double m);

main()

{

Page 31: Laporan Algo 2

double n, m;

printf("Menghitung nilai basis pangkat eksponen \n");

printf("\nMasukan nilai basis: ");

scanf("%le",&n);

printf("\nMasukan nilai eksponen: ");

scanf("%le",&m);

printf("\nHasil 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");

Page 32: Laporan Algo 2

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;

return pkt;

}

else

return exp(m*log(n));

}

else

{

if((m>-10)&&(ceil(m)==m))

{

for(I=1;I<=-m;I=I+1)

Page 33: Laporan Algo 2

pkt=pkt*n;

return 1.0/pkt;

}

else

return exp(m*log(n));

}}

Analisis : Dalam contoh praktikum 1b ini kita belajar membuat fungsi,dalam hal ini fungsi pangkat.Dalam praktikum ini kita mempelajari jenis tipe data baru yaitu jenis data double,dalam program ini juga kita menggunakan bahasa pemerograman loop for atau pengulangan.Program yang dihasilkan adalah berupa program yang hampir sama dengan program 1a,namun dalam praktikum ini output berupa bilangan real (double).

2.

#include<stdio.h>

#include<conio.h>

Page 34: Laporan Algo 2

main()

{

float sum(void);

printf("\nJumlahnya adalah %.2f\n",sum());

getch();

}

float sum(void)

{

int i, num;

float entri, total=0;

printf("berapakah banyak bilangan yang akan dimasukan?");

scanf("%d",&num);

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

{

printf("\nBilangan ke %d:",i);

scanf("%f",&entri);

total=total+entri;

}

Page 35: Laporan Algo 2

return total;

}

Analisis: Pada praktikum kali ini kita masih mempelajari pembuatan fungsi,kali ini kita membuat sebuah program dengan fungsi yang dapat membaca sekumpulan datayang diinput dan mengembalikan nilai jumlah dari seluruh bilangan tersebut,dalam program kali ini digunakan bahasa pemerograman loop for.

3.

Solusi a

#include <stdio.h>

#include <conio.h>

#include <math.h>

Page 36: Laporan Algo 2

float jumlah_total(int n_tahun, int m_perioda, float tabungan_tahunan, float bunga);

main()

{

int n_tahun, m_perioda;

float tabungan_tahunan, bunga, total_uang;

printf ("berapa tahun masa penabungan?");

scanf("%d",&n_tahun);

printf ("berapa kali pembayaran bunga dilakukan dalam setahun?");

scanf("%d",&m_perioda);

printf ("berapa besarnya uang yang ditabungkan setiap tahun?");

scanf("%f",&tabungan_tahunan);

printf ("berapa bunga setiap tahunnya?");

scanf("%f",&bunga);

total_uang = jumlah_total(n_tahun, m_perioda, tabungan_tahunan, bunga);

printf("Jumlah total uang yang terkumpul selama %d tahun adalah %f",n_tahun,total_uang);

getch();

return 0;

}

Page 37: Laporan Algo 2

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;

}

Page 38: Laporan Algo 2

Analisis : Dalam contoh ketiga ini kita masih mempelajari pembuatan fungsi, program ini dapat menghitung jumlah uang dan bunga yang didapat selama didepositkan.pada program ini digunakan jenis data float,karena bukan tidak mungkin jumlah uang yang terkumpul merupakan jenis data float atau memiliki variable decimal.

Page 39: Laporan Algo 2

Solusi b

#include <stdio.h>

#include <conio.h>

#include <math.h>

#include <ctype.h>

float tabungan(int n_tahun, int m_perioda, float total_uang, float bunga);

main()

{

int n_tahun, m_perioda;

float total_uang, bunga;

float tabungan_tahunan;

printf("berapa masa penabungan?");

scanf("%d",&n_tahun);

printf("berapa kali pembayaran bunga dilakukan dalam setahun?");

scanf("%d",&m_perioda);

printf("berapa besarnya total uang yang diharapkan?");

scanf("%f",&total_uang);

printf("berapa bunga setiap tahunnya?");

scanf("%f",&bunga);

tabungan_tahunan=tabungan(n_tahun, m_perioda, total_uang, bunga);

Page 40: Laporan Algo 2

printf("jumlah 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;

}

Page 41: Laporan Algo 2

Analisis : Program ini merupakan ,pemecahan masalah dari soal no.3 hampir sama dengan program sebelumnya namun dalam program kali ini dimasukan fungsi yang berbeda ,sehingga jika dalam program sebelumnya program dapat menghitung jumlah uang yang terkumpul dalam jangka waktu tertentu,dalam program ini kita dapat mengetahui jumlah uang yang harus kita kumpulkan per jangka waktu tertentu untuk mencapai uang yang kita inginkan.

Page 42: Laporan Algo 2

Latihan Soal

1.

#include<stdio.h>

#include<conio.h>

#include<math.h>

main()

{

float b;

int x,a;

b=1;

K:

printf("faktori aladalah hasil perkalian antara bilangan bulat positif yang kurang dari atau sama dengan n");

printf("\n\nmasukan bilangan murni : ");

scanf("%d",&x);

for(a=1;a<=x;a++)

{

b=a*b;

}

printf("faktorialnya adalah : %0.0f",b);

getch();

Page 43: Laporan Algo 2

clrscr();

goto K;

}

Page 44: Laporan Algo 2

3.

#include <stdio.h>

#include <conio.h>

#include <math.h>

double pangkat(double n, double m);

int fact(int n);

void MenuPangkat();

void MenuFaktorial();

void MenuExponen();

main()

{

int pil;

printf("~.~ ~.~ ~.~ ~.~ ~.~ MENU ~.~ ~.~ ~.~ ~.~ ~.~ ~.~\n\n\n");

printf("1. Program Pangkat n\n");

printf("2. Program Faktorial n\n");

printf("3. Program Exponen n\n");

printf("4. Keluar Program\n");

printf("\n\n <<<<<<<<<<<<<<<>>>>>>>>>>>>>> \n");

printf("\n\n\n Pilih Program: ");

printf("\n");

Page 45: Laporan Algo 2

printf("\n\n\n <<<<<<<<<<<<<<<>>>>>>>>>>>>>> \n");

scanf("%d", &pil);

switch(pil)

{

case 1 :

MenuPangkat();

break;

case 2 :

MenuFaktorial();

break;

case 3 :

MenuExponen();

break;

case 4 :

clrscr();

printf("Keluar Program!");

break;

default :

clrscr();

printf("Pilihan Menu Salah!");

Page 46: Laporan Algo 2

}

}

void MenuPangkat()

{

clrscr();

double n, m;

printf("menghitung nilai basis pangkat eksponen\n");

printf("\nmasukkan nilai basis: ");

scanf("%lf", &n);

printf("\nmasukkan nilai eksponen: ");

scanf("%lf", &m);

printf("\nhasil dari %.2lf^%.2lf adalah %.2lf", 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);

Page 47: Laporan Algo 2

if(n == 0) return(0);

if((ceil(n) != n) && (n < 0))

{

printf("\nerror, n tidak dapat berupa bilangan negatif.\n");

return 0;

}

else if((ceil(n) == 0) && (fabs(m)>9.0))

{

printf("\nerror, 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++)

{

pkt = pkt * n;

}

return(pkt);

}

else return exp(m * log(n));

}

else

Page 48: Laporan Algo 2

{

if((m > -10) && (ceil(m) == m))

{

for(I=1; I<=m; I++)

{

pkt = pkt * n;

}

return(1.0/pkt);

}

else return exp(m * log(n));

}

}

void MenuFaktorial()

{

clrscr();

int n;

printf("masukkan nilai yang akan d faktorialkan = ");

scanf("%d", &n);

printf("hasil dari %d! = %d", n, fact(n));

getch;

}

Page 49: Laporan Algo 2

int fact(int n)

{

int i;

for(i=n-1; i>=1; i--)

{

n = n * i;

}

return (n);

}

void MenuExponen()

{

clrscr();

printf("This Program is Under Construction now.");

}

Page 50: Laporan Algo 2
Page 51: Laporan Algo 2

Dasar Teori

POINTER

1 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 :

Operator &Operator & bersifat unary (hanya memerlukan satu operand saja).

Operator & menghasilkan alamat dari operandnya.

Operator *Operator * bersifat unary (hanya memerlukan satu operand saja).

Operator * menghasilkan nilai yang berada pada sebuah alamat.

2 DEKLARASI POINTERSeperti halnya variabel yang lain, variabel pointer juga harus dideklarasikan terlebih

dahulu sebelum digunakan.

Bentuk Umum :

Tipe_data *nama_pointer;

//Contoh9_1

int *px;

char *sh;

Contoh Program :

Page 52: Laporan Algo 2

#include “IOSTREAM.h”

#include “conio.h”

void main()

{ int x, y; /* x dan y bertipe int */

int *px; /* px pointer yang menunjuk objek */

clrscr();

x = 87;

px = &x; /* px berisi alamat dari x */

y = *px; /* y berisi nilai yang ditunjuk px */

cout<<“Alamat x =”<<&x <<\n”;

cout<<“Isi px = \n”, px);

cout<<“Isi x = \n”, x);

cout<<“Nilai yang ditunjuk oleh px = \n”, *px);

cout<<“Nilai y = \n”, y);

getch();

}

3 OPERASI POINTER

Operasi PenugasanSuatu variable pointer seperti halnya variable yang lain, juga bisa mengalami operasi

penugasan. Nilai dari suatu variable pointer dapat disalin ke variable pointer yang lain.

Page 53: Laporan Algo 2

//Contoh9_2

#include "iostream.h"

#include "conio.h"

void main()

{ float *x1,y, *x2;

clrscr();

y = 13.45;

x1 = &y; /* Alamat dari y disalin ke variabel x1 */

x2 = x1; /* Isi variabel x1 disalin ke variabel x2 */

cout<<"Nilai variabel y = "<<y<< " ada di alamat "<< x1<<"\n";

cout<<"Nilai variabel y = "<<y<< " ada di alamat "<< x2<<"\n";

getch();

}

Operasi AritmatikaSuatu variabel pointer hanya dapat dilakukan operasi aritmatika dengan nilai integer

saja. Operasi yang biasa dilakukan adalah operasi penambahan dan pengurangan.

Operasi penambahan dengan suatu nilai menunjukkan lokasi data berikutnya (index

selanjutnya) dalam memori. Begitu juga operasi pengurangan.

//Contoh9_3

#include <iostream.h>

#include <conio.h>

void main()

{ int nilai[3], *penunjuk;

clrscr();

nilai[0] = 125;

nilai[1] = 345;

Page 54: Laporan Algo 2

nilai[2] = 750;

penunjuk = &nilai[0];

cout<<"Nilai "<<*penunjuk <<" ada di alamat memori " <<penunjuk<<"\n";cout<<"Nilai "<<*(penunjuk+1) <<" ada di alamat memori " <<penunjuk+1<<"\n";

cout<<"Nilai "<<*(penunjuk+2) <<" ada di alamat memori " <<penunjuk+2<<"\n";

getch();

}

Operasi LogikaSuatu pointer juga dapat dikenai operasi logika.

//Contoh9_4

#include<iostream.h>

#include "conio.h"

void main()

{ int a = 100, b = 200, *pa, *pb;

clrscr();

pa = &a;

pb = &b;

cout<<"nilai pa= "<<pa<< " nilai pb= "<<pb<<"\n";

if(pa < pb)

cout<<"pa menunjuk ke memori lebih rendah dari pb\n";

if(pa == pb)

cout<<"pa menunjuk ke memori yang sama dengan pb\n";

if(pa > pb)

cout<<"pa menunjuk ke memori lebih tinggi dari pb\n";

getch();}

Page 55: Laporan Algo 2

4 POINTER DAN STRING

//Contoh9_5

#include <iostream.h>

#include <conio.h>

void misteri1(char *);

void main() {

char string[] = "amikom";

cout<< "String sebelum proses adalah " << string <<"\n" ;

misteri1(string);

cout<<"String setelah proses adalah "<<string;

getch();

}

void misteri1(char *s) {

while ( *s != '\0' ) {

if ( *s >= 'a' && *s <= 'z' )

*s -= 32;

++s;

}

}

5 POINTER MENUNJUK SUATU ARRAY

//Contoh9_6

#include "iostream.h"

#include "conio.h"

void main()

Page 56: Laporan Algo 2

{ static int tgl_lahir[] = { 13,9,1982 };

int *ptgl;

ptgl = tgl_lahir; /* ptgl berisi alamat array */

cout<<"Diakses dengan pointer\n";

cout<<"Tanggal = "<< *ptgl<<"\n";

cout<<"Bulan = "<< *(ptgl + 1) <<"\n";

cout<<"Tahun = "<<*(ptgl + 2) <<"\n";

cout<<"\nDiakses dengan array biasa\n";

cout<<"Tanggal = "<< tgl_lahir[0] <<"\n";

cout<<"Bulan = "<< tgl_lahir[1] <<"\n";

cout<<"Tahun = "<< tgl_lahir[2] <<"\n";

getch();

}

MEMBERI NILAI ARRAY DENGAN POINTER

//contoh9_7

#include "iostream.h"

#include "conio.h"

void main()

{ int x[5], *p, k;

clrscr();

p = x;

x[0] = 5;

x[1] = x[0];

x[2] = *p + 2;

Page 57: Laporan Algo 2

x[3] = *(p+1) - 3;

x[4] = *(x + 2);

for(k=0; k<5; k++)

cout<<"x["<<k<<"] = "<< x[k]<<"\n";

getch();

}

Page 58: Laporan Algo 2

Contoh dan Praktikum

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 &y=%x *py=%x *py=%d,y, &y ,py,*py");

printf("\nx=%d &x=%x *py=%x *py=%d,x, &x,px,*px");

getch();

}

Page 59: Laporan Algo 2

Analisis : Dalam program ini kita memplejari tentang pointer atau penunjuk,dalam program ini kita hanya memasukan data untuk mengetahui dimana data tersebut disimpan kita dapat menjalankan program yang telah kita buat ini.

Page 60: Laporan Algo 2

Contoh 2

#include<stdio.h>

#include<conio.h>

//#include<dos.h>

int a = 1;

void ubah (int a);

main()

{

ubah(a);

printf("nilai a sekarang adalah %d\n",a);

getch();

}

void ubah(int a)

{

a=20*a;

}

Page 61: Laporan Algo 2

Analisis : Pada contoh ke dua ini kita masih membuat program sederhana dengan pointer, jika pada contoh satu kita membuat program untuk mengetahui dimana data dari input program tersebut disimpan,kali ini kita membuat program untuk menunjukan cara kerja pointer,misalnya pada contoh ini kita memasukan data a = 1 maka program akan menunjukan bahwa nilai a = 1.

Page 62: Laporan Algo 2

Contoh 3 a

#include<stdio.h>

#include<conio.h>

main()

{

float data[10];

int bilangan, i=0;

printf("berapa banyak bilangan?");

scanf("%d", &bilangan);

do{

printf("masukan 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;

}

Page 63: Laporan Algo 2

Analisis : Pada contoh ke tiga ini kita mempelajari fungsi dari Pointer,dengan bahasa pemerograman pointer kita dapat menempatkan suatu data(char,float,int,dll) pada tempat tertentu,contohnya pada contoh tiga ini kita dapat memasukan data berupa int yang dapat kita tempatkan pada jutaan,ratus ribuan,ribuan,dan ratusan.

Page 64: Laporan Algo 2

Contoh 3b

#include<stdio.h>

#include<conio.h>

#include<alloc.h>

#define MAX 10

main()

{

float *data;

int bilangan,i=0;

printf("berapa banyak bilangan? ");

scanf("%d", &bilangan);

data=(float*)malloc(bilangan*sizeof(float));

do{

printf("masukan nilai dari array %d: ",i);

scanf("%f",data=data+1);

i=i+1;

}while ((i!=10)&&(i<bilangan));

printf("\n");

for(i=0;i<bilangan;i++)

printf("%.2f\n",data=data+i);

Page 65: Laporan Algo 2

printf("\n");

getch();

return 0;

}

Analisis : Program pada contoh ketiga ini sama dengan program sebelumnya namun pada program ini kita menggunakan input dengan Array sehingga mendapatkan program yang sedikit berbeda namau dengan fungsi yang hampir sama dengan program sebelumnya.

Contoh 4

Page 66: Laporan Algo 2

#include <stdio.h>

#include <conio.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();

Page 67: Laporan Algo 2

return 0;

}

void cetak_awal(void)

{

printf("array[0]=%d\n",array[0]);

printf("*array=%d",*array);

}

Page 68: Laporan Algo 2

Analisis : Pada contoh ke empat ini kita masih menggunkan bahasa pemrograman pointer ,kita belajar untuk menampilkan output berupa data dan letak data yang diletakan pada tempat tertentu.

Contoh 5

#include<stdio.h>

void main(){

char nama[20];

nama[0]='T';

nama[1]='a';

nama[2]='o';

nama[3]='p';

nama[4]='i';

nama[5]='k';

nama[6]='H';

nama[7]='i';

nama[8]='d';

Page 69: Laporan Algo 2

nama[9]='a';

nama[10]='y';

nama[11]='a';

nama[12]='t';

nama[13]='u';

nama[14]='l';

nama[15]='l';

nama[16]='o';

nama[17]='h';

nama[18]='\0';

printf("%s\n",nama);

nama[6]='\0';

printf("%s\n",nama);

}

Page 70: Laporan Algo 2

Analisis : pada contoh kelima ini belajar untuk menampilkan beberapa data dari keseluruhan data yang kita input,contohnya pada praktikum ini saya memasukan data Taopik Hidyatulloh dan menampilkan Taopik saja.

Contoh 6

#include<stdio.h>

#include<string.h>

void main(){

char namaKu[256]="Budiman";

char namaSaya[256]="12345678901234567890";

int umurSaya=35;

strncpy(namaSaya,"Bukan Budiman",13);

printf("%s\n",namaSaya);

Page 71: Laporan Algo 2

strncpy(namaSaya,"Adi",4);

printf("%s\n",namaSaya);

strncpy(namaSaya,namaKu,256);

printf("%s\n",namaSaya);

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

printf(namaSaya);

}

Page 72: Laporan Algo 2

Analisis : Pada contoh ke enam ini kita mempelajari bagaimana untuk menampilkan output

dalam dua kalimat sekaligus,dalam program ini kita belajar untuk menyatukan dua inputan data sekaligus dalam satu output.

Contoh 7

#include<stdio.h>

Page 73: Laporan Algo 2

#include<string.h>

void main(){

char nama[11];

printf("silahkan masukan nama anda : ");

fgets(nama,11,stdin);

printf("selamat pagi,%s.\n",nama);

printf("%s mempunyai 1285 e-mail baru pagi ini.",nama);

}

Analisis : Pada contoh ke tujuh ini kita mempelajari tipe data string,pada contoh kali ini kita hanya membuat program sederhana dengan menggunkan tipe data string,kita hanya menampilkan kembali data yang kita masukan pada input tanpa ada proses .

Page 74: Laporan Algo 2

Contoh 8

#include<stdio.h>

#include<string.h>

void main(){

char nama[11];

int i,max=10;

do{

printf("silahkan masukan nama anda : ");

fgets(nama,11,stdin);

fflush(stdin);

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

if(nama[i]=='\n'){

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 1285 e-mail baru pagi ini.",nama);

Page 75: Laporan Algo 2

}

Analisis : Program kali ini sama dengan program sebelumnya ,hanya saja pada program ini menggunakan bahasa pemrograman if sehingga program ini berbeda dengan program sebelumnya secara bahasa pemrograman namun memiliki fungsi yang sama.

Contoh 9

#include<stdio.h>

#include<string.h>

void main(){

Page 76: Laporan Algo 2

char namaLengkap [256];

char *namaDepan="Kyai ";

char *namaTengah="Ahmad ";

char *namaBelakang="Dahlan ";

strcat(namaLengkap,namaDepan);

printf("%s\n",namaLengkap);

strcat(namaLengkap,"");

strcat(namaLengkap,namaTengah);

printf("%s\n",namaLengkap);

strcat(namaLengkap,"");

printf("%s\n",strcat(namaLengkap,namaBelakang));

}

Page 77: Laporan Algo 2

Analisis : Pada program kali ini kita kita belajar untuk menampilkan data dengan menggunakan strcat.Dengan menggunakan strcat kita dapat menampilkan data dengan character yang unik.dan setiap kali kita menjalankan program ini kita mendapatkan character yang berbeda-beda.

Page 78: Laporan Algo 2

Contoh 10

#include<stdio.h>

#include<string.h>

void main(){

char namaLengkap[]="Kyai Ahmad Dahlan";

char namaDicari[]="Dahlan";

if(strstr(namaLengkap,namaDicari)){

printf("%s terdapat dalam %s",namaDicari,namaLengkap);

}}

Analisis : Pada program kali ini kita belajar membuat program untuk mendeteksi beberapa krakter dalam sekumpulan karakter,kita dapat menggunakan bahasa pemerograman if else untuk membuat program ini.

Page 79: Laporan Algo 2

Contoh 11

#include<stdio.h>

#include<string.h>

#include<stdlib.h>

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-i!=0){

temp[ptemp++]='.';

}

Page 80: Laporan Algo 2

j--;

}

ptemp--;

p=0;

while(ptemp>=0)

i[p++]=temp[ptemp--];

i[p]=0;

}

main (){

char strbil[256],*error;

double bil;

do{

printf("silahkan masukkan 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);

}

Page 81: Laporan Algo 2

Analisis : Pada program kali ini kita membuat program yang dapat memberikan tanda “.” Setiap tiga bilangan yang kita masukan.Kita dapat membuat program ini menggunakan bahasa pemerograman while do.

Page 82: Laporan Algo 2

Lat 1

#include<stdio.h>

#include<conio.h>

#include<ctype.h>

#include<string.h>

void ambilstring(void);

void tampil(void);

int hitung_karakter(int l_teks);

char angka[]={'0','1','2','3','4','5','6','7','8','9','\0'};

char h_vokal[]={'a','i','u','e','o'};

char teks[256];

int vokal=0;

int konsonan=0;

int bilangan=0;

int spasi=0;

int lainnya=0;

int l_teks,i;

void main()

{

gotoxy(10,1);

printf("*****************************************************\n");

gotoxy(12,2);

Page 83: Laporan Algo 2

printf("PROGRAM MENENTUKAN JUMLAH KONSONAN, VOKAL, SPASI\n");

gotoxy(21,3);

printf("BILANGAN, DAN KARAKTER LAINNYA.\n");

gotoxy(10,4);

printf("*****************************************************\n\n\n");

ambilstring();

hitung_karakter(l_teks);

tampil();

getch();

}

void ambilstring(void)

{

printf("masukkan kalimat yang anda inginkan\n");

scanf("%[^\n]",&teks);

l_teks=strlen(teks);

}

int hitung_karakter(int l_teks)

{

for (i=0;i<l_teks;i++)

{

teks[i]=(tolower(teks[i]));

int j;

for(j=0;j<10;j++)

Page 84: Laporan Algo 2

{

if(teks[i]==h_vokal[j])

vokal=vokal+1;

}

for(j=0;j<10;j++)

{

if(teks[i]==angka[j])

bilangan=bilangan+1;

}

if (teks[i]==(' '))

spasi=spasi+1;

if((teks[i]>=65)&&(teks[i]<=90)&&

(teks[i]!=h_vokal[0])&&

(teks[i]!=h_vokal[1])&&

(teks[i]!=h_vokal[2])&&

(teks[i]!=h_vokal[3])&&

(teks[i]!=h_vokal[4]))

{ konsonan=konsonan+1; }

lainnya=l_teks-(konsonan+vokal+spasi+bilangan);

}

}

void tampil(void)

Page 85: Laporan Algo 2

{

printf("\n jumlah karakter pada teks adalah %d",l_teks);

printf("\n jumlah konsonan adalah %d",konsonan);

printf("\n jumlah vokal adalah %d",vokal);

printf("\n jumlah bilangan adalah %d",bilangan);

printf("\n jumlah spasi adalah %d",spasi);

printf("\n jumlah lainnya adalah %d",lainnya);

}

Page 86: Laporan Algo 2