Saturday, January 7, 2017

Bab 3. PHP/MySQL Untuk Pemula


Angka



Menghasilkan suatu rentang angka
Pada kasus ini, Anda akan menggunakan dua titik-akhir dan menghasilkan suatu daftar angka yang ada di antara kedua titik-akhir tersebut. Anda akan menggunakan fungsi PHP range().

<?php
// rentang_angka.php
// mendefinisikan batas-batas rentang
$x = 10;
$y = 36;

// menghasilkan rentang sebagai suatu array
// hasil: (10, 11, 12...35, 36)
$rentang = range($x, $y);
print_r($rentang);
?>

Fungsi range() menerima dua argumen, yakni batas bawah dan batas atas. Fungsi ini menghasilkan sebuah array yang memuat semua integer yang ada di antara kedua batas tersebut, termasuk integer pada kedua batas itu. Anda dapat pula menciptakan sebuah rentang angka yang memiliki nilai langkah tertentu, dengan melewatkan nilai langkah kepada fungsi range() sebagai argumen ketiga (opsional). Contoh berikut mengilustrasikan hal ini.

<?php
// rentang_langkah.php
// mendefinisikan batas-batas rentang
$x = 10;
$y = 30;

// menghasilkan rentang sebagai suatu array
// memuat setiap angka ketiga
// hasil: (10, 13, 16, 19, 22, 25, 28)
$rentang = range($x, $y, 3);
print_r($rentang);
?>

Aplikasi sederhana dari fungsi range() adalah untuk menampilkan tabel perkalian. Kode berikut mengilustrasikan bagaimana melakukannya, dengan menghasilkan semua angka antara 1 dan 10 dan kemudian menggunakan angka-angka tersebut untuk menampilkan tabel perkalian untuk angka 5.

<?php
// tabel_perkalian.php
// menampilkan tabel perkalian
foreach (range(1, 10) as $angka) {
    echo "5 x $angka = " . (5 * $angka) . "\n";
}
?>


Membulatkan angka pecahan
Di sini, Anda akan membulatkan sebuah angka pecahan. Anda akan menggunakan fungsi round() untuk melakukannya.

<?php
// pembulatan_pecahan.php
// mendefinisikan angka pecahan
$angka = (2/3);

// membulatkan ke integer
// hasil: 1
$angkaBulat = round($angka);
echo $angkaBulat . "\n";

// membulatkan ke 1 dijit di belakang titik desimal
// hasil: 0.7
$angkaBulat = round($angka, 1);
echo $angkaBulat . "\n";

// membulatkan ke 3 dijit di belakang titik desimal
// hasil: 0.667
$angkaBulat = round($angka, 3);
echo $angkaBulat;
?>

Fungsi round() membulatkan sebuah angka menjadi angka dengan sejumlah dijit di belakang titik desimal. Pemanggilan round() tanpa argumen kedua opsional akan menghasilkan integer (0 dijit di belakang titik desimal). Ketika melakukan pembulatan menjadi integer, fungsi round() akan menghasilkan nilai integer terdekat. Untuk memaksa pembulatan menjadi nilai integer bawah atau atas, Anda bisa menggunakan fungsi floor() atau ceil(), sebagai berikut:

<?php
// pembulatan_atas_bawah.php
// mendefinisikan angka-angka pecahan
$angka = (1/3);
$r = round($angka);
$c = ceil($angka);
$f = floor($angka);

// hasil: "0 1 0"
echo "$r $c $f"
?>


Mencari nilai terendah dan tertinggi pada runtun tak-terurut
Di sini, Anda akan mencari nilai maksimum dan nilai minimum pada sebuah runtun angka yang tak-terurut.

<?php
// nilai_maks_min.php
// mendefinisikan deret angka
$deret = array(76, 7348, 56, 2.6, 189, 67.59, 17594, 2648, 1929.79,54, 329, 820, -1.10, -1.101);

// mengurutkan array
sort($deret);

