Array 2 Dimensi Pada Pemrograman C

Array 2 Dimensi Pada Pemrograman C



Pada Artikel sebelumnya kita sempat mempelajari mengenai array, yang mana array tersebut mempunyai tipe (int, float, char) dan mempunyai jumlah data yang dapat ditampung. Bagaimana dengan array 2 dimensi??? ya hampir mirip dengan artikel seblumnya namun dalam array 2 dimensi terdapat array didalam array. Contoh lain apakah teman-teman pernah mendapatkan materi Matrix pada saat SD, SMP, SMA, atau Kuliah, atau waktu TK... ya array 2 dimensi dapat diibaratkan dengan matrix dua dimensi yang biasanya diajarkan di sekolah-sekolah... seperti apa bentuknya, yuks mari kita lihat penjelasan dan ilustrasi dibawah...

Misal kita ingin membuat matrix dengan dimensi 2 x 3, seperti berikut :

| 1 2 3 |
| 4 5 6 |

Kalo cuma nulis gitu aja sih gampang, aku juga bisa :), cara definisikan di variabel array-nya dong gimana... :) hayo gimana hayo???... gini caranya...

Dalam matrix 2 x 3 tersebut biasanya di-index-kan seperti berikut:
posisi (1, 1) isinya 1
posisi (1, 2) isinya 2
posisi (1, 3) isinya 3
posisi (2, 1) isinya 4
posisi (2, 2) isinya 5
posisi (2, 3) isinya 6

Bagaimana dengan array, hampir mirip penulisan index tersebut namun karena array indexnya dimulai dari 0, sehingga penulisannya sebagai berikut:
int x[2][3]; // pendeklarasian dimensi dari array

x[0][0] = 1; // posisi (1, 1)
x[0][1] = 2; // posisi (1, 2)
x[0][2] = 3; // posisi (1, 3)
x[1][0] = 4; // posisi (2, 1)
x[1][1] = 5; // posisi (2, 2)
x[1][2] = 6; // posisi (2, 3)
Cara lain untuk mengisi nilainya adalah diisi saat variable tersebut dideklarasikan, seperti berikut:
int x[2][3] = {{1, 2, 3}, {4, 5, 6}};

Bagaimana cara Matrix tersebut agar bisa menampilkan data dalam bentuk seperti berikut:

1 2 3
4 5 6

berikut sourcodenya, terdapat 2 kali perulangan, for didalam for:
#include <stdio.h>

int main() {
    int x[2][3] = {{1, 2, 3}, {4, 5, 6}}; // insialisasi data
    int i, j;
    
    for (i=0; i<2; i++) { // for yang pertama
        for (j=0; j<3; j++) { // for yang kedua
            printf("%d ", x[i][j]); // mencetak isi array
        }
        printf("\n"); // mencetak enter pada baris terakhir.
    }
    return 0;   
}
dan jreng jreng... Hasil perintah diatas dapat teman-teman liat di hasil compile pada codepad berikut ini. Oke sedikit menjelaskan sourcode diatas,
  1. int x[2][3], tentu teman-teman sudah tau apa yang dilakukan pada baris ini. ya benar mendeklarasi dan mengisi data array pada variable x.
  2. int i, j, baris ini digunakan untuk menginisialisasi variable i dan j yang digunakan pada kedua for.
  3. FOR yang pertama, digunakan untuk pencacahan baris, hhhmmm... pencacahan apa ya jika di bahasa indonesiakan... mungkin semacam penghitungan misal dari baris 1 kemudian baris 2, baris 3, baris 4 dan seterusnya.
  4. FOR yang ke dua, digunakan untuk pencacahan colom, karena dalam hal ini terdapat 2 baris dan 3 kolom. karena setiap baris terdapat array dengan panjang data 3 sehinga pada FOR ini akan menghitung dari 0 sampai 2 untuk baris pertama, kemudian hal yang sama akan dilakukan pada baris yang ke 2.
  5. printf("%d ", x[i][j]), ini digunakan untuk mencetak isi dari array pada posisi i, j, yang mana i menandakan posisi baris, sedangkan j menandakan posisi kolom
  6. printf("\n"), digunakan untuk melakukan pemindahan baris jika semua data pada array baris tersebut sudah berhasil di print.
