Thanks've come to visit my blog, you can know everyday I'm, I'm feeling and experience it all. excuse me if I have offended in the blog or whatever it is you could comment:) if my blog more interesting for you , you can klik . "like this , amazing , etc" :)

Jumat, 04 Februari 2011

Pemrograman Terstruktur (1)

Ini adalah program untuk mencari bilagan prima dengan algoritma "Sieve of Aristoteles", yaitu dengan mencari bilangan prima dan menghapus semua kelipatan bilangan prima tersebut, cara ini memakan waktu yang relatif lebih singkat dibanding cara pembagian dan sisa pembagian, namun di sini efek yang lain adalah pengalokasian memory pada array yang cukup banyak.

Berikut adalah program dengan implementasi bahasa C++

#include
#include
using namespace std;

int main()
{
int batas;
cout << "Masukkan batas bilangan : "; cin >> batas;

bool* angka = new bool[batas+1];
for(int i=0;i<=batas;i++)
{
angka[i]=true;
}

// initialisasi awal
angka[0]=false;
angka[1]=false;

for(int i=0;i<=batas;i++)
{
if(angka[i])
{
int j=i;
while(j<=batas)
{
j+=i;
if(j<=batas)
{
angka[j]=false;
}
}
}
}

for(int i=0;i<=batas;i++)
{
if(angka[i])
{
cout << i << " ";
}
}
cout << endl;

delete angka;
system("pause");
return 0;
}

Pemrograman Tersturktur

Ini adalah salah satu program dengan memanfaatkan fasilitas Array pada java, yaitu segitiga pascal, pertama-tama saya akan jelaskan terlebih dahulu, apa itu Array.

Array adalah sebuah cara penyimpanan banyak variabel menjadi 1 kelompok variabel, namun di sini Array hanya bisa menampung satu jenis tipe data saja. Analogi yang bisa dijadikan pembanding untuk Array adalah Sebuah kos2an cowok, yang berisi banyak kamar, di sini data yang dimasukkan adalah cowok, dan array adalah setiap kamar kamar pada kos2an, dan untuk mengakses kamar, kita dapat menyebutkan nomor kamar, sama halnya dengan Array, untuk mengakses data pada Array kita dapat menyebutkan index Array. Index Array dimulai dari 0 dan berakhir dengan size-1.

Kemudian saya akan jelaskan apa itu segitiga pascal (meskipun hampir semua juga sudah tau), segitiga pascal adalah sebuah segitiga bertingkat yang digunakan untuk menyelesaikan masalah Binomial.

contoh :
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1

dst

Berikut adalah source code dalam bahasa JAVA.

Source Code :

//SegitigaPascal.java
//===================================================================================

import javax.swing.JOptionPane;

/**
*
* @author p1p1n
*/
public class Main {

/**
* @param args the command line arguments
*/
public static void main(String[] args) {
// TODO code application logic here

int segi3 [] [] = new int [100][100];

String output = "";
int jumlahBaris = Integer.parseInt(JOptionPane.showInputDialog("Masukkan jumlah baris!")) + 1;

for(int i=0; i();
if(i==0)
{
segi3[i][0] = 1;
continue;
}
for(int j=0; j {
if(j==0 || j==(i-1))
{
segi3[i][j] = 1;
}
else
{
segi3[i][j] = segi3[i-1][j-1] + segi3[i-1][j];
}
}
}

// Printing segitiga pascal
for(int i=0; i < laen="0;" br=""> output += " ";
for(int j=0; j {
output += segi3[i][j] + " ";
}
output += "\n";
}

JOptionPane.showMessageDialog(null,output,"Hasil",JOptionPane.INFORMATION_MESSAGE);
}
}

Tipe Data, Perulangan, & Percabangan : Tipe Data & Fungsi Dasar

1. Sebutkan jenis-jenis tipe data yang anda ketahui (minimal 4) beserta lebar jangkauannya dan format yang digunakan untuk menampilkan ke layar! Jelaskan perbedaan masing-masing secara umum!

a)   Integer   :
  • Tipe data yang digunakan untuk memproses dan juga untuk   mengeluarkan output yang berupa data bertipe bulat.
  • Mempunyai jangkauan  -32.768 hingga 32.767
  • Format yang digunakan untuk menampilkan ke layar “int”.
b)      Karakter :
  • Tipe data yang megolah data untuk jenis huruf atau karakter  lain yang diapit tanda petik tunggal.
  • Mempunyai jangkauan –128 hingga 127.
  • Format yang digunakan untuk menampilkan layar “char”.