// mengekstrak nilai maks/min dari array terurut
// hasil: "Nilai minimum adalah -1.101 "
$min = $deret[0];
echo "Nilai minimum adalah $min ";

// hasil: "Nilai maksimum adalah 17594"
$maks = $deret[sizeof($deret)-1];
echo "Nilai maksimum adalah $maks";
?>


Menguji angka genap atau angka ganjil
Pada kasus ini, Anda akan menguji apakah sebuah angka merupakan angka ganjil atau angka genap. Anda bisa menggunakan operator bitwise PHP & untuk melakukannya.

<?php
// uji genap_ganjil.php
// mendefinisikan angka
$angka = 31;

// menguji apakah angka genjil atau genap
// hasil: "Angka ganjil"
echo (1&$angka) ? "Angka ganjil" : "Angka genap";
?>

Kode alternatif yang bisa Anda pakai untuk menguji sebuah angka merupakan angka ganjil atau angka genap adalah sebagai berikut:

<?php
// uji_genap_ganjil2.php
// mendefinisikan angka
$angka = 10;

// menguji apakah angka mod 2 menghasilkan sisa atau tidak
// hasil: "Angka genap"
echo ($angka % 2) ? "Angka ganjil" : "Angka genap";
?>


Memformat angka dengan koma
Pada kasus ini, Anda akan membuat angka yang besar agar dapat lebih mudah dibaca dengan menggunakan koma untuk mengelompokkan kelompok-kelompok ribuan. Anda bisa menggunakan fungsi PHP number_format() untuk melakukannya.

<?php
// format_angka.php
// mendefinisikan sebuah angka besar
$angka = 3957459.7398;

// membulatkan dan memformat angka dengan koma
// hasil: "3,957,460"
$angkaDiformat = number_format($angka);
echo $angkaDiformat;
?>

Fungsi number_format() merupakan perangkat pembantu yang dapat dipakai ketika melakukan pemformatan integer atau angka pecahan besar. Ketika dipanggil dengan satu argumen, fungsi ini akan melakukan pembulatan (jika diperlukan) dan kemudian menyisipkan koma di antara tiap grup ribuan. Perhatikan bahwa keluaran fungsi merupakan sebuah string, bukan angka, jadi hasil tersebut tidak dapat dipakai untuk perhitungan numerik.

Jika Anda memiliki sebuah angka pecahan dan tidak menginginkan adanya pembulatan menjadi integer, Anda dapat melewatkan kepada number_format() sebuah argumen kedua, yang akan mengendalikan jumlah dijit yang ada di belakang titik desimal.

<?php
// format_angka2.php
// mendefinisikan sebuah angka
$angka = 3957459.7398;

// memformat angka dengan koma dan memiliki
// dua dijit di belakang titik desimal
// hasil: "3,957,459.74"
$angkaDiformat = number_format($angka, 2);
echo $angkaDiformat;
?>

Untuk angka-angka yang berlaku di Indonesia, Anda juga bisa menginginkan pemisah ribuan dan /atau titik desimal yang berbeda. Anda dapat melakukannya dengan melewatkan kepada fungsi number_format() dua argumen lain, yakni untuk pemisah desimal dan untuk pemisah ribuan. Contoh berikut mengilustrasikan hal ini:

<?php
// format_angka3.php
// mendefinisikan sebuah angka
$angka = 3957459.7398;

// memformat angka dengan pemisah desimal
// dan pemisah ribuan yang berbeda
// hasil: "3.957.459,74"
$angkaDiformat = number_format($angka, 2, ',', '.');
echo $angkaDiformat;
?>


Mengganjal angka dengan nol
Di sini, Anda akan memformat sebuah angka dengan nol-nol kepala atau nol-nol ekor. Anda akan menggunakan fungsi printf() atau sprintf() dengan penspesifikasi format yang sesuai.

<?php
// ganjal_nol.php
// hasil: 00012
printf("%05d", 12);

// hasil: 00169.000
printf("%09.3f", 169);