Trus apakah ada cara lain dalam mencetaknya tanpa perulangan, ya ada dengan cara manual, namun ini tidak disarankan untuk digunakan, karena sudah ada for yang sangat amat memudahkan dan mempersingkat waktu kita untuk menulis sourcecode, code ini hanya sebagai contoh untuk lebih memahami jalannya perintah for diatas:
#include <stdio.h>

int main() {
    int x[2][3] = {{1, 2, 3}, {4, 5, 6}}; // insialisasi data
    int i, j;

    // for untuk mencetak data pada baris pertama
    printf("%d ", x[0][0]); // mencetak posisi (0, 0)
    printf("%d ", x[0][1]); // mencetak posisi (0, 1)
    printf("%d ", x[0][2]); // mencetak posisi (0, 2)

    printf("\n"); // mencetak enter

    // for untuk mencetak data pada baris kedua
    printf("%d ", x[1][0]); // mencetak posisi (1, 0)
    printf("%d ", x[1][1]); // mencetak posisi (1, 1)
    printf("%d ", x[1][2]); // mencetak posisi (1, 2)
    
    return 0;   
}
Oke saya rasa sudah terlalu panjang penjelasannya... :) Artikel berikut akan membahas tentang kasus perkalian matrix antara matrix 2x2 dengan matrix 2x1, seperti berikut:

| 0 1 |     | 2 |
| 1 0 |  x  | 3 |

Sampai jumpa diartikel berikut, semoga bermanfaat..

INTEL AS DI BALIK "RANSOMWARE"

Sebuah ransomware baru menyebar luas dalam waktu singkat dan menimbulkan kehebohan di seluruh dunia pada akhir pekan ini. Program jahat bernama WannaCry alias Wanna Decryptor tersebut bahkan dilaporkan turut menumbangkan sistem komputer di rumah sakit di Indonesia.
Ransomware adalah kategori program jahat (malware) yang mengunci data di komputer dengan enkripsi, lalu berusaha memeras korban dengan meminta tebusan. Usai tebusan dikirim, barulah kunci ekripsi diberikan si pembuat ransomware untuk membuka kembali data di komputer korban.
Itu pula yang dilakukan oleh ransomware bernama WannaCry. Si program jahat meminta tebusan sebesar Rp 4 juta dalam bentuk mata uang virtual (cryptocurrency) Bitcoin yang dikirimkan ke alamat dompet digital sang penjahat cyber. Setelah tebusan dikirimpun, tak ada jaminan bahwa kunci enkripsi akan benar-benar dikirimkan ke korban.

Praktisi keamanan cyber Alfons Tanujaya dari Vaksinkom mengatakan WannaCry bisa menyebar luas dalam waktu singkat karena memiliki keunikan dibanding program jahat lain sejenisnya.
Ransomware pada umumnya mengandalkan teknik phising di mana calon korban harus meng-klik sebuah tautan untuk mengunduhransomware, misalnya di e-mail. Apabila tautan tidak di-klik, makaransomware tidak akan menginfeksi komputer.
Beda halnya dengan WannaCry. Ransomware yang satu ini dibuat dengan menggunakan tool senjata siber dinas intel Amerika Serikat, NSA, yang dicuri dan dibocorkan grup hacker bernama Shadow Broker pada April lalu.
“WannaCry mengeksploitasi celah keamanan Windows, MS 71-010. Dia akan scan port 445 (SMB). Kalau terbuka, dia akan langsung masuk,” ujar Alfons ketika dihubungi KompasTekno, Sabtu (13/5/2017), menjelaskan cara kerja sang ransomware yang menggunakan tool senjata cyber NSA.
Dengan kata lain, WannaCry bisa menginfeksi komputer lain secara otomatis lewat jaringan, tanpa butuh campur tangan korban yang tertipu meng-klik tautan berbahaya seperti dalam teknik phising radi.