c)      Foating-point :
  • Tipe data yang digunakan untuk mengolah data dan menampilkan output berupa data pecahan.
  • mempunyai jangkauan 10-38 hingga 1038.
  • format yang digunakan untuk menampilkan ke layar ”float”.
d)     Long-float :
  • Tipe data yang mempunyai kemampuan menyimpan dan mengolah data berupa pecahan dengan ketelitian ganda.
  • Mempunyai jangkauan 10-306 hingga 10306 .
  • Format untuk menampilakan ke layar”long ”.
2. Jelaskan kegunaan fungsi dasar berikut, berikan contoh penggunaan dari masing-masing:
  • printf()
  • scanf()
  • puts()

a. Fungsi printf( )
Merupakan fungsi yang paling umum digunakan dalam menampilkan   data. Berbagai jenis data dapat ditampilkan ke layar dengan menggunakan fungsi ini.
Contoh : printf  (“Tugas Pendahuluan”);
Berarti layar akan menampilkan tulisan Tugas Pendahuluan.
b. Fungsi scanf( )
Merupakan fungsi yang dapat digunakan untuk memasukkan berbagai jenis data.misalnya untuk memasukkan data jari-jari lingkaran pada program.
Contoh : scanf (“%d”, suhu celcius);
Berarti data nilai suhu celcius bertipe integer akan dimasukkan ke dalam program ini.
c. Fungsi puts( )
Merupakan fungsi yang digunakan untuk menampilkan data string ke layar. Sifat fungsi ini, string yang ditampilkan secara otomatis akan diakhiri dengan \n (pindah baris atau sama dengan Enter).
Contoh : puts (“Masukkan nilaimu !”);
Berarti layer akan menampilkan tulisan Masukkan nilaimu ! sekaligus berpindah garis ke garis selanjutnya.

Tipe Data, Perulangan, & Percabangan : Perbedaan if, if else, & switch

3. Jelaskan kegunaan serta perbedaan dari pernyataan berikut, berikan contoh penggunaan dari masing-masing:
  • if
  • if else
  • switch
a. If
Berfungsi untuk menentukan perintah mana yang akan digunakan dalam artian jika pernyataan tersebut bernilai benar maka akan dijalankan perintahnya. Jika salah maka tidak dapat dijalankan.
Contoh Program :

#include<stdio.h>

main()

{

double total_pembelian, korting;

printf("Total pembelian : Rp. ");

scanf("%lf", &total_pembelian);

korting = 0;

if (total_pembelian >= 50000)

korting = 0.05*total_pembelian;

printf("Besarnya korting : Rp. %2lf\n", korting);

}
Berarti  tak ada korting kalau total pembelian kurang dari 50.000. dan bila total pembelian lebih dari sama dengan 50.000, korting yang diterima sebesar 5% dari total pembelian.
b. If…Else
Berfungsi melibatkan pernyataan majemuk yaitu pernyataan A dan B. Jika pernyataan bukan merupakan pernyataan A, maka yang akan dijalankan merupakan pernyataan B.
Contoh Program :

#include<stdio.h>

main()

{

int bilangan;

printf("Masukkan sebuah nilai bilangan bulat: ");

scanf("%d", &bilangan );

if  (bilangan %2)

{

printf ("Nilai %d tidak habis dibagi 2\n", bilangan);

puts ("Karena itu termasuk bilangan ganjil");

}

else

{

printf ("Nilai %d habis dibagi 2\n", bilangan);

puts ("Karena itu termasuk bilangan genap");

}

}
Berarti program ini akan menentukan bilangan ganjil atau genap berdasarkan logika bilangan bulat jika tidak dapat dibagi 2 disebut bilangan ganjil, sedangkan kalua dapat dibagi 2 disebut bilangan genap. Bila bila pernyataan pertama benar maka akan dieksekusi, namun jika salah maka pernyataan kedua yang akan dieksekusi.
c. Switch
Merupakan pernyataan yang dirancang khusus untuk mengambil keputusan yang melibatkan sejumlah alternative.
Contoh Program :