// hasil: 00003475.986000
printf("%015.6f", 3475.986);

// hasil: 74390.99
printf("%02.2f", 74390.98647);
?>


Mengkonversi basis bilangan
Di sini, Anda akan mengkonversi sebuah angka menjadi basis-basis yang berbeda, yakni basis biner, oktal, heksadesimal, atau lainnya. Anda akan menggunakan fungsi decbin(), decoct(), dexhec(), atau base_convert().

<?php
// konversi_basis_bilangan.php
// mendefinisikan sebuah angka
$angka = 100;

// konversi ke biner
// hasil: "Biner: 1100100 "
$bin = decbin($angka);
echo "Biner: $bin ";

// konversi ke oktal
// hasil: "Oktal: 144 "
$oct = decoct($angka);
echo "Oktal: $oct ";

// konversi ke heksadesimal
// hasil: "Heksadesimal: 64 "
$hex = dechex($angka);
echo "Heksadesimal: $hex ";

// konversi ke basis 6;
// hasil: "Basis 6: 244"
$basis6 = base_convert($angka, 10, 6);
echo "Basis 6: $basis6";
?>

Aplikasi dari konversi basis yang umum dijumpai adalah untuk mendapatkan nilai-nilai heksadesimal untuk kode warna RGB (red, green, blue) untuk halaman HTML. Contoh berikut mengilustrasikan hal ini.

<?php
// kode_warna_rgb.php
// fungsi untuk mengkonversi warna RGB menjadi
// nilai heksadesimal
function rgb2hex($r, $g, $b) {
  return sprintf("#%02s%02s%02s", dechex($r),
    dechex($g), dechex($b));
}

// hasil: "#00ff40"
$hex = rgb2hex(0,255,64);
echo $hex;
?>


Mengkonversi derajat dan radian
Di sini, Anda akan mengkonversi pengukuran sudut dari dari derajat menjadi radian, atau sebaliknya. Anda akan menggunakan fungsi PHP rad3deg() dan deg2rad().

<?php
// konversi_derajat_radian.php
// hasil: "90 derajat = 1.57079632679 radian "
$derajat = 90;
$radian = deg2rad($derajat);
echo "$derajat derajat = $radian radian ";

// hasil: "1.57079632679491 radian = 90 derajat"
$radian = 1.57079632679491;
$derajat = rad2deg($radian);
echo "$radian radian = $derajat derajat";
?>


Menghitung faktorial
Di sini, Anda akan menghitung faktorial atas sebuah angka. Anda akan menggunakan loop hitung-mundur dan mengaklikan angka tersebut dengan semua angka antara angka tersebut sampai satu.

<?php
// faktorial.php
// mendefinisikan sebuah angka
$angka = 5;

// menginisialisasi variabel
$faktorial = 1;

// menghitung faktorial
// dengan mengalikan angka tersebut dengan
// semua angka antara angka tersebut dan 1
// hasil: "Faktorial dari 5 adalah 120"
for ($x=$angka; $x>=1; $x--) {
    $faktorial = $faktorial * $x;
}
echo "Faktorial dari $angka adalah $faktorial";
?>


Menghitung logaritma
Di sini, Anda akan menghitung logaritma atas sebuah angka. Anda akan menggunakan fungsi PHP log() atau log10().

<?php
// hitung_algoritma.php
// menghitung log natural dari 6
// hasil: "Log natural dari 6 adalah 1.79175946923. "
$logBasisE = log(6);
echo "Log natural dari 6 adalah $logBasisE. ";

// menghitung log basis-10 dari 5
// hasil: "Log basis-10 dari 5 adalah 0.698970004336."
$logBasis10 = log10(5);
echo "Log basis-10 dari 5 adalah $logBasis10.";
?>


Menghitung nilai trigonometri
Di sini, Anda akan melakukan perhitungan trigonometrik, seperti menghitung sinus atau kosinus dari sebuah sudut. Anda akan menggunakan pelbagai fungsi trigonometrik PHP.

