Kategori: Pemrograman

  • Sistem Bilangan Biner – Basis Dua

    Sistem Bilangan Biner – Basis Dua

    Bilangan Biner adalah bilangan basis dua dimana hanya terdapat dua bilangan yang dapat diurut secara bergantian terus menerus. Dua basis bilangan tersebut adalah 0 (nol) dan 1 (satu).

    Bilangan Biner

    Sistem bilangan biner diperkenalkan oleh Gottfried Wilhelm Leibniz pada abad 17. Sistem ini didasarai oleh perhitungan 0 dan 1 yang dimulai dari 0 kemudian diurut ke depan. Misalnya urutan pertama kita sebut 0, setelah itu angka berikutnya adalah 1. Setelah satu maka tidak akan ke dua sehingga kembali ke angka 0, namun ditambahkan angka 1.

    Jika disandingkan dengan bilangan desimal sebagai berikut :

    00000 0000
    10000 0001
    20000 0010
    30000 0011
    40000 0100
    50000 0101
    60000 0110
    70000 0111
    80000 1000
    90000 1001
    100000 1010
    110000 1011
    12 0000 1100
    130000 1101
    140000 1110
    150000 1111
    160001 0000
    170001 0001
    180001 0010
    190001 0011
    200001 0100
    210001 0101

    Konversi Biner ke Desimal

    Dari deret tersebut jika diteruskan akan menunjukkan urutan yang unik bilangan kelipatan 2n.

    2nDesimalBiner
    2o10000 0001
    2120000 0010
    2240000 0100
    2380000 1000
    24160001 0000
    25320010 0000
    26640100 0000
    271281000 0000

    Untuk setiap bilangan biner dengan {\displaystyle n} digit: dn-1 d3d2d1d0

    Bilangan desimalnya adalah hasil penjumlahan dari digit biner ({\displaystyle d_{n}}) dikalikan dengan pangkat 2 nya ({\displaystyle 2^{n}}): decimal = d0 × 20 + d1 × 21 + d2 × 22 + 

    Contoh: Tabel dibawah ini menunjukkan konversi bilangan biner 1011 0111 menjadi desimal.

    Biner (d)10110111
    n76543210
    2n1286432168421
    dn x 2n1 x 1280 x 641 x 321 x 160 x 81 x 41 x 21 x 1

    Dengan demikain 1011 0111 adalah

    128 + 0 + 32 + 16 + 0 + 4 + 2 + 1 = 183

    Penulisanyang disepakti sebagai berikut

    1011 01112 = 18310

  • Contoh Penggunaan Array Pada Bahasa C -Persamaan Linier dengan 3 Variabel Peubah

    Berikut ini contoh penggunaan Array pada Bahasa C untuk asus permsaaa Linier 3 Variabel.

    Penggunaan Array Pada Bahasa C

    Misalkan terdapat tiga buah persamaan linier dengan 3 variabel peubah yakni :

    1. x + 3y – 2z = 10
    2. 2x – y + 6z = 3
    3. x + y – 2z = 5

    Tentukan solusi dari nilai x, y dan z!

    A. Solusi dengan Perhitungan Matriks

    Langkah pertama yang harus dilakukan adalah menyusun persamaan tersebut ke dalam matriks yakni AX = B

    \begin{bmatrix}
    1 & 3 & -2\\
    2 & -1 & 6\\
    1 & 1 & -2 \\
    \end{bmatrix}
    
    \begin{bmatrix}
    x\\
    y\\
    z \\
    \end{bmatrix} =
    
    \begin{bmatrix}
    10\\
    3\\
    5 \\
    \end{bmatrix}

    untuk mencari nilai x kita perlu menginvers matriks

    Determinant matriks A:

    |A| = 1(2 – 6) – 3(-4 – 6) – 2(2 + 1) = 20

    cari matriks Adjoint A

    Ajd \ (A)= \begin{bmatrix}
    -4 & 4 & 16\\
    10 & 0 & -10\\
    3 & 2 & -7 \\
    \end{bmatrix}

    selanjutnya bagikan (Ajd (A)) / |A|, hasilnya adalah

    A^-=
    \begin{bmatrix}
    -\frac{1}{5} & \frac{1}{5} & \frac{4}{5}\\
    \frac{1}{2} & 0 & -\frac{1}{2}\\
    \frac{3}{20} & \frac{1}{10} & -\frac{7}{20} \\
    \end{bmatrix}
    X=A^-B=\begin{bmatrix}
    -\frac{1}{5} & \frac{1}{5} & \frac{4}{5}\\
    \frac{1}{2} & 0 & -\frac{1}{2}\\
    \frac{3}{20} & \frac{1}{10} & -\frac{7}{20} \\
    \end{bmatrix}
    
    \begin{bmatrix}
    10\\
    3\\
    5 \\
    \end{bmatrix}
    X=\begin{bmatrix}
    \frac{60}{23}\\
    \frac{57}{23}\\
    \frac{1}{23} \\
    \end{bmatrix}

    maka nilai masing adalah :

    x = 60/23
    y = 57/23
    z = 1/23

    B. Solusi dengan Perhitungan Matriks

    Kasus ini dapat diselesaikan dengan metode Array dengan bahasa C dengan perintah berikut :

    #include <stdio.h>
    
    #define N 3
    
    void getCofactor(float A[N][N], float temp[N][N], int p, int q, int n) {
        int i = 0, j = 0;
        for (int row = 0; row < n; row++) {
            for (int col = 0; col < n; col++) {
                if (row != p && col != q) {
                    temp[i][j++] = A[row][col];
                    if (j == n - 1) {
                        j = 0;
                        i++;
                    }
                }
            }
        }
    }
    
    float determinant(float A[N][N], int n) {
        float D = 0;
        if (n == 1)
            return A[0][0];
    
        float temp[N][N];
        int sign = 1;
        for (int f = 0; f < n; f++) {
            getCofactor(A, temp, 0, f, n);
            D += sign * A[0][f] * determinant(temp, n - 1);
            sign = -sign;
        }
    
        return D;
    }
    
    void adjoint(float A[N][N], float adj[N][N]) {
        if (N == 1) {
            adj[0][0] = 1;
            return;
        }
    
        int sign = 1;
        float temp[N][N];
        for (int i = 0; i < N; i++) {
            for (int j = 0; j < N; j++) {
                getCofactor(A, temp, i, j, N);
                sign = ((i + j) % 2 == 0) ? 1 : -1;
                adj[j][i] = (sign) * (determinant(temp, N - 1));
            }
        }
    }
    
    int inverse(float A[N][N], float inverse[N][N]) {
        float det = determinant(A, N);
        if (det == 0) {
            printf("Singular matrix, can't find its inverse");
            return 0;
        }
    
        float adj[N][N];
        adjoint(A, adj);
    
        for (int i = 0; i < N; i++)
            for (int j = 0; j < N; j++)
                inverse[i][j] = adj[i][j] / det;
    
        return 1;
    }
    
    void multiply(float mat1[N][N], float mat2[N], float res[N]) {
        for (int i = 0; i < N; i++) {
            res[i] = 0;
            for (int j = 0; j < N; j++)
                res[i] += mat1[i][j] * mat2[j];
        }
    }
    
    int main() {
        float A[N][N] = { {1, 3, -2}, {2, -1, 6}, {1, 1, -2} };
        float B[N] = { 10, 3, 5 };
        float inv[N][N];
    
        if (inverse(A, inv)) {
            float X[N];
            multiply(inv, B, X);
    
            printf("Nilai dari x, y dan z : \n");
            for (int i = 0; i < N; i++)
                printf("x%d = %f\n", i + 1, X[i]);
        }
    
        return 0;
    }

    Penjelasan Program:

    • Program ini mendefinisikan ukuran matriks sebagai N = 3.
    • Fungsi getCofactor mengambil kofaktor dari matriks.
    • Fungsi determinant menghitung determinan dari matriks.
    • Fungsi adjoint menghitung adjoin dari matriks.
    • Fungsi inverse menghitung invers dari matriks, dan jika matriks tidak singular (determinannya bukan nol), mengembalikan inversnya.
    • Fungsi multiply mengalikan dua matriks.
    • Fungsi main menginisialisasi matriks A dan B, menghitung invers dari A, dan mengalikannya dengan B untuk mendapatkan solusi X.

    Dengan menjalankan program ini, Anda akan mendapatkan solusi untuk sistem persamaan linear yang diberikan.

    Latihan Soal

    1. 3x + 2y – 5z = -14
      2x – 3y + 4z = 10
      x + y + z = 4
    2. 3x – 4y + 2z = -9
      -4x + 4y + 10z = 32
      -x + 2y – 7z = -7
    3. 4a + 3b = 4
      2a + 2b – 2c = 0
      5a + 3b + c = -2
  • Integral Numerik Metode Trapezoida Dengan Matlab

    Integral Numerik Metode Trapezoida Dengan Matlab

    Integral Numerik Metode Trapezoida dilakukan dengan cara membuat bangun-bangun trapesium hayal diantara luas daerah yang dibatasi oleh sebuah fungsi.

    Integral Numerik Metode Trapezoida

    Metode Trapezoida merupakan salah satu metode numerik yang digunakan untuk menghitung aproksimasi integral dari suatu fungsi. Metode ini didasarkan pada pembagian interval integrasi menjadi sejumlah kecil sub-interval dan menghitung luas di bawah kurva dengan mengaproksimasi kurva sebagai segmen-segmen garis lurus yang menghubungkan titik-titik pada fungsi.

    Integral Metode Trapezoida

    A. Dasar Teori

    Secara matematis, jika kita ingin menghitung integral dari fungsi f(x) di antara batas a dan b:

    \int^b_af(x)dx

    Metode Trapezoida membagi interval [a,b] menjadi n sub-interval dengan panjang yang sama,

    Δx=\frac{b-a}{n}

    Titik-titik pembagi ini diberi label x0, x1, x2,…, xn, di mana:

    xi​=a+iΔx untuk i = 1, 2, 3, …, n

    Luas di bawah kurva dihitung dengan mengaproksimasi setiap sub-interval sebagai sebuah trapesium. Luas setiap trapesium adalah:

    L=\frac{1}{2}(f(x_i)+f(x_{i+1}))Δx

    Total luas semua trapesium, yang merupakan aproksimasi integral, diberikan oleh:

    \int^b_af(x)dx≈\frac{Δx}{2}[f(x_0)+2∑^{n-1}_{i=1}f(x_i)+f(x_n)]

    B. Langkah-Langkah Menggunakan Metode Trapezoida

    Tentukan Batas Integrasi dan Jumlah Sub-Interval (n):

    Misalkan kita ingin mengintegrasikan fungsi f(x) dari a ke b dan kita pilih n sub-interval.

    Hitung Lebar Sub-Interval (Δx):

    Δx=\frac{b-a}{n}

    Hitung Nilai Fungsi di Titik-Titik Pembagi:

    • Untuk setiap titik xi​=a+iΔx , hitung f(xi) untuk i=0,1,2,…,n

    Gunakan Rumus Trapezoida untuk Mengaproksimasi Integral:

    \int^b_af(x)dx≈\frac{Δx}{2}[f(x_0)+2∑^{n-1}_{i=1}f(x_i)+f(x_n)]

    C. Contoh Kasus

    Misalkan kita ingin menghitung aproksimasi integral dari f(x)=sin⁡(x) dari 0 sampai π dengan n=4:

    A. Solusi Numerik

    1. Tentukan Batas dan Sub-Interval:

    a=0, b=\pi , n = 4
    \Delta x=\frac{\pi-0}{4}=\frac{\pi}{4}

    2. Hitung Titik-Titik Pembagi dan Nilai Fungsi setiap kelipatan π/4, dimulai dari 0, π/4, π/2, 3π/4 dan π.

    f(x_0)=\sin 0 = 0
    f(x_1)=\sin \frac{\pi}{4}=\frac{\sqrt{2}}{2}
    f(x_2)=\sin \frac{\pi}{2}=1
    f(x_3)=\sin \frac{3\pi}{4}=\frac{\sqrt{2}}{2}
    f(x_4)=\sin π = 0

    3. Aproksimasi Integral:

    \int^π_0\sin x \ dx≈\frac{\frac{\pi}{4}}{2}[0+2(\frac{\sqrt{2}}{2}+1+\frac{\sqrt{2}}{2})+0]
    \int^π_0\sin x \ dx≈\frac{\frac{\pi}{4}}{2}[0+2(2.4142)+0]
    \int^π_0\sin x \ dx≈\frac{\pi}{4}(2.4142)
    \int^π_0\sin x \ dx≈ 0.6 \pi≈1.8961

    B. Solusi Analitik

    \int^π_0\sin x \ dx = - cos |^π_0=-(-1-1)=2

    Nilai dari solusi numerik ini mendekati nilai solusi analitik.

    D. Trapezioda dengan Matlab

    Buat Fungsi untuk Metode Trapezoida: Kita akan membuat fungsi yang menerima parameter fungsi yang akan diintegrasikan, batas bawah dan atas integrasi, serta jumlah sub-interval.

    function result = trapezoidal_rule(f, a, b, n)
        % f: fungsi yang akan diintegrasikan
        % a: batas bawah
        % b: batas atas
        % n: jumlah sub-interval
    
        % Hitung lebar tiap sub-interval
        h = (b - a) / n;
        
        % Hitung nilai fungsi di titik-titik pembagi
        x = a:h:b;
        y = f(x);
        
        % Terapkan rumus metode Trapezoida
        result = (h / 2) * (y(1) + 2 * sum(y(2:end-1)) + y(end));
    end

    Gunakan Fungsi untuk Mengaproksimasi Integral: Panggil fungsi trapezoidal_rule dengan parameter yang sesuai.

    % Definisikan fungsi yang akan diintegrasikan
    f = @(x) sin(x);
    
    % Batas integrasi
    a = 0;
    b = pi;
    
    % Jumlah sub-interval
    n = 4;
    
    % Hitung integral menggunakan metode Trapezoida
    approx_integral = trapezoidal_rule(f, a, b, n);
    
    % Tampilkan hasil
    disp(['Aproksimasi integral: ', num2str(approx_integral)]);
    

    Penjelasan Kode

    1. Fungsi trapezoidal_rule:
      • f: Fungsi yang akan diintegrasikan, didefinisikan sebagai fungsi anonim.
      • a dan b: Batas bawah dan atas dari integral.
      • n: Jumlah sub-interval yang digunakan dalam metode Trapezoida.
      • h: Lebar tiap sub-interval, dihitung sebagai (b−a)/n.
      • x: Vektor yang berisi titik-titik pembagi dari aaa ke b dengan jarak h.
      • y: Nilai fungsi f di titik-titik pembagi.
      • result: Aproksimasi integral yang dihitung menggunakan rumus metode Trapezoida.
    2. Menghitung Integral:
      • Fungsi anonim f didefinisikan sebagai @(x) sin(x).
      • Batas integrasi adalah a = 0 dan b = pi.
      • Jumlah sub-interval adalah n = 4.
      • Hasil aproksimasi integral ditampilkan menggunakan disp.

    E. Tugas

    Buatlah sebuah solusi integral numerik metode trapzoida untuk fungsi berikut

    \int^b_a(3x^3-5) dx

    dan

    \int^b_a(\cos x +2)dx

    keterangan

    1. ganti nilai b dengan tanggal lahir anda masing-masing dan nilai a dengan bulan lahir.
    2. Jumlah sub-interval yang digunakan n = 4
  • Iterasi Dalam Bahasa C – Perulangan For

    Iterasi Dalam Bahasa C – Perulangan For

    Iterasi

    Iterasi dalam Pemrograman adalah pengulangan eksekusi dari serangkaian instruksi hingga kondisi yang dicapai. Secara sederhana program ini analog (1) Menghitung 1 sampai 10 atau (2) melafalkan perkalian n mulai dari 1 sampai 10. Iterasi dalam bahasa C menggunakan sintaks Fo.

    Iterasi dengan For

    Dalam bahasa C, iterasi dieksekusi dengan perintah for dengan sintaks

    for(i = n; i <= m; i++)

    dimana

    1. i = n; dimulai dari n
    2. i <=m; sampai dengan m
    3. i++ : model iterasi meningkat

    Contoh programnya sebagai berikut :

    #include <stdio.h>
    
    int main() {
    int i;
    
    for(i = 1; i <= 10; i++)
    
    {
    printf("%d\n", i);
    }
    
    return 0;
    }

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10

    perhatikan sintaks

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

    sintaks ini meminta i langsung dituliskan. Jika sintaks ini sedikit dimodifikasi misalnya i diganti dengan 3*i, maka program akan mengeksekusi perkalian 3 mulai dari 1 sampai 10.

    #include <stdio.h>
    
    int main() {
    int i;
    
    for(i = 1; i <= 10; i++)
    
    {
    printf("%d\n", 3*i);
    }
    
    return 0;
    }

    3
    6
    9
    12
    15
    18
    21
    24
    27
    30

    nilai dari i dapat ditulis sebagai fungsi dari i misalkan i = (3*i)+3, dan sebagainya.

    Perulangan Mengecil

    Perulangan for tidak hanya digunakan untuk perhitungan maju namun bisajuga untuk perhitungan mundur. Perubahan dilakukan dari sintaks i++ menjadi i–. i– adalah sintaks untuk melakukan perhitungan mundur.

    Contoh kodenya sebagai berikut :

    #include <stdio.h>
    
    int main() {
    int i;
    
    for(i = 10; i >= 1; i--) 
    {
    printf("%d\n", i);
    }
    return 0;
    }

    10
    9
    8
    7
    6
    5
    4
    3
    2
    1

  • Program Menghitung Ketinggan Maksimal Gerak Vertikal Ke Atas dengan Bahasa C dan Phyton

    Program menghitung ketinggian maksimal digunakan untuk mengetahui ketinggian benda yang dilempar ke atas dengan kecepatan awal tertentu. Program ini dirancang dengan asumsi hambatan udara diabaikan.

    Ketinggan Maksimal

    Ketika sebuah benda dilemparkan dengan kecepatan tertentu (v0) ke atas, maka benda akan bergerak diperlambat ke arah atas. Sampai pada saat kecepatan ke arah atas habis atau vt=0, maka benda akan berbalik arah ke bawah.

    Dengan demikian ketinggian maksimum dapat dihitung dengan persamaan

    v_t^2=v_0^2-2gh

    dimana vt=0, maka persamaan ini dapat ditulis

    v_0^2=2gh
    h=\frac{v_0^2}{2g}

    Persamaan ini diubah ke dalam bentuk Program dalam bahasa C.

    Program Ketinggian Maksimum dalam Bahasa C

    #include <stdio.h>
    int main() {
        float v_awal, bantu;
        printf("Kecepatan Awal: ");
        scanf("%f", &v_awal);
        bantu = v_awal*v_awal/19.6;
        printf("Ketinggian %.3f\n meter", bantu);
        return 0;
    }

    Program Ketinggian Maksimum dalam Bahasa Phyton

    num1 = float(input("Kecepatan awal: "))
    hasil = num1 * num1 / 19.6
    print("Ketinggian %.3f meter" % hasil)
  • Program Menghitung Ketinggian Gerak Jatuh Bebas dengan Bahasa C dan Phyton

    Program menghitung ketinggian gedung atau kedalaman lubang dapat ditaksir dengan menggunakan Gerak Jatuh Bebas. Gerak ini adalah gerak dengan percepatan konstan yang nilainya sama g dengan asumsi hambatan udara dapat diabaikan.

    Ketinggian Gerak Jatuh Bebas

    Gerak jatuh bebas adalah gerak lulus dengan percepatan tetap. Persamaan umum gerak jatuh bebas adalah:

    s=v_ot+\frac{1}{2}at^2

    Karena gerak jatuh bebas tidak memiliki kecepatan awal dan gerak arah kebawah nilai a = percepatan gravitasi bumi maka, ketinggian dapat dihitung dengan persamaan

    h=\frac{1}{2}gt^2

    Program Menghitung Ketinggian Dalam Bahasa C

    #include <stdio.h>
    int main() {
        float num1, hasil;
        printf("Masukka Waktu Jatuh: ");
        scanf("%f", &num1);
        hasil = num1 * num1 * 4.9;
        printf("Ketinggian %.3f\n meter", hasil);
        return 0;
    }

    Program Menghitung Ketinggian Dalam Phyton

    num1 = float(input("Masukkan Waktu Jatuh: "))
    hasil = num1 * num1 * 4.9
    print("Ketinggian %.3f meter" % hasil)
  • Apakah Perbedaan antara Web 1.0, Web 2.0, dan Web 3.0?

    Apakah Perbedaan antara Web 1.0, Web 2.0, dan Web 3.0?

    Era digital menghasilkan banyak produk baru. Tidak hanya dari teknologi semata tapi juga istilah dan akornim baru. Misalnya saja Daring, Luring, Netizen, Web 1.0, Web 2.0, dan Web 3.0.

    Bagi pengguna awam, Istilah tidaklah begitu penting. Hal yang penting adalah layanan yang diberikan oleh teknologi tersebut. Namun berbeda dengan para digital enthusiast, pelajar dan developer. Istilah adalah hal yang penting dijadikan dasar untuk mendefenisikan dan membedakan satu produk dengan produk yang lainnya.

    Artikel ini bertujuan untuk mendefenisikan perbedaan antara Web 1.0, Web 2.0, dan Web 3.0.

    Apa itu Website

    Website adalah kata yang berasal dari dua istilah yakni web dan site. Web diambil dari jaring-jaring dan site adalah laman yang dapat dikunjungi. Website sendiri berarti sekumpulan laman yang berisi informasi dan saling berhubungan satu sama lain.

    Artikal yang sedang anda baca ini adalah laman dari website ahmaddahlan.net. Seluruh website yang dapat diakses disebut sebagai laman, baik itu twitter, facebook, koran tempo, wikipedia bahkan sampai internet banking. Perbedaannya hanya terletak dari jenis layanan dan cara menyajikan informasinya. Perbedaan metode ini yang dijadikan standar dalam mengelompokan web 1.0, web 2.0 dan web 3.0.

    Web 1.0

    Angka 1.0 ini mengindikasikan generasi pertama dari website. Web 1.0 ini merupakan website yang laman statis yang menyajikan informasi baik berupa huruf, kata, gambar dan video yang dibuat oleh website administrator.

    Konsep utama dari webiste ini adalah penyajian data melalui file HTML. File HTML kemudian diupload ke sebuah server lalu disajikan sesuai dengan yang dibuat.

    Cara membuatnya cukup sederhana, anda bisa perhatikan code HTML di bawah ini!

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>My Biodata</title>
        <style>
            body {
                font-family: Arial, sans-serif;
                margin: 20px;
            }
            h1 {
                color: #333;
            }
            .biodata {
                margin-top: 20px;
            }
            .section {
                margin-bottom: 15px;
            }
            .label {
                font-weight: bold;
            }
        </style>
    </head>
    <body>
        <h1>My Biodata</h1>
        <div class="biodata">
            <div class="section">
                <span class="label">Name:</span> Ahmad Dahlan
            </div>
            <div class="section">
                <span class="label">Date of Birth:</span> January 1, 1990
            </div>
            <div class="section">
                <span class="label">Address:</span> Jl. Penganggsaan Raya, Jakarta Utara.
            </div>
            <div class="section">
                <span class="label">Email:</span> dahlan@example.com
            </div>
            <div class="section">
                <span class="label">Phone:</span> +62 123-456-7890
            </div>
        </div>
    </body>
    </html>

    Silahkan kopi code tersebut kemudian paste di Notepad. Selanjutnya, simpan dengan extensi file .html misalnya coba.html. Jika sudah selesai, selamat anda baru saja membuat laman website anda. Silahkan buka laman tersebut mengkliknya. Secara otomatis akan terbuka dengan browser default anda.

    Pada website 1.0, user hanya bisa meminta dan membaca informasi yang sudah disedikan oleh pengembangan. Dengan demikian kita sebut saja Web 1.0 sebagai Read Only Web.

    Mudahnya web 1.0 digunakan untuk merujuk pada generasi awal website yang hanya menyajikan informasi dan interkasi sederhana saja. Ada juga yang mendefenisikan web 1.0 sebagai berikut:

    1. Terdiri dari laman-laman statis yang terkoneksi dengan sistem hyperlinks.
    2. Proses editing website langsung dilakukan pada laman yang dimaksud.
    3. Konten disajikan melalai sistem file dari server secara langsung, bukan dari dari database management system.

    website ahmaddahlan.net ini juga punya laman web 1.0 misalnya https://ahmaddahlan.net/ads.txt

    Web 2.0

    Web 2.0 mengelola dan menyajikan informasi menggunakan database management system. Apa yang dikerjakan tidak langsung disajikan di laman tetapi dikelola oleh database terlebih dahulu baru kemudian disajikan.

    Informasi yang ingin disajikan didatabase tidak perlu langsung diopload pada sisi server namun pada laman kerja yang sudah disediakan. Laman kerja ini kemudian diposting lalu sistem akan membuat urutan daftar laman dan tampilan sesuai dengan tema yang sudah disediakan lalu informasi dapat diakses.

    Konsep Web 2.0 lebih menekankan pada kemudian pengelolaan konten sehingga tidak perlu pengetahuan tentang server untuk bisa menyajikan konten. Konseo ini mendukung user (non developer) mengupload konten mereka sekalipin mereka awam server tapi sudah paham dengan UI.

    Web 1.0 fokus pada tujuan membaca informasi sedangkan Web 2.0 mengizinkan orang lain untuk ikut berpartisipasi dan memberi kontribusi pada website. Konsep ini juga dikenala sebagai User-Generated Content (UGC).

    Ciri utama dari UGC adalah pertukaran informasi antar user tanpa perlu melibatkan server administrator secara langsung. Dengan demikian kita sebut saja sebagai “Read and Contribute Website

    Web 2.0 menyajikan layanan komunikasi antar komunitas, kolaborasi, dialog, diskusi dan sosial media. Kebanyakan website yang kita gunakan saat ini adalah web 2.0. Seperti Facebook, WordPress, LMS, Youtube, Wikipedia, Tik Tok, Twitter, dan sejenisnya,.

    Web 2.0 juga ditandai dengan perkembangan JavaScript framework yang pesat sehingga memungkinkna komunikasi data antar user melalui sisi front end saja.

    Ciri-ciri umum dari Web 2.0 adalah :

    1. Melayani shoritng informasi dan klasifikasi data
    2. Terdiri dari konten dan laman dinamis
    3. Bisa berkerja dengan Application Programming Interface (API)
    4. Mendukung penggunaan pribadi pengguna seperti :
      • Media Sosial
      • Internet Banking
      • Toko Online
      • Blogging
      • LMS
      • Feed dengan RSS
      • Voting
      • Kerja Kolaborasi
      • Diskusi, dll

    Web 3.0

    Sekarang kita masuk ke Era Web 3.0. Agak sulit juga membuat batasan-batasan yang membedakan antara Web 2.0 dan 3.0. Hal ini mengingat Web 2.0 sudah memiliki layanan sangat besar. Namun mari kita tinjau Bitcoin yang merupakan sebuah sistem yang dibangun desentralistik.

    Web 1.0 dan Web 2.0 adalah website yang database-nya dikuasai dan dikelola penuh oleh pengembang server. Facebook, Instagram, Google dan sejenisnya merupakan website yang mengelola informasi dari server masing-masing. Apapun yng dilakukan oleh user akan disimpan di server.

    Namun tidak demikian dengan Bitcoin. Bitcoin adalah sebuah sistem dimana informasi dan enksripsi dituliskan oleh seluruh orang yang berkontribusi dalam sistem tersebut kemudian informasi tersebut disimpan dalam bentuk blok-blok yang saling berhubungan.

    Konsep blok-blok tersebut disebut block chain. Tidak ada satu orang pun yang dapat mengetahui siapa yang mencatat apa, bahkan pengembang Bitcoin itu sendiri. Dengan demikian informasi utama tidak dikelola dan dimiliki oleh sebuah database tapi oleh banyak database.

    Namun defenisi tidak cukup baik.

    Sekarang kita mengenal AI (Artificial Intelligence) untuk banyak bidang. AI ini memiliki konsep yang berbeda dengan Web 1.0 dan 2.0. Kedua versi website ini akan persis sama menyajikan data yang sudah tersimpan di server yang terlebih dahulu diupload. Web 3.0 dapat menyajika data yang belum pernah ada pada sistem database mereka.

    Labtas dari mana data tersebut?

    Data tersebut disusun dan disajikan begitu ada permintaan dari user. Mudahnya kita sebuat dibuat atau digenerate oleh AI. Kecenderungan dan pola generatingnya kita bahas nanti, karena ini berbicara tentang tipe-tipe Algoritma eksekusi data.

    Misalkan saja kita sedang membuka Instagram dan mencari foto orang yang sedang di pantai maka foto tersebut akan muncul berdasarkan tag atau meta tag dari foto yang sudah ada. Foto yang tidak ada dalam data base tidak akan pernah bisa disajikan.

    Berbeda dengan IA sistem, misalnya Pixar AI akan menggenerate foto berdasarkan kata kunci yang sudah ada berdasarkan pola-pola yang ada pada database mereka sendiri atau seluruh database yang izin aksesnya mereka dapatkan. Dari pola ini kemudian Ai akan membuat kesimpulan sendiri lalu menyajikan Foto baru ke user.

    Foto yang disajikan belum pernah ada sama sekali pada database mereka. Foto yang baru saja anda lihat adalah hasil generasi data. Jadi mari kita sebut Web 3.0 sebagai “Read, Write, and Generating web“.

    Tim Barner-Lee yang membuat Tag HTML menyebut Web 3.0 sebagai global brain dimana website dianalogikan memiliki sejumlah data besar (Big Data) kemudian mampu mensintesis hal-hal baru data-data yang sudah ada.

    Misalnya saja gambar berikut ini

    IA Versi dari Cristiano Ronaldo dan Messi

    Gambar di atas dibuat sendiri oleh Computer dan sebelumnya tidak pernah ada. Setelah dibuat dan disimpan website ini maka konteksnya sudah berbeda. Web ini (Web 2.0) hanya menyajikan gambar yang sudah ada tersimpan di server lalu disajikan. Web 3.0 membuat gambar itu sendiri.

    Tipe-Tipe website 3.0 adalah :

    1. Semantik Web yang dapat membuat output berdasarkan kata kunci (Promt) dan jenis Algoritma yang digunakan untuk mengeksekusi Promt.
    2. Berupa Artificial Intelengence dan Machine Learning dengan konsep kombinasi informasi dengan Natural Language Processing (NLP).
    3. Dapat mengakses metadata atau paling tidak memiliki data set sendiri.

    Kesimpulan

    Web 1.0Web 2.0Web 2.0
    Read OnlyRead and ContributeRead, Contribute, Generating and Interacting
    Konten dibuat oleh PengembangKonten dibuat oleh pengembang dan userKonten digenerate dari informasi, data, jenis algoritma dan kata kunci
    Visual/interactive WebProgrammable WebLinked data Web
    Home and Landing pagesWikis and blogsWaves and live streams
    Web pageWeb service endpointData space
    HTML/HTTP/URL/PortalsXML/RSSRDF/RDFS/OWL
    Page viewsCost per clickUser engagement
    File/web servers, search engines, e-mail, P2P file sharing, content and enterprise portalsInstant messaging, Ajax and JavaScript frameworks, Adobe FlexPersonal intelligent data assistants, ontologies, knowledge bases, semantic search functions
    DirectoriesTagging the userUser behavior
    Fokus pada Pengmbang/PerusahaanFokus pada KomunitasFokus pada Kebutuhan Privat
    Encyclopedia Britannica onlineWikipediaThe Semantic Web
    Banner advertisingInteractive advertisingBehavioral advertising
    Active 1989-2005Active 1999-2012Active 2006-ongoing
  • Praktikum Program Menghitung Jangkauan Peluru Meriam Dari Sebuah Gedung dalam Bahasa C

    Sebuah peluru yang ditembakkan dari sebuah meriam atau senjata, maka peluru akan mulai bergerak ke depan dengan lintasan membentuk parabola terbalik. Hal ini disebabkan oleh gaya tarik gravitasi yang membu peluru begerak dengan kecepatan lurus berubah beraturan pada sumbu y.

    Jangkauan Peluru Meriam

    A. Tujuan Percobaan

    1. Mengetahuan jangakuan meriam yang ditembakkan dari atas sebuah gedung berdasarkan kecepatan dan sudut awal tembakan.

    B. Landasan Teori

    Misalkan sebuah meriam diletakkan di atas sebuah gedung dengan ketinggian 100 m. Dari ketinggian ini, peluru memiliki dua skenario tembakan, yakni ketika memiliki sudut lebih tinggi dari horison meriam dan lebih rendah dari meriam.

    Ilustrasi Gerak Peluru pada Meriam yang ditemabkkan di atas Gedung

    1. Setengah Parabola

    Skenario pertama jika meriam ditembakan dengan sudut di bawah horison maka peluru akan membentuk gerak setengah parabola.

    t =\frac{v_{0y}^2+2gh-v_{0y}}{g}

    Jangkauan meriam yang ditambakkan pada posisi ini dapat ditentukan dengan persamaan :

    R = v_x.t

    dimana

    v_x= v_o \sin \theta 

    Dimana nilai dari t ditentukan oleh gerak peluruh ke arah sumbuh y tepat mencapai permukaan tanah. Nilai t dapat dihitung dengan persamaan

    v_y^2=v_{0y}^2+2gh

    dimana

    v_y=v_0+gt

    maka t adalah:

    t=\frac{v_y-v_{0y}}{g}

    Setelah memperoleh t, kita bisa dapatkan nilai R dengan memeasukkan ke persaman R = vxt

    R = v_0 \sin \theta \frac{v_0 \cos^2 \theta+2gh-v_0 \cos \theta}{g}

    C. Contoh Code

    #include <stdio.h>
    #include <math.h>
    
    #define GRAVITY 9.8
    
    float calculateDistance(float initialVelocity, float launchAngle, float height)
    {
        float horizontalDistance, verticalDistance;
        float timeOfFlight;
    
        // Sudut tembakan lebih rendah dari horison
        if (launchAngle < 0)
        {
            timeOfFlight = (-2 * initialVelocity * sin(launchAngle)) / GRAVITY;
            horizontalDistance = initialVelocity * cos(launchAngle) * timeOfFlight;
            verticalDistance = initialVelocity * sin(launchAngle) * timeOfFlight + (0.5 * GRAVITY * pow(timeOfFlight, 2));
        }
        // Sudut tembakan di atas horison (gerak parabola)
        else
        {
            timeOfFlight = (2 * initialVelocity * sin(launchAngle)) / GRAVITY;
            horizontalDistance = initialVelocity * cos(launchAngle) * timeOfFlight;
            verticalDistance = initialVelocity * sin(launchAngle) * timeOfFlight;
        }
    
        float adjustedHeight = height + verticalDistance;
    
        return sqrt(pow(horizontalDistance, 2) + pow(adjustedHeight, 2));
    }
    
    int main()
    {
        float initialVelocity, launchAngle, height, distance;
    
        printf("Masukkan kecepatan awal (m/s): ");
        scanf("%f", &initialVelocity);
    
        printf("Masukkan sudut lemparan (derajat): ");
        scanf("%f", &launchAngle);
    
        printf("Masukkan ketinggian gedung (m): ");
        scanf("%f", &height);
    
        // Mengkonversi sudut dari derajat menjadi radian
        launchAngle = launchAngle * M_PI / 180;
    
        distance = calculateDistance(initialVelocity, launchAngle, height);
    
        printf("Jarak tempuh tembakan: %.2f meter\n", distance);
    
        return 0;
    }
    
  • Praktikum Pembuatan Program Menghitung Volume Bangun Ruang dengan If dalam Bahasa C

    Fungsi If dan Else If pada bahasa pemrograman C dapat digunakan untuk memudahkan proses perhitungan berbagai macam bangun ruang dalam satu bahasa. If akan merujuk pada jenis bangun yang dimasukkan sehingga program akan berjalan sesuai dengan bangun ruang dipilih.

    Praktikum If Bangun Ruang

    A. Tujuan Praktikum

    1. Membuat program menghitung bangun ruang dengan fungsi IF.

    B. Landasan Teori

    Fungsi IF dalam bahasa Pemrograman adalah fungsi untuk membuat percabangan dengan syarat tertentu. Fungsi ini juga biasa disebut sebagai Conditional Function.

    Pada dasarnya, kondisi IF ELSE IF adalah sebuah struktur logika program yang di dapat dengan cara menyambung beberapa kondisi IF ELSE menjadi sebuah kesatuan.

    Jika kondisi pertama tidak terpenuhi atau bernilai false, maka kode program akan lanjut ke kondisi IF di bawahnya. Jika ternyata tidak juga terpenuhi, akan lanjut lagi ke kondisi IF di bawahnya, dst hingga blok ELSE terakhir atau terdapat kondisi IF yang bernilai true.

    Misalkan, seorang prgrammer ingin membuat program menghitung volume bangun ruang. Namun jumlah bangun ruang tentu saja tidak satu. Tanpa IF, maka program dibuat untuk setiap jenis bangun ruang, namun dengan fungsi IF kita bisa menggabungkan semua program tersebut dalam satu program. Program akan menghitung / menjalankan code sesuai dengan informasi berdasarkan code yang disampaikan.

    C. Sampel Code Program

    #include <stdio.h>
    
    int main() {
        int pilihan;
        float panjang, lebar, tinggi, jari_jari, volume;
    
        printf("Pilih bentu bangun ruang:\n");
        printf("1. Kubus\n");
        printf("2. Balok\n");
        printf("3. Silinder\n");
        printf("4. Bola\n");
        printf("5. Keluar\n");
        printf("Masukkan pilihan Anda (Masukkan Angka saja): ");
        scanf("%d", &pilihan);
    
        if (pilihan == 1) {
            printf("Masukkan panjang sisi: ");
            scanf("%f", &panjang);
    
            volume = panjang * panjang * panjang;
    
            printf("Volume kubus: %.2f\n", volume);
        } else if (pilihan == 2) {
            printf("Masukkan panjang: ");
            scanf("%f", &panjang);
            printf("Masukkan lebar: ");
            scanf("%f", &lebar);
            printf("Masukkan tinggi: ");
            scanf("%f", &tinggi);
    
            volume = panjang * lebar * tinggi;
    
            printf("Volume balok: %.2f\n", volume);
        } else if (pilihan == 3) {
            printf("Masukkan jari-jari: ");
            scanf("%f", &jari_jari);
            printf("Masukkan tinggi: ");
            scanf("%f", &tinggi);
    
            volume = 3.14 * jari_jari * jari_jari * tinggi;
    
            printf("Volume silinder: %.2f\n", volume);
        } else if (pilihan == 4) {
            printf("Masukkan jari-jari: ");
            scanf("%f", &jari_jari);
    
            volume = (4.0 / 3.0) * 3.14 * jari_jari * jari_jari * jari_jari;
    
            printf("Volume bola: %.2f\n", volume);
        } else if (pilihan == 5) {
            printf("Terima kasih! Program berakhir.\n");
            return 0;
        } else {
            printf("Pilihan tidak valid.\n");
        }
    
        return 0;
    }
    
  • Praktikum Pembuatan Program Gerak Lurus Berubah Beraturan dalam Bahasa C

    Praktikum Pembuatan Program Gerak Lurus Berubah Beraturan dalam Bahasa C

    Praktikum Pembuatan Program Gerak Lurus Berubah Beraturan digunakan untuk menghitung otomatis terkait jarak tempuh dan kecepatan benda pada saat t. Prakitkum ini disusun dalam bahasa C.

    Praktikum Program GLBB

    A. Tujuan Praktikum

    1. Membuat program menghitung jarak tempuh GLBB pada selang waktu (t) tertentu.
    2. Membuat program menghitung kecepatan sesaat (vt) GLBB pada selang waktu tertentu.

    B. Landasan Teori

    a. Persamaan Kecepatan terhadap Waktu

    Gerak lurus berubah beraturan adalah gerak yang memiliki perubahan kecepatan konstan setiap selang waktu tertentu. Persamaan gerak ini dapat diturunkan dari Hukum Newton II yakni

    a = \frac{1}{m}\Sigma F

    percepatan (a) adalah turunan pertama perubahan kecepatan terhadap waktu sehingga persamaan di atas dapat ditulis ulang dalam bentuk:

    \frac{dv}{dt} = \frac{1}{m}\Sigma F

    persamaan ini kemudian dimanupulasi dengan mengalikan kedua ruas dengan dt sehingga hasilnya

     dv=\frac{F}{m}dt

    Integralkan kedua sisi

     \int_{v_0}^{v_t} dv=\frac{F}{m}\int_{0}^{t}dt

    ganti nilai F/m = a, maka hasilnya adalah

    v_t-v_0=at

    Persamaan ini dapat ditulis membentuk persamaan v terhadap t

    v_t=v_0+at

    b. Persamaan Jarak terhadap waktu

    Misalkan vt) pada persamaan vt=v0+at dirubah menjadi dx/dt.

    \frac{dx}{dt}=v_0+at

    kedua ruas kemudian dikalikan dengan dt, lalu di integralkan

    \int_{s_0}^{s_t} dx=\int_{0}^{t} v_0.dt+\int_{0}^{t}at.dt

    hasilnya adalah

    s_t-s_0=v_0t+\frac{1}{2}at^2

    Persamaan ini kemudian ditulis ulang dalam bentuk

    s_t=s_0+v_0t+\frac{1}{2}at^2

    C. Sampel Code Program

    #include <stdio.h>
    
    int main() {
        float a, v0, t, s; // variabel percepatan, kecepatan awal, waktu, dan jarak
        printf("Masukkan percepatan (m/s^2): ");
        scanf("%f", &a);
        printf("Masukkan kecepatan awal (m/s): ");
        scanf("%f", &v0);
        printf("Masukkan waktu (s): ");
        scanf("%f", &t);
        s = v0 * t + 0.5 * a * t * t;
        printf("Jarak yang ditempuh adalah %.2f meter", s);
        return 0;
    }