#include <stdio.h>

main()

{

int kode_hari;

puts ("Menentukan Nama hari :\n");

puts ("1 > Senin       4 > Kamis          7 > Minggu");

puts ("2 > Selasa      5 > Jumat                   ");

puts ("3 > Rabu        6 > Sabtu                   ");

printf ("\nMasukksn kode hari yang anda inginkan (1 sampai 7) !");

scanf ("%d", &kode_hari);

switch (kode_hari)

{

case 1:

puts ("Hari Senin");

break;

case 2:

puts ("Hari Selasa");

break;

case 3:

puts ("Hari Rabu");

break;

case 4:

puts ("Hari Kamis");

break;

case 5:

puts ("Hari Jumat");

break;

case 6:

puts ("Hari Sabtu");

break;

case 7:

puts ("Hari Minggu");

break;

default :

puts ("Maaf, Kode yang anda masukkan salah !");

}

}

Tipe Data, Perulangan, & Percabangan : Perbedaan do-while, while, for, break, continue, & goto

4. Jelaskan perbedaan dari pernyataan do-while, while, for, break, continue, goto! Berikan contoh penggunaan dari masing-masing pernyataan!

a. Pernyataan Do…While
Digunakan untuk menjalankan suatu pernyataan lalu diuji apakah kondisi sudah bernilai benar, tapi jika bernilai salah maka pernyataan tidak dijalankan. Pada dasarnya perulangan do….while sama saja dengan perulangan while, hanya saja pada proses perulangan dengan while, seleksi berada di while yang letaknya di atas sementara pada perulangan do….while, seleksi while berada di bawah batas perulangan. Jadi dengan menggunakan struktur do…while sekurang-kurangnya akan terjadi satu kali perulangan.
Contoh Program :

#include<stdio.h>

main()

{

int pencacah;

pencacah = 0;

do

{

puts("C-16 Teknik Informatika");

pencacah++;

}

while(pencacah < 7);

}
Berarti program ini akan menampilkan tulisan C-16 Teknik Informatika secara berulang – ulang dengan batas 7 tulisan .
b. Pernyataan While
Perulangan while banyak digunakan pada program yang terstruktur. Perulangan ini banyak digunakan bila jumlah perulangannya belum diketahui. Proses perulangan akan terus berlanjut selama kondisinya bernilai benar (true) dan akan berhenti bila kondisinya bernilai salah atau batas yang ditentukan telah terpenuhi..
Contoh Program :

#include<stdio.h>

main()

{

int I, Jum;

I = 7; Jum = 0;

while (I--)

{

printf("%d", I);

Jum = Jum * I;

}

printf("\n%d", Jum);

}
Berarti program ini akan membuat pola bilangan decimal 6543210 dengan formula Jum =Jum * I dimana Jum dan I mempunyai batas yang telah ditentukan sebelumnya.
c. Pernyataan For
Merupakan salah satu bentuk fungsi perulangan, digunakan untuk melaksanakan pernyataan berulang kali terhadap sejumlah nilai yang telah ditetapkan (jumlah putaran harus ditetapkan terllebih dahulu).
Contoh Program :

#include<stdio.h>

main()

{

int bilangan;

for(bilangan = 20; bilangan <= 100; bilangan += 10)

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

}
Berarti program ini akan mengurutkan bilangan dengan selisih 10 dari 20 sampai 100.
d. Pernyataan Break
Pernyataan yang berfungsi untuk melepaskan diri dari loop for, do-while, dan while. Sedangkan pada switch yaitu untuk menuju ke akhir (keluar) struktur switch. Kalau pernyataan break dijalankan maka eksekusi akan dilanjutkan ke pernyataan yang terletak sesudah akhir tubuh loop.
Contoh Program :

#include<stdio.h>

#include<conio.h>

#define ENTER '/r'

main()