<?php
// trigonometri.php
// mendefinisikan sebuah sudut
$sudut = 45;

// menghitung sinus
// hasil: "Sinus: 0.850903524534 "
$sine = sin($sudut);
echo "Sinus: $sine \n";

// menghitung kosinus
// hasil: "Kosinus: 0.525321988818 "
$csine = cos($sudut);
echo "Kosinus: $csine \n";

// menghitung tangent
// hasil: "Tangent: 1.61977519054 "
$tangent = tan($sudut);
echo "Tangent: $tangent \n";

// menghitung arc sinus
// hasil: "Arc sinus: -1.#IND "
$arcSine = asin($sudut);
echo "Arc sinus: $arcSine \n";

// menghitung arc kosinus
// hasil: "Arc kosinus: -1.#IND "
$arcCsine = acos($sudut);
echo "Arc kosinus: $arcCsine \n";

// menghitung arc tangent
// hasil: "Arc tangent: 1.54857776147 "
$arcTangent = atan($sudut);
echo "Arc tangent: $arcTangent \n";

// menghitung sinus hiperbolik sine
// hasil: "Sinus hiperbolik: 1.74671355287E+019 "
$hypSine = sinh($sudut);
echo "Sinus hiperbolik: $hypSine \n";

// menghitung kosinus hiperbolik
// hasil: "Kosinus hiperbolik: 1.74671355287E+019 "
$hypCsine = cosh($sudut);
echo "Kosinus hiperbolik: $hypCsine \n";

// menghitung tangent hiperbolik
// hasil: "Tangent hiperbolik: 1 "
$hypTangent = tanh($sudut);
echo "Tangent hiperbolik: $hypTangent \n";
?>


Menghasilkan pengenal unik
Di sini, Anda akan menghasilkan sebuah pengenal numerik acak yang unik dan tidak dapat ditebak. Anda akan menggunakan kombinasi dari fungsi PHP uniqid(), md5(), dan rand().

<?php
// pengenal_unik.php
// menghasilkan ID unik dan acak
// hasil: "9f41529120ccec0855e2c75d13eb575d" (contoh)
$id = md5(uniqid(rand(), true));
echo $id;
?>


Menghasilkan angka acak
Di sini, Anda akan membangkitkan satu atau lebih angka acak. Anda akan menggunakan fungsi PHP rand().

<?php
// angka_acak.php
// membangkitkan sebuah angka acak
// hasil: 18785 (contoh)
echo rand();

// membangkitkan sebuah angka acak antara 0 dan 100
// hasil: 4 (contoh)
echo rand(0, 100);
?>

Untuk memperoleh angka pecahan acak, Anda bisa membagi angka acak yang dihasilkan dengan sebuah nilai yang besar. Fungsi getrandmax() merupakan pilihan yang baik. Fungsi ini menghasilkan nilai makasimum yang dapat dihasilkan oleh fungsi rand() pada sistem Anda. Contoh berikut mengilustrasikan hal ini.

<?php
// angka_pecahan_acak.php
// menghasilkan sebuah angka pecahan acak
// hasil: 0.97650074770348 (contoh)
echo rand()/getrandmax();
?>

Jika Anda memerlukan lebih dari satu angka acak, Anda bisa menggunakan fungsi rand() yang dikombinasikan dengan loop dan array. Berikut adalah contohnya.

<?php
// angka_acak_deret.php
// menghasilkan sebuah deret dengan 10 angka acak
// di antara 0 dan 100
// hasil: "12 95 88 87 61 49 61 4 99 75" (contoh)
for ($x=0; $x<10; $x++) {
    echo rand(0, 100) . " ";
}
?>


Menghasilkan angka prima
Pada kasus ini, Anda akan membangkitkan sebuah deret angka prima. Anda akan menggunakan Sieve of Erastosthenes untuk memfilter semua angka yang bukan prima dan yang prima.