Gara-gara tidak update
Celah keamanan yang dieksploitasi oleh WannaCry dikenal dengan isitilah “EternalBlue”. Exploit NSA inilah yang dibocorkan oleh kelompok hacker Shadow Broker, lalu kemudian dikembangkan menjadiransomware. WannaCry menginfeksi komputer lewat eksekusi remote code SMBv1 di sistem operasi Microsoft Windows.
Sebelum dibocorkan oleh Shadow Broker, EnternalBlue sudah sering dipakai oleh NSA untuk mengendalikan komputer sasaran dari jarak jauh secara remote. Exploit ini bisa dipakai menyerang komputer yang menjalankan Windows XP hingga Windows Server 2012.
Alfons mengatakan celah keamanan ini sebenarnya sudah diketahui dan ditambal oleh Microsoft melalui patch Windows pada Maret 2017 lalu. Patch yang bersangkutan ditandai “sangat penting” (critical) karena mengandung perbaikan untuk kelemahan fatal di atas.
Sayangnya, lanjut Alfons, ada saja pengguna, institusi, atau perusahaan yang belum memasang update ini karena berbagai alasan. Fitur automatic update yang idealnya terus dinyalakan malah dimatikan karena berbagai sebab, entah karena komputer tidak boleh restart atau sebab lain.
“Kalau OS (Windows) belum di-patch, maka tanpa perlu bantuan klik sekalipun WannaCry akan secara otomatis aktif dan menginfeksi sistem,” kata Alfons.
Begitu berhasil masuk ke sebuah komputer, WannaCry bisa menyebar dengan cepat ke komputer lain di lingkungan yang sama, misalnya di sebuah perusahaan. Seperti dijelaskan secara terpisah oleh firma keamanan Eset, WannaCry juga dibekali worm untuk memfasilitasi penyebarannya.
“Proses penyebaran masif disebabkan juga oleh agresifitasransomware yang terus bekerja secara terstruktur. Misalnya, apabila satu komputer perusahaan sudah terinfeksi oleh WannaCry, wormpada ransomware akan mencari sendiri komputer yang rentan untuk diinfeksi,” papar Eset dalam keterangan tertulis yang diterimaKompasTekno.
Para peneliti keamanan masih coba mencari tahu bagaimana cara WannaCry menginfeksi komputer pertama (initial infection vector) sebelum menyebar luas di jaringan lokal.

99 negara jadi korban
Berbekal teknologi tool cyber NSA, WannaCry berhasil menyebar luas ke berbagai belahan dunia hanya dalam kurun waktu kurang dari dua hari sejak Jumat (12/5/2017) kemarin. Firma keamanan Avast mencatat bahwa ransomware ini telah menyerang puluhan ribu komputer di 99 negara di semua benua.
Di Inggris, 16 rumah sakit yang tergabung dalam jaringan National Health Service menjadi korban WannaCry. Ransomware itu mengganggu pelayanan kesehatan karena sistem-sistem komputer yang menyimpan rekam medis pasien jadi tidak bisa diakses.