{

char karakter;

puts("Anda bisa mengetik apa saja");

puts("Sampai tombol enter anda tekan.\n");

for(; ;) 

{

karakter = getche();

if(karakter == ENTER)

break;

}

}
Berarti perintah break membuat program berhenti menulis setelah tombol ENTER.
e. Pernyataan Continue
Digunakan untuk mengarahkan eksekusi ke proses berikutnya pada loop yang sama. Pada do-while dan while, pernyatan continue menyebabkan eksekusi menuju kondisi pengujian pengulangan. Namun, pada loop for, pernyataan continue menyebabkan bagian penaik variable pengendali loop dikerjakan dan kondisi untuk keluar dari loop for diuji kembali.
Contoh Program :

#include<stdio.h>

main()

{

int jum_data = 0;

int nomor = 1;

float total_nilai = 0;

float nilai, rata_rata;

while( 1 )

{

printf("Data ke-%d : ", nomor);

scanf("%f", &nilai);

if(nilai > 100)

continue;

if(nilai < 0)

{

jum_data = nomor - 1;

rata_rata = total_nilai / jum_data;

break;

}

total_nilai += nilai;

nomor++;

}

printf("Jumlah data = %d\n", jum_data);

printf("Rata-rata   = %g\n", rata_rata);

}
Berarti program ini akan mengulangi pemasukan input dan baru berakhir setelah input yang dimasukkan negative ( diluar batas).
f.  Pernyataan Goto
Pernyataan goto merupakan instruksi untuk mengarahkan eksekusi ke pernyataan yang diawali dengan suatu label. Label sendiri berupa suatu pengenal (identifier) yang diikuti dengan tanda titik koma(;).
Contoh Program :

#include<stdio.h>

main()

{

int pencacah = 1;

cetak :

puts("cygnus");

if(++pencacah <= 10)

goto cetak;

}
Berarti goto akan membawa string Cygnus ke perintah cetak yang ada di atas setelah perintah perulangan.

Tipe Data, Perulangan, & Percabangan : Program Nama Bulan dengan switch-case & Program Bilangan Faktorial dengan for maupun while

5. Buatlah program menggunakan statement switch…case untuk mengetahui nama bulan jika diinputkan angka, contoh :
input  = 5
output=Mei

#include <stdio.h>

main()

{

int kode_bulan;

puts ("Menentukan Nama Bulan :\n");

puts ("1 > Januari     5 > Mei          9 > September");

puts ("2 > Pebruari    6 > Juni        10 > Oktober  ");

puts ("3 > Maret       7 > Juli         11 > November ");

puts ("4 > April       8 > Agustus 12 > Desember ");

printf ("\nMasukksn kode bulan yang anda inginkan (1 sampai 12) !");

scanf ("%d", &kode_bulan);

switch (kode_bulan)

{

case 1:

puts ("Bulan Januari");

break;

case 2:

puts ("Bulan Pebruari");

break;

case 3:

puts ("Bulan Maret");

break;

case 4:

puts ("Bulan April");

break;

case 5:

puts ("Bulan Mei");

break;

case 6:

puts ("Bulan Juni");

break;

case 7:

puts ("Bulan Juli");

break;

case 8:

puts ("Bulan Agustus");

break;

case 9:

puts ("Bulan September");

break;

case 10:

puts ("Bulan Oktober");

break;

case 11:

puts ("Bulan November");

break;

case 12:

puts ("Bulan Desember");

break;

default :

puts ("Maaf, Kode yang anda masukkan salah !");

}

}
6. Buat program untuk menghitung faktorial sebuah bilangan dengan menggunakan:
a. Perulangan for

#include <stdio.h>

main()

{

int N,I;

long int Faktorial = 1;

printf ("Masukkan angka yang ingin anda faktorialkan :");

scanf ("%d",&N);

for (I=2;I<=N;I++) Faktorial = Faktorial*I;

printf ("%d Faktorial = %ld", N, Faktorial);

}
b. Perulangan while

#include<stdio.h>

#include<conio.h>

void main()