<?php
// angka_prima.php
// menampilkan semua angka prima dari 2 sampai
// angka tertentu menggunakan Sieve of Erastothenes
function daftarPrima($akhir) {
    // menghasilkan sebuah array yang memuat
    // integer antara 2 sampai integer yang disediakan
    $sieve = range(2, $akhir);
     
    // membaca ukuran array
    $ukuran = sizeof($sieve);

    // mereset pointer array internal
    // agar menunjuk ke awal array
    reset($sieve);

      // beriterasi di dalam array
    while (list($kunci, $nil) = each($sieve)) {
        // untuk tiap elemen
        // periksa apakah elemen-elemen tersebut dapat
        // dibagi oleh angka tersebut
        // hapus elemen terkait dari array jika ya
        for ($x=$kunci+1; $x<$ukuran; $x++) {
            if ($sieve[$x] % $nil == 0) {
                unset($sieve[$x]);
            }
        }
    }
    // di akhir, elemen-elemen yang tertinggal
    // di dalam array adalah prima
    return $sieve;
}

// menampilkan semua prima antara 2 dan 100
// hasil: "2 3 5 7...83 89 97"
echo implode(" ", daftarPrima(100));
?>

Berikut adalah kode untuk memeriksa apakah sebuah angka adalah angka prima atau tidak.

<?php
// prima_atau_tidak.php
// memeriksa apakah sebuah angka adalah
// angka prima atau tidak
function ujiPrima($angka) {
    // membagi tiap angka
    // dengan semua angka yang lebih rendah darinya
    // (kecuali 1) jika minimum salah satu operasi
    // tersebut tidak menghasilkan sisa maka
    // angka tersebut bukan prima
    for ($x=($angka-1); $x>1; $x--) {
        if (($angka % $x) == 0) {
            return false;
        }
    }
    return true;
}

// menguji apakah 9 adalah prima
// hasil: "Angka bukan prima"
echo ujiPrima(9) ? "Angka prima" : "Angka bukan prima";
?>

Dengan memanfaatkan fungsi ujiPrima() tersebut, akan menjadi mudah untuk menuliskan sebuah fungsi yang memenuhi persyaratan umum: yaitu untuk menampilkan n buah angka prima pertama.

<?php
// tampil_prima.php
// memeriksa apakah sebuah angka adalah
// angka prima atau tidak
function ujiPrima($angka) {
    // membagi tiap angka
    // dengan semua angka yang lebih rendah darinya
    // (kecuali 1) jika minimum salah satu operasi
    // tersebut tidak menghasilkan sisa maka
    // angka tersebut bukan prima
    for ($x=($angka-1); $x>1; $x--) {
        if (($angka % $x) == 0) {
            return false;
        }
    }
    return true;
}

// menampilkan N buah angka prima pertama
function getNPrima($n) {
    // mendefinisikan sebuah array kosong
    // untuk menyimpan angka-angka prima
    $arrayPrima = array();

    // diawali dengan angka prima pertama
    $hitung = 2;

    // secara sekuensial menguji angka-angka
    // sampai angka jumlah angka prima yang
    // diminta diperoleh
    while (sizeof($arrayPrima) < $n) {
        if (ujiPrima($hitung)) {
            $arrayPrima[] = $hitung;
        }
        $hitung++;
    }
    return $arrayPrima;
}

// menampilkan 60 angka prima pertama
echo implode(" ", getNPrima(90));
?>


Menghasilkan angka Fibonacci
Pada kasus ini, Anda akan membangkitkan sebuah deret angka-angka Fibonacci. Anda akan mendefinisikan dua angka pertama, dan menggunakan loop untuk menghitung angka-angka Fibonacci berikutnya.

<?php
// angka_fibonacci.php
// menghasilkan N angka Fibonacci pertama
function bangkitkanAngkaFibonacci($size) {
    // mendefinisikan array untuk menampung
    // angka-angka Fibonacci
    $arrayfibonacci = array();
    $arrayfibonacci[0] = 0;
    $arrayfibonacci[1] = 1;

    // membangkitkan angka-angka
    for ($x=2; $x<=$size; $x++) {
        $arrayfibonacci[$x] = $arrayfibonacci[$x-2] +
        $arrayfibonacci[$x-1];
    }

    // menghasilkan array
    return $arrayfibonacci;
}