WannaCry juga dilaporkan telah masuk ke Indonesia dan mulai menginfeksi sistem komputer di beberapa rumah sakit. “Memang dari statistik yang banyak jadi korban itu jasa layanan kesehatan,” kata Alfons.
Pantauan KompasTekno, di Twitter beredar foto komputer sistem antrian di salah satu rumah sakit di Jakarta tak bisa berfungsi karena terinfeksi WannaCry. Akibatnya, antrian pasien pun jadi macet karena tidak bisa mengambil nomor antrian.
Komputer rumah sakit di Indonesia yang menjadi korban hanya menampilkan prompt (ransom note) di layar. Isinya memberitahukan bahwa komputer telah dikunci ransomware dan data di dalamnya hanya bisa diakses kembali kalau korban membayar uang tebusan yang diminta, sebanyak Rp 4 juta dalam bentuk Bitcoin.
Ransom note tersebut ditulis dalam bahasa Indonesia karena WannaCry memang mampu menampilkan nota dalam lebih dari 25 bahasa, untuk keperluan menyasar korban di negara-negara berbeda.
Alfons mencatat bahwa sehari lalu WannaCry sempat terdeteksi di 108.786 alamat IP. Dengan kata lain, ada komputer sejumlah itu yang terinfeksi. Namun, belakangan angkanya menurun menjadi hanya 1.260 beberapa jam sebelum artikel ini dipublikasikan.
Menurut Alfons, penurunan angka infeksi tersebut karena WannaCry sekarang sudah menonaktifkan dirinya sendiri lewat killswitch yang dipasang si pembuat.
“Dengan non-aktif artinya WannaCry tidak mencari korban baru lagi,” ujar Alfons, sambil menambahkan bahwa komputer yang terlanjur terinteksi tetap tersandera dan tidak bisa mengakses data.

Sumber : tekno.kompas.com

Format-Format Tipe Data Dalam Pemrograman C







Umumnya suatu program mempunyai proses pemasukan data. Dalam program berbahasa C, pemasukan data  dapat dilakukan dengan perintah scanf. Fungsi scanf merupakan fungsi yang dapat digunakan untuk memasukan berbagai jenis data, tergantung dengan format penentunya.

Format-format penentu tipe data yang umum dipakai adalah :
%c  Digunakan untuk pemasukan data bertipe char. 
%i atau %d Digunakan untuk pemasukan data bertipe int, char. 
%u Digunakan untuk pemasukan data berupa unsigned int atau unsigned char.  
%f Digunakan untuk pemasukan data berupa bilangan pecahan (float). 
%g Digunakan untuk memasukkan data float dengan pembulatan koma (,) otomatis. 
%o Digunakan untuk pemasukan data angka berbasis octal. 
%xDigunakan untuk pemasukan data angka berbasis hexadecimal.  
%s Digunakan untuk pemasukan data berupa string. 
%lf Digunakan untuk pemasukan data berupa double.

      Fungsi scanf() kurang begitu bagus jika dipakai untuk pembacaan string. Karena data yang tersimpan adalah hanya sampai menemukan spasi, maksudnya jika kita mengisikan 2 buah kata dengan pemisah spasi, maka data yang masuk ke variabel tersebut hanyalah kata yang pertama.
Oleh karena itu, pembacaan data bertipe string biasanya menggunakan perintah gets() yang bentuk umumnya adalah :
gets(namavariabel);g
Contoh : gets(nama);
             gets(alamat);
Untuk pembacaan data bertipe char, selain dengan menggunakan scanf() dengan format %c, bisa juga dengan menggunakan fungsi getch() atau getche(). Perbedaan dari getch() dan getche() adalah getch() digunakan untuk membaca data bertipe char tanpa menampilkannya di layar, dan getche() digunakan untuk membaca data bertipe char dengan menampilkan data karakternya di layar.
 Example :

#include <stdio.h>
#include <conio.h>
main()
{
    char a,b;
    printf(“Masukan Huruf pertama : “);
    a=getch();
    printf(“Masukan Huruf kedua : “);
    b=getche();
    printf(“Data yang dimasukan adalah %c dan %d\n”,a,b);
    getch();
    return 0;
}

Demikian sekilas tentang C, terimakasih ... Tunggu Update selanjutnya..!!
Saran dan Keritiknya yang di harapkan


Berkenalan Dengan Bahasa C