{

int x,y,hasil;

gotoxy(35,0);puts("FAKTORIAL ANGKA");

printf("\n\n");

printf("Masukkan angka:");scanf("%d",&x);

printf("\nberikut adalah faktorialnya:\n");

printf("%d",x);y=1;

while(x>1)

{printf("x");printf("%d",x-1);hasil=y*x;y=hasil;

x--;

}

printf("=");

printf("%d",hasil);

}

Tipe Data, Perulangan, & Percabangan : Program Segitiga Atas & Segitiga Bawah

1. Buatlah bentuk segitiga atas dan segitiga bawah dengan menggunakan konsep percabangan dan perulangan. :
a. Tabel Pertambahan
  • Segitiga Atas

#include<stdio.h>

#include<conio.h>

main()

{    int baris, kolom, max, hasil, kosong;

printf("Masukkan nilai input:");

scanf("%d", &max);

kosong=max;

for(baris=1; baris<=max; baris++)

{

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

{

if(baris==1)

printf("%d\t", kolom);

if(baris>=2 && kolom==1)

printf("%d\t", baris);

if(baris>=2 && kolom>=2)

{      hasil=baris+kolom;

if(hasil>kosong+1)

printf(" \t");

else

printf("%d\t", hasil);

}

}printf("\n");

}getch();

}

  • Segitiga Bawah

#include<stdio.h>

#include<conio.h>

main()

{

int baris, kolom, max, hasil, kosong;

printf("Masukkan nilai input:");

scanf("%d", &max);

kosong=max;

for(baris=1; baris<=max; baris++)

{

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

{

if(baris==1)

printf("%d\t", kolom);

if(baris>=2 && kolom==1)

printf("%d\t", baris);

if(baris>=2 && kolom>=2)

{

hasil=baris+kolom;

if(hasil<=kosong+1)

printf(" \t");

else

printf("%d\t", hasil);

}

}

printf("\n");

}

getch();

}
b. Tabel Perkalian
  • Ø Segitiga Atas

#include <stdio.h>

#include <math.h>

#include <conio.h>

void main ()

{

int baris, kolom, kosong,max;

double hasil;

printf("masukkan input:");

scanf("%d",&max);

kosong = max;

for(baris=1;baris<=max;baris++)

{

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

{

if(baris == 1)

printf("%d\t",kolom);

if(baris >= 2&& kolom == 1)

printf("%d\t",baris);

if(baris >= 2&& kolom >= 2)

{

hasil=baris*kolom;

if(kolom > kosong)

printf(" \t");

else

printf("%.lf\t",hasil);

}

}printf("\n");

kosong--;

}

getch();

}
  • Ø Segitiga Bawah

#include <stdio.h>

#include <math.h>

#include <conio.h>

void main ()

{

int baris, kolom, kosong,max;

double hasil;

printf("masukkan input:");scanf("%d",&max);

kosong = max;

for(baris=1;baris<=max;baris++)

{

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

{

if(baris == 1)

printf("%d\t",kolom);

if(baris >= 2&& kolom == 1)

printf("%d\t",baris);

if(baris >= 2&& kolom >= 2)

{

hasil=baris*kolom;

if(kolom <= kosong)

printf(" \t");

else

printf("%.lf\t",hasil);

}

}printf("\n");

kosong--;

}getch();

}

Fungsi & Array : Perbedaan Fungsi & Prosedur, Manfaat Fungsi, Pass by Value Vs. Pass by Reference, & Return Value

a. Apa yang dimaksud dengan fungsi dan prosedur?Jelaskan apa perbedaanya!
  • Fungsi adalah suatu bagian dari program yang dimaksudkan untuk mengerjakan suatu tugas tertentu dan letaknya dipisahkan dari bagian program yang dijalankan.
  • Prosedur adalah suatu bagian yang digunakan untuk mengenali subprogram di dalam suatu program.
  • Perbedaan fungsi dan prosedur :
  • Fungsi dapat mengembalikan suatu nilai yang dapat digunakan dalam ekspresi. Sedangkan, prosedur tidak memiliki nilai yang berhubungan dengan namanya.
  • Fungsi digunakan untuk membuat operasi-operasi yang tidak ada dalam fungsi utama. Sedangkan, prosedur digunakan untuk menstrukturkan suatu program dan untuk memperbaiki kejelasan dan keumumannya.