// menampilkan 20 angka Fibonacci pertama
// hasil: "0 1 1 2 3 5 8...2584 4181 6765"
echo implode(" ", bangkitkanAngkaFibonacci(20));
?>


Projek menguji angka ganjil atau genap

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
  <head>
    <title>Projek: Penguji Angka Ganjil/Genap</title>
  </head>
  <body>
    <h2>Projek: Penguji Angka Ganjil/Genap</h2>
<?php
  // jika form belum disubmit
  // tampilkan form
  if (!isset($_POST['submit'])) {
?>
    <form method="post" action="uji_genap_ganjil_form.php">
      Masukkan nilai: <br />
      <input type="text" name="angka" size="3" />
      <p>
      <input type="submit" name="submit" value="Submit" />
    </form>
<?php
  // jika form sudah disubmit
  // proses masukan form
  } else {
    // membaca angka dari POST
    $angka = $_POST['angka'];

    // menguji nilai
    // tampilkan pesan
    if (($angka % 2) == 0) {
        echo 'Anda memasukkan ' . $angka . ', yang merupakan angka genap.';
    } else {
        echo 'Anda memasukkan ' . $angka . ', yang merupakan angka ganjil.';
    }
  }
?>
  </body>
</html>





Projek menentukan penempatan tenda

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
  <head>
    <title>Projek: Penentuan Tenda</title>
  </head>
  <body>
    <h2>Projek: Penentuan Tenda</h2>
<?php
  // jika form belum disubmit
  // tampilkan form
  if (!isset($_POST['submit'])) {
?>
    <form method="post" action="tenda.php">
    Masukkan usia Anda: <br />
      <input type="text" name="usia" size="3" />
      <p>
      <input type="submit" name="submit" value="Submit" />
    </form>
<?php
  // jika form telah disubmit
  // proses masukan form
} else {
  // membaca usia dari POST
  $usia = $_POST['usia'];

  // menugaskan ke salah satu dari empat tenda
  // berdasarkan usia yang dibaca
  if ($usia <= 9) {
    echo "Anda ditempatkan di tenda merah.";
  } elseif ($usia > 9 && $usia <= 11) {
    echo "Anda ditempatkan di tenda biru.";
  } elseif ($usia > 11 && $usia <= 14) {
    echo "Anda ditempatkan di tenda hijau.";
  } elseif ($usia > 14 && $usia <= 17) {
    echo "Anda ditempatkan di tenda hitam.";
  } else {
    echo "Anda sebaiknya menghubungi panitia.";
 }
}
?>
  </body>
</html>







Projek menghitung faktorial

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
  <head>
    <title>Projek: Menghitung Faktorial</title>
  </head>
  <body>
    <h2>Projek: Menghitung Faktorial</h2>
<?php
  // jika form belum disubmit
  // tampilkan form
  if (!isset($_POST['submit'])) {
?>
    <form method="post" action="projek_faktorial.php">
    Masukkan sebuah angka: <br />
      <input type="text" name="angka" size="3" />
      <p>
      <input type="submit" name="submit" value="Submit" />
    </form>
<?php
  // jika form disubmit
  // proses masukan form
  } else {
    // membaca dari masukan form
    $angka = $_POST['angka'];

    // memeriksa apakah angka tersebut positif
    if ($angka <= 0) {
      echo 'ERROR: Silahkan masukkan angka > 0';
      exit();
    }
   
    // menghitung faktorial
    // dengan mengalikan angka tersebut dengan
    // semua angka antara dirinya dan 1
    $faktorial = 1;
    for ($x=$angka; $x>=1; $x--) {
      $faktorial *= $x;
    }
    echo "Faktorial dari $angka adalah: $faktorial";
  }
?>
  </body>
</html>









No comments:

Post a Comment