Bahasa C merupakan bahasa pemrograman yang paling banyak diminati didunia pemrograman.
Bahasa C diciptakan oleh Dennis Ritchie pada tahun 1972 dari Bell Telephone Laboratories untuk sistem oprasi UNIX. Pada awalnya, bahasa C hanya digunakan untuk membuat dan mengembangkan aplikasi jaringan.
Namun pada perkembangannya, bahasa C banyak juga digunakan untuk membuat dan mengembangkan aplikasi-aplikasi non-jaringan.
Bahasa C adalah bahasa pemrograman bahasa rendah (semakin redah suatu bahasa semakin sulit dipahami) yang menggunakan sedikit bahasa inggris dibandingkan bahasa-bahasa pemrograman yang lebih tinggi. Namun, dibalik itu bahasa C merupakan bahasa yang powerful. Bahasa ini memiliki kemampuan untuk 'bermain-main' dengan memory dan memiliki kebutuhan konsumsi memory yang kecil. Selain itu, bahsa ini lebih struktur jika dipetakan ke bahasa mesin (native code) dan memiliki kemampuan untuk memasukkan bahasa assembly kedalam kode bahasa C (inline assemembler).
Semua kode yang di - compile, akan berubah menjadi  nativ code atau bahasa mesin. Bahasa inilah bahsa paling rendah yang bener-bener 'dipahami' oleh komputer. Assembly, adalah bahasa pemrograman yang sedikit lebih manusiawi dari pada bahasa mesin. Bahasa ini membutuhkan berbaris-baris kode hanya untuk menampilkan text ke monitor.
Sekilas tentang C++.
C++ merupakan bahasa yang dikembangkan dari bahasa C oleh Bjarne Stroustrup pada tahun 1979 di Bell Labs, Bjarne Stroustrup menambahkan sifat Object-Oriented seprti Classes, Derived Class, Strong Type Checking, Inlining, dan fitur default argument sehingga pada awalnya C With Classes. Baru pada tahun 1983, nama tersebut berubah menjadi C++.
  • Compiler C
Compiler merupakan perangkan lunak yang di gunakan untuk mengubah souce code suatu bahasa pemrograman menjadi native code atau bahasa mesin agar dapat dieksekusi oleh komputer. Compiler berbeda dengan interpreter karna compiler harus meng-compile dulu suatu source code menjadi sebuah file executable (*.exe, *.com, dan lain-lain, etc..) sementara interpreter akan meng-interpret source code utuk dieksekusi.Jika interpreter akan langsung mengeksekusi perintah-perintah yang ada, tanpa harus mengubah source code tersebut menjadi sebuah file executable.
Kalau mau download compiler C nya Disini⇲ Linknya.
  •  Oprasi Input dan Output Dalam Bahasa C
Input dan Output data dalam bahasa C hanya berkisar antara input yang diberikan oleh keyboard yang selanjutnya akan ditampilkan (Output) di layar monitor. Dalam bahsa C banyak format untuk meng-input dan meng-output tergantung pada penggunaan file header yang digunakan, kemudian kita akan sedikit membahas tentang penggunaan 2 standar input dan output dasar yang sering digunakan dalam bahasa pemrograman khususnya bahasa C dengan format yang berbeda-beda.
  • Fungsi Output

1. printf
Fungsi printf() berguna untuk menampilkan semua jenis data baik number, string, atau karakter. Perhatikan contoh printf berikut ini :

#include <stdio.h>
int main()
 {
printf("Hello World\n");
}

Fungsi di atas akan menampilkan (meng-output) huruf yang berada di dalam tanda petik. \n berfungsi untuk ganti baris dalam sebuah tampilan output.
Tampilan program pada Compiler Dev C++ tersebut :

2. Puts
Ada cara lain untuk menampilkan suatu keluaran(output) ke layar yaitu dengan menggunakan fungsi puts. Fungsi puts() digunakan untuk menampilkan data yang bertipe string dan secara otomatis akan pidah baris (new line). 
Perhatikan penggunaan puts berikut ini:

#include<stdio.h>
int main()
 {
puts("My Life Is Simple");
puts("Melangkah Menuju Sukses");
}

 Kini tidak perlu lagi mengguanakan “\n” untuk ganti baris baru. Tampilan program :

3. Putchar
Fungsi ini digunakan untuk menampilkan sebuah karakter saja dan tidak mengandung escape sequence “\n”. perhatikan contoh berikut :