b. Jelaskan apa manfaat penggunaan fungsi dalam pemrograman!
Manfaat penggunaan fungsi dalam pemrograman adalah untuk memudahkan pembacaan suatu program. Selain itu fungi dibuat untuk mengurangi terjadinya pengkodean ulang, serta dapat mengembangkan program menjadi lebih baik.
c. Jelaskan bagaimana fungsi bisa menerima variabel inputan (secara ‘pass by value’ dan ‘pass by reference’)! Dan jelaskan perbedaan keduanya!
  • Pemanggilan Secara Nilai (‘Pass by Value’) :
  • Call by value akan menyalin nilai dari parameter aktual ke parameter formal.
  • Yang dikirimkan ke fungsi adalah nilai dari datanya, bukan alamat 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.
  • Pemanggilan Secara Referensi (‘Passl 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.
d. Jelaskan bagaimana fungsi bisa menghasilkan output (return value)!
Untuk menghasilkan output (return value), fungsi membutuhkan input yang berupa argument atau para meter. Argument dan parameter memungkinkan terjadinya komunikasi antara fungsi utama dan fungsi-fungsi lain dalam program sehingga menjadi lebih fleksibel, karena daftar argument memungkinkan fungsi dapat memanipulasi data yang berbeda setiap kali fungsi tersebut dipanggil.

Fungsi & Array : Macam-Macam Array

2. Sebutkan dan jelaskan macam-macam array!
  • Array Satu Dimensi
Array satu dimensi adalah suatu array yang terdiri dari 1 subskrip array, yaitu jumlah data maksimum.
Bentuk umum :
Tipe_data nama_array[jumlah_maks_data];
Contoh :
int Nilai[5];        nilai [1]   nilai [2]      nilai [3]       nilai [4]     nilai [5]
70 80 82 60 75
Catatan :
String juga sebenarnya merupakan array yang bertipe karakter. Jumlah elemen array menyatakan jumlah string.
  • Array Dua Dimensi
Array dua dimensi adalah suatu  array yang terdiri dari 2 subskrip, yaitu jumlah elemen baris dan jumlah  elemen kolom.
Bentuknya dapat berupa matriks atau tabel.
  • Deklarasi array :
Tipe_array nama_array[baris][kolom];
  • Cara mengakses array :
Untuk mengakses array, misalnya kita ingin mengisi elemen array baris 2 kolom 3 dengan 10 maka perintahnya adalah sbb :
X[1][2] = 10;
  • Untuk mengisi dan menampilkan isi elemen array ada dua cara yaitu :
  • Row Major Order (secara baris per baris)
  • Column Major Order (secara kolom per kolom)
  • Array Multidimensi
Array multidimensi adalah suatu array yang mempunyai subskrip lebih dari dua. Bentuk pendeklarasian array sama saja dengan array dimensi satu maupun array dimensi dua.
Bentuk umumnya yaitu :
tipe_array nama_array[ukuran1][ukuran2]…[ukuranN];
Contoh :
float X[2][4][3];
X[0][0][0] X[0][0][1] X[0][0][2] X[1][0][0] X[1][0][1] X[1][0][2]
X[0][1][0] X[0][1][1] X[0][1][2] X[1][1][0] X[1][1][1] X[1][1][2]
X[0][2][0] X[0][2][1] X[0][2][2] X[1][2][0] X[1][2][1] X[1][2][2]
X[0][3][0] X[0][3][1] X[0][3][2] X[1][3][0] X[1][3][1] X[1][3][2]

Fungsi & Array : Keuntungan Array & Fungsi yang Mengembalikan Nilai Terbesar dari 3 Integer

3. Jelaskan keuntungan dari penggunaan Array sebagai tipe data dibandingkan dengan penggunaan tipe data yang lain!
Array dapat digunakan untuk menyimpan berbagai jenis data (char, int, float, dll), bisa digunakan untuk lebih dari satu dimensi, dan tidak perlu diakhiri dengan karakter NULL.
4. Buatlah fungsi yang mengembalikan nilai terbesar dari 3 buah integer!
Algoritma Program :
a)      Program memberikan instruksi kepada user untuk memasukkan input berupa 3 angka.
b)      Program memasukkan input dengan alamat satu, dua, tiga.
c)      Program memanggil fungsi itung yang telah dideklarasikan sebelumnya.
d)     Fungsi itung mencari angka terbesar dari 3 angka tersebut .
e)      Fungsi itung mengembalikan nilai (return value) terbesar ke fungsi utama.
f)       Program menampilkan angka terbesar dari 3 angka input kepada user.
Source code :

#include <conio.h>

#include <stdio.h>

int satu,dua,tiga;

int main()

{

printf("masukkan 3 nilai\n");

printf("nilai pertama: \n");

scanf("%d",&satu);

printf("nilai kedua: \n");

scanf("%d",&dua);

printf("nilai ketiga: \n");

scanf("%d",&tiga);

int coba = itung(satu,dua,tiga);

printf("mengembalikan nilai terbesar: %d", coba);

getch();

return 0;

}

int hitung(int angka1, int angka2, int angka3)

{

int terbesar = 0;

terbesar = angka1;

if(angka2 > terbesar)

{

terbesar = angka2;

}

if(angka3 > terbesar)

{

terbesar = angka3;

}

return terbesar;

}

Fungsi & Array : Nilai Variabel, Array Sebagai Parameter, & Passing Array

5. Anggap a adalah variabel :
char a[15]=”informatika”;
char b = a[5];
char c = a[12];
a.)Apakah isi dari b? Mengapa begitu?
Variabel b berisi karakter m. Hal ini terjadi karena perintah char b = a[5] akan membuat variabel b terisi dengan karakter berindeks 5 dari variabel a. Karena nomor indeks dimulai dari 0 maka b akan terisi dengan karakter keenam yaitu m.
b.)    Apakah isi dari c? Dan apa maksudnya?
Variabel c tidak terisi apa-apa. Hal ini terjadi karena perintah char c = a[12] akan membuat variabel c terisi karakter berindeks 12 dari variabel a. Sedangkan, varaiabel a hanya memiliki karakter berindeks 0 – 10.
6. Apakah yang dimaksud dengan array sebagai parameter? Bagaimana cara mempassing array sebagai parameter fungsi? berikan contohnya?
Array sebagai parameter yaitu program yang digunakan untuk memasukkan sejumlah data, kemudian data tersebut diurutkan dan dicetak ke layar. Untuk melakukan passing yang dipakai adalah buble sort. Algoritma pada metoda pengurutan ini :
a)      Atur i bernilai 0.
b)      Bandingkan x[i] dengan x[j], dengan j berjalan dari i+1 sampai n-1. pada setiap perbandingan, jika x[i] > x[j], maka isi x[i] dan x[j] ditukarkan.
c)      Naikkan nilai i sebesar satu.
d)     Bila i < (n-1), ulangi mulai langkah 2.
Catatan  :  i : nilai array
X : nama array untuk menyimpan data.
N : jumlah data.
Contoh program :

#include<stdio.h>

#include<conio.h>

#define MAKS 20

void pemasukan_data (float x[], int *pjumlah);

void pengurutan_data (float x[], int jumlah);

void penampilan_data (float x[], int jumlah);

main()

{

float data[MAKS];

int jum_data;

pemasukan_data(data, &jum_data);

pengurutan_data(data, jum_data);

penampilan_data(data, jum_data);

}

void pemasukan_data(float x[], int *pjumlah)

{

int i, jum;

printf("jumlah data: ");

scanf("%d", &jum);

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

{

printf("data ke-%d: ", i+1);

scanf("%f", &x[i]);

}

*pjumlah = jum;

}

void pengurutan_data(float x[], int jumlah)

{

int i, j;

float smtr;

for(i=0; i<jumlah-1; i++)

for(j=i+1; j<jumlah; j++)

{

smtr = x[i];

x[i] = x[j];

x[j] = smtr;

}

}

void penampilan_data(float x[], int jumlah)

{

int i;

puts("\n data setelah diurutkan : \n");

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

printf("data ke-%d, %g\n", i+1, x[i]);

getch ();

}