#include<stdio.h>
int main()
{
Char a;
 printf("masukkan nama = ");scanf("%c",&a);
 printf("Inisial  \n");
putchar(a);
}
Fungsi putchar ini hanya bisa menampilkan satu buah karakter saja sehingga apapun nilai yang kita masukkan hanya karakter pertama yang akan ditampilkan.

Berikut tampilan programnya (misal input nama "Hardy"):

Tambahan : Mengatur tampilan output data

Rumus sintaks :

printf(”%m,nf”, var)
  1. m : Menyatakan banyaknya digit angka.
  2. n : Menyatakan banyaknya digit angka dibelakang koma.
  3. var : variabel bertipe float yang akan ditampilkan.

EX : printf(”%4.3f”, nilai); ”artinya akan ditampilkan angka sebanyak 4 digit dan 3 digit angka dibelakang koma”.
  • Fungsi Input

1. Scanf
Jika fungsi scanf ini digunakan untuk membaca data dengan tipe array, karakter yang selanjutnya kita sebut dengan istilah string, maka fungsi ini hanya akan membaca data sampai ditemukan blank (space). Dengan demikian nilai setelah blank dianggap bukan lagi nilai dari variabel yang akan mengisi variabel tersebut. Fungsi scanf lebih cocok digunakan untuk data-data numerik.
Fungsi scanf biasanya digunakan bersama-sama dengan fungsi printf. Perhatikan contoh berikut :

#include<stdio.h>
int main()
{
char a[25];
int b;
printf("a = ");scanf("%s",a);
printf("b = ");scanf("%d",&b);
printf("Data yang anda masukkan adalah \n");
printf("a = %s \n",a);
printf("b = %d \n",b);
}

Setiap kali memasukkan data harus diikuti dengan menekan ENTER. Berikut adalah tampilan setelah dijalankan.


⇒Fungsi scanf() berguna untuk meninput data baik berupa bilangan, karakter, ataupun kalimat secara terformat. Berikut format-format yang digunakan untuk scanf() :

%c : Membaca sebuah karakter (character).
%s : Membaca sebuah string (string).
%i, %d : Membaca sebuah bilangan bulat (integer, desimal).
%f, %e : Membaca sebuah bilangan pecahan (real, float).
%o : Membaca sebuah bilangan octal.
%x : Membaca sebuah bilangan heksadesimal.
%u : Membaca sebuah bilangan tak bertanda.

2. gets
Jika kita menggunakan fungsi scanf untuk membaca data yang bertipe string, maka data tersebut hanya akan dibaca sampai ditemukan spasi. Misalnya nama “Matt Belammy” hanya kata “Matt” yang akan dibaca oleh program, sedangkan kata “Belammy” tidak terbaca karena sebelum kata tersebut program telah menemukan spasi/blank (space) yang mengakibatkan data ke varibel yang menyimpan nama dianggap selesai.
Untuk keperluan pemasukan data string yang panjang dipisahkan dengan spasi, bahasa C menyediakan fungsi gets. Perhatikan contoh berikut ini :

#include<stdio.h>
int main()
{
char nama[25];
char alamat[50];
printf("Nama Lengkap : ");gets(nama);
printf("Alamat : ");gets(alamat);
printf("\n");
printf("Data yang anda masukkan adalah\n");
printf("Nama : %s \n",nama);
printf("Alamat : %s \n",alamat);
}

Tampilan program :


3. getchar
Jika ingin memasukkan sebuah nilai karakter ke variabel yang bertipe karakter maka kita dapat menggunakan perintah getchar. Perhatikan contoh program berikut ini :

#include<stdio.h>
int main(){

char karakter;
printf (" masukan Kata Karakter Anda : ") ;
karakter=getchar();
printf("Karakter yang di Masukan : %c\n",karakter);

}
Berikut tampilannya :














Tinggal kita tambah kan sesuka hati, jangan pernah lelah tuk mencoba ,,Oke😁
Demikian Artikel kami semoga bermanfaat untuk kita semua Amiin...!!