Sabtu, 24 September 2011

7

[C/C++] Definisi dan Kegunaan Berbagai Keyword ANSI C dalam Pemrograman C/C++

  • Sabtu, 24 September 2011
  • Nurkholish Ardi Firdaus
  • Alhamdulillah, ini adalah postingan pertama saya setelah lama vakum dalam dunia blogging karena masa awal memasuki dunia perkuliahan. Mungkin mulai saat ini saya akan lebih banyak melakukan postingan tentang pemrograman C++ karena bahasa ini termasuk dalam mata prkuliahan saya. Sebisa mungkin saya akan berbagi ilmu yang saya miliki tentang bahasa C++ melalui blog ini. Postingan kali ini akan menjelaskan tentang fungsi berbagai keyword ANSI C dalam pemrograman C++.


    • auto
    Mendefinisikan sebuah variabel lokal sebagai yang memiliki lifetime lokal. Keyword auto menggunakan syntaks sebagai berikut:;
    [auto] definisi-data

    • break
    Membuat kontrol keluar dari pernyataan majemuk. Pernyataan break membuat alur yang sedang dijalankan keluar dari pernyataan iterasi seperti while, do atau switch. Sintaksnya hanya:;
    break;

    • case
    Merupakan bagian dari pernyataan percabangan switch dimana keyword case adalah sebagai pernyataan pilihan yang selanjutnya akan dijalankan jika ekspresi switch memenuhi suatu konstanta case. Syntaksnya adalah sebagai berikut:;
    switch (ekspresi) {
    case ekspresi-konstanta1:
    	alur pernyataan1;
    	break;
    case ekspresi-konstanta2:
    	alur pernyataan2;
    	break;
    case ekspresi-konstanta3:
    	alur pernyataan3;
    	break;
    .
    ..
    }
    Alur diatas dapat dijelaskan secara sederhana layaknya pilihan ganda, jika ekspresi yang mengikuti pernyataan switch sesuai dengan ekspresi-konstanta1 maka pernyataan1 akan dijalankan, jika sesuai dengan ekspresi-konstanta2 maka pernyataan2 akan dijalankan, jika sesuai dengan ekspresi-konstanta3 maka pernyataan3 akan dijalankan dan seterusnya. Jika tidak ada ekspresi-konstanta yang mengikuti pernyataan case dalam lingkup switch diatas yang memenuhi ekspresi maka alur tidak akan melakukan eksekusi apapun.;

    • char
    Merupakan type data mendasar dalam C/C++ yang menampung data berjenis karakter atau teks. Dapat juga dijadikan sebagai penanda type data nilai kembalian suatu fungsi. Contoh sintaksnya adalah sebagai berikut:;
    char huruf;
    huruf='h';
    Syntaks diatas, baris pertama adalah mendeklarasikan variabel huruf bertipe data char yang mempunyai panjang satu karakter. Sedangkan baris kedua adalah pernyataan penugasan yaitu mengisi nilai variabel huruf menjadi sama dengan h. Adapun pengunaan keyword char untuk mendeklarasikan tipe data dari nilai kembalian suatu fungsi:;
    char fungsiku(int x, int y, char z);
    Arti dari pernyatan diatas adalah kita mendeklarasikan fungsi dengan 3 buah parameter argumen (x bertipe data integer, y bertipe data integer, dan z bertipe data character) yang mempunyai nilai kembalian dengan tipe data character.;

    • const
    Mendeklarasikan/membuat nilai dari variabel atau pointer menjadi tidak bisa diubaha (konstanta). Berbeda dengan deklarasi variabel biasa, deklarasi konstanta harus langsung disertai dengan assigment nilai dari variabel konstanta tersebut. Contoh:;
    const x=2;
    Syntaks diatas adalah kita mendeklarasikan variabel konstanta x dengan nilai sama dengan 2.;


    • continue
    Adalah pernyataan yang membuat alur melewati lingkup iterasi seperti while, do, for saat itu dan melanjutkan ke nilai iterasi selanjutnya. Contoh penggunaannya adalah sebagai berikut:;
    for (i = 0; i < 50; i++)
      {
        if (array[i] == 0)
          continue;
        array[i] = array[i]/2;
      }
    Fungsi alur diatas adalah merubah semua nilai dari elemen array menjadi setengahnya tetapi tidak jika nilai elemen array itu sama dengan nol. 

    • dafault 
    Merupakan bagian dari penggunaan keyword switch, penjelasannya adalah pada lingkup pernyataan switch, alur akan mencari nilai dari berbagai kontanta case yang disajikan yang sesuai dengan ekspresi yang mengikuti keyword switch, jika tiak ada dari berbagai pernyataan case yang disajikan maka pernyataan dibawah keyword default -lah yang akan dijalankan. Contoh penggunaannya adalah sebagai berikut:;
    switch (operand)
      {
        case MULTIPLY:
          x *= y; break;
        case DIVIDE:
          x /= y; break;
        case ADD:
          x += y; break;
        case SUBTRACT:
          x -= y; break;
        case INCREMENT2:
          x++;
        case INCREMENT1:
          x++; break;
        case EXPONENT:
        case ROOT:
        case MOD:
          printf ("Not implemented!\n");
          break;
        default:
          printf("Bug!\n");
          exit(1);
      }

    • do
    Merupakan bagian dari pernyataan iterasi while...do yang fungsinya adalah mengulang berbagai pernyataan dengan kriteria pengulangan. Jika kriterianya terpenuhi maka pengulangan akan dilanjutkan, tetapi jika tidak maka pengulangan akan dihentikan. Contoh penggunaannya:;
    x = 1;
    do
      {
        x++;
      } while (x <= 100);
    Penjelasan alur diatas adalah variabel x akan terus bertambah nilainya satu selama nilai x lebih kecil atau sama dengan 100.;

    • double
    Adalah salah satu tipe data floating number dalam bahasa C/C++. Bedanya dengan tipe data float, double mempunyai titik presisi ganda. Contoh penggunaannya adalah sebagai berikut:;
    double modal;
    Code diatas artiya kita mendeklarasikan variabel modal dengan tipe data double.;

    • else
    Adalah bagian dari pernyataan kondisional if. Alur dibawah keyword else akan dijalankan jika ekspresi yang menyertai keyword if bernilai false. Contohnya adalah sebagai berikut:;
    if (ekspresi) pernyataan1;
        else pernyataan2;
    Jika ekspresi bernilai true maka pernyataan1 akan dijalankan, tetapi jika tidak maka pernyataan2 akan dijalankan. Bentuk lain dari pernyataan kondisional if..else adalah sebagai berikut:;
    if (ekspresi)
      {
        pernyataan1;
        pernyataan2;
        …
        …
      }
    else
      {
        pernyataan3;
        pernyataan4;
        …
        …
      }

    • enum
    Membuat tipe data enumerasi berjenis data integer yang mempunyai banyak nilai konstan yang telah didefinisikan.;
    enum [tag] {nama [=nilai], ...};
    Berikut adalah contoh penggunaannya:;
    enum nomor {Satu =1 , Dua = 2, Tiga = 3, Empat = 4};

    • extern
    Menunjukkan bahwa sebuah identifier didefinisikan di tempat lain. Dalam pemrograman modular, extern sangat bermanfaat jika kita ingin mengidentifikasi suatu variabel global yang telah dideklarasikan di tempat/file source code lainnya. Maka dalam pemrograman multifile, kita bisa mendeklarasikan semua variabel global pada suatu file lalu mengidentifikasikannya di file lain. File satu:;
    int x;
    int main(void)
    {
        x=1;
        cout << x << endl;
        return 0;
    }
    File dua:;
    extern int x;
    int func32(void)
    {
        int y;
        y=x;
        cout << y << endl;
        return 0;
    }
    Source code diatas menunjukkn bahwa File dua mengidentifikasi variabel x dari File satu yang telah dideklarasikan.;

    • float
    Sama seperti double, namum hanya mempunyai titik presisi tunggal.;
    float laba;

    • for
    Adalah salah satu pernyataan iterasi selain while..do.;
    for (i=0; i<100; i++) sum += x[i];

    • goto
    Merupakan pernyataan untuk memerintah alur yang sedang berjalan agar berpindah ke baris lain sesuai label. Contohnya adalah:;
    Mulai:
    	pernyataan;
    	..
    	.
    	goto Mulai;
    Alur akan mengulangi eksekusi ke pernyataan setelah mencapai baris goto Mulai;.;

    • if
    Merupakan pernyataan kondidional, keyword if digunakan untuk eksekusi kondisional. Secara mendasar sintaksnya adalah sebagai berikut:;
    if (ekspresi)
    	pernyataan;
    Secara lanjut dapat ditulis sebagai berikut:;
    if (ekspresi) 
    	{
    	pernyatanan1;
    	..
    	.
    	}
    else 
    	{
    	pernyatan2;
    	..
    	.
    	}

    • int
    Adalah tipe data standar berjenis bilangan bulat. Jangkauan tipe data int adalah −32,767 sampai 32,767. Deklarasinya adalah sebagai berikut:;
    int x;

    • long
    ;Merupakan tipe data turunan dari int yang mempunyai jangkauan yang lebih panjang yaitu −2,147,483,647 sampai 2,147,483,647. Contoh deklarasinya adalah sebagai berikut:;
    long x;

    • register
    Memberitahu compiler untuk menyimpan variabel yang dinyatakan dalam register CPU. Penggunaannya adalah sebagai berikut:;
    register definisi-data;
    Contoh penggunaannya adalah sebagai berikut:;
    register int i;

    • return
    Adalah pernyataan yang berfungsi untuk memberikan nilai kembalian suatu fungsi lalu alur akan keluar dari fungsi tersebut. Sintaksnya adalah sebagai berikut: return nilai; Contoh penggunaannya adalah sebagai berikut:;
    bool invers(bool exp) 
    	{
    	return !exp;
    	}

    • signed
    Merupakan type data modifier yang membuat suatu tipe data mempunyai jangkauan dari nilai minus batas atasnnya hingga nilai plus dari baas atasnnya. Penggunaannya adalah sebagai berikut:;
    signed int var1;
    Sebenarnya juga dapat ditulis seperti dibawah ini tanpa mengubah fungsinya:;
    int var1;
    sizeof Adalah fungsi yang mengembalikan nilai ukuran dalam byte dari ekspresi atau type data yang diberikan. Contoh penggunaannya adalah sebagai berikut:;
    x=sizeof(int);

    • static
    Mempertahankan nilai variabel untuk bertahan hidup setelah ruang lingkup berakhir. Kata kunci static dapat diterapkan untuk kedua definisi data dan fungsi:;
    static data-definition;
    static function-definition;
    ; 

    • struct
    Mengelompokkan variabel dalam record tunggal. Sintaksnya adalah sebagai berikut:;
    struct [nama-struktur]
      {
        [type nama-variabel] ;
        ...
      } [variabel-struktur] ;
    Contoh:;
    struct person
     		{
        	string nama, nomor_hp, alamat;
        	int umur, tinggi_badan;
     		};
    Contoh diatas kita mendeklarasikan struktur dengan nama person yang mempunyai anggota data bertipe string 3 buah dan bertipe integer 2 buah. Deklarasi anggota data dengan tipe data sama dipisahkan dengan tanda koma dan titik koma jika tipe datanya berbeda. [variabel-struktur] dapat diisi ataupun tidak (opsional). Penggunaan tipe data struktur diatas dapat seperti ini:;
    struct person orang[100];
    Atau jika kita ingin mendeklarasikan variabel array orang langsung setelah mendeklarasikan strukturnya maka dapat ditulis seperti ini:;
    struct person
     		{
        	string nama, nomor_hp, alamat;
        	int umur, tinggi_badan;
     		}orang[100];

    • switch
    Merupakan pernyataan percabanagan, menyebabkan kontrol melakukan percabangan terhadap daftar pernyataan yang disediakan dalam blok pernyataan. Sintaknya adalah:;
    switch (ekspresi) pernyataan
    Secara lanjut dapat ditulis:;
    switch (ekpresi) 
    	{
    	case ekspresi-konstanta1:
    		..
    	case ekspresi-konstanta2:
    		..
    	}

    • typedef
    Mendefinisikan/membuat tipe data baru. Sinaksnya adalah:
    typedef definisi-type identifier;
    Contoh penggunaannya adalah sebagai berikut:;
    typedef unsigned char byte;
    typedef char str40[41];
    typedef struct {float re, im;} complex;
    typedef char *byteptr;
    typedef int (*fncptr)(int);
    Setelah definisi diatas, maka kita dapat mendeklarasikan:;
    byte m, n;
    str40 myStr;
    complex z1, z2;
    byteptr p;
    fncptr myFunc;
    Sama seperti kita mendeklarasikan:;
    unsigned char m, n;
    char myStr[41];
    struct {float re, im;} z1, z2;
    char *p;
    int (*myFunc)(int);

    • union

    Mengelompokkan variabel yang berbagi ruang penyimpanan yang sama. Sebuah serikat mirip dengan sebuah struct, kecuali union memungkinkan kita untuk menentukan variabel yang berbagi ruang penyimpanan. Sintaks untuk mendefinisikan serikat adalah:;
    union [union-type-name]
      {
        type variable-names;
        ...
      } [union-variables] ;
    Contoh,;
    union short_or_long
      {
        short i;
        long l;
      } a_number;

    • unsigned

    Merupakan type modifier yang dapat diterapkan ke tipe data standar. Seperti namanya unsigned (tanpa tanda) maka jika kita mendeklarasi variabel menggunakan type modifier unsigned maka jangkauan variabel tersebut hanya akan bermula dari 0 hingga batas atas tipe data dasar tersebut dikali 2. Contohnya jika kita mendeklarasikan variabel dengan tipe int yang mempunyai jangkauan – 32,767 sampai 32,767 maka jika kita awali dengan type modifier unsigned variabel itu akan mempunyai jangkauan 0 sampai 6,5534. Contoh deklarasi variabel dengan modifier unsigned adalah seperti dibawah ini:;
    unsigned int x;

    • void

    Adalah type data kosong. Jika kita gunakan dalam deklarasi fungsi maka artinya fungsi tersebut tidak mempunyai nilai kembalian:;
    void hello (char *nama)
    {
      printf("Hallo, %s bagaimana kabar anda?", nama);
    }
    Jika dimasukkan ke deklarasi parameter fungsi maka artinya fungsi tersebut tidak memerlukan parameter apapun.;
    void hello (void)
    {
      printf("Hallo bagaimana kabar anda?”);
    }

    • volatile 
    Menunjukkan bahwa variabel dapat diubah oleh rutinitas latar belakang. Syntaksnya adalah sebagai berikut:;
    volatile data-definition;

    • while 
    Adalah pernyataan iterasi/pengulangan dimana suatu alur akan diulang ketika kondisi yang menyertai while bernilai true. Sintaksnya adalah:;
    while (ekspresi) pernyataan;
    Ketika ekspresi bernilai true maka pernyataan akan terus dijalankan hingga ekspresi bernilai false. Contoh:;
    while (*p == ' ') p++;
    Pernyataan juga dapat dibuat majemuk sesuai keinginan kita.Demikian postingan saya yang sederhana ini. Ditunggu komentarnya yaaa....

    Kamis, 11 Agustus 2011

    1

    Facebook akan Hancur pada 5 November Mendatang?

  • Kamis, 11 Agustus 2011
  • Nurkholish Ardi Firdaus
  • Dunia maya benar-benar sedang berada di masa sulitnya sekarang ini. Bagaimana tidak? Selama kurun waktu satu tahun terakhir ini, aktivitas hacking menjadi sangat aktif dan mulai terasa mengancam. Situs-situs besar runtuh satu-persatu, informasi yang rahasia mulai terlempar ke publik, dan keamanan semua transaksi yang penting dipertanyakan. “Hebatnya”, semua kekacauan ini lahir dari sekelompok orang tanpa identitas yang menamai dirinya Anonymous. Apakah ini sebuah tren? Atau usaha untuk menegakkan keadilan? Ataukah ini sebuah permainan anak-anak bagi mereka? Apapun itu, Facebook kini menjadi pihak yang harus bertahan.
    Melalui sebuah video yang dirilis di situs video Youtube, Anonymous menyampaikan sebuah pesan ancaman yang cukup jelas untuk Facebook. Situs jejaring sosial terbesar di dunia itu dijadikan target sebuah operasi hacking dengan sandi nama (codename) Operation Facebook. Misi Anonymous sangat jelas, membunuh dan menghancurkan Facebook secara total pada 5 November 2011 mendatang.
    Lantas alasan apa yang menjadi dasar serangan ini? Anonymous mempermasalahkan kebijakanprivacy milik Facebook yang masih memungkinkan situs ini untuk menjual, membagi, dan menyerap semua informasi pribadi pemilik akun walaupun sudah tidak aktif sekalipun. Facebook bisa membagi informasi ini kepada pihak ketiga, di lain sisi juga rentan untuk dieksploitasi dan dicuri. Sebuah kekhawatiran yang masuk akal
    Apa yang sebenarnya dikejar oleh Anonymous dengan semua aksi ini? Apakah mereka ingin tampil sebagai seorang Messiah di dunia maya yang memang sedang carut-marut? Apakah mereka ingin membangun kesadaran? Atau ini semua memang permainan? Untuk menghapus kekhawatiran yang ada,  Anonymous hanya menyampaikan bahwa suatu saat masyarakat akan berterima kasih atas apa yang mereka coba dan sudah lakukan. Mereka mengaku aksi ini bukanlah sebuah tindakan vandalisme untuk membahayakan atau menyerang kita, tetapi lebih untuk menyelamatkan.
    Anda bisa melihat video ancaman tersebut di bawah ini, beserta dengan transkripnya. Apakah 5 November 2011 akan menjadi akhir dari Facebook? Kita lihat saja, The Battle of Wits start now!
    VIDEO





    TRANSKRIP (ENGLISH)



    Attention citizens of the world,
    We wish to get your attention, hoping you heed the warnings as follows:
    Your medium of communication you all so dearly adore will be destroyed. If you are a willing hacktivist or a guy who just wants to protect the freedom of information then join the cause and kill facebook for the sake of your own privacy.
    Facebook has been selling information to government agencies and giving clandestine access to information security firms so that they can spy on people from all around the world. Some of these so-called whitehat infosec firms are working for authoritarian governments, such as those of Egypt and Syria.
    Everything you do on Facebook stays on Facebook regardless of your “privacy” settings, and deleting your account is impossible, even if you “delete” your account, all your personal info stays on Facebook and can be recovered at any time. Changing the privacy settings to make your Facebook account more “private” is also a delusion. Facebook knows more about you than your family.

    You cannot hide from the reality in which you, the people of the internet, live in. Facebook is the opposite of the Antisec cause. You are not safe from them nor from any government. One day you will look back on this and realise what we have done here is right, you will thank the rulers of the internet, we are not harming you but saving you.
    The riots are underway. It is not a battle over the future of privacy and publicity. It is a battle for choice and informed consent. It’s unfolding because people are being raped, tickled, molested, and confused into doing things where they don’t understand the consequences. Facebook keeps saying that it gives users choices, but that is completely false. It gives users the illusion of and hides the details away from them “for their own good” while they then make millions off of you. When a service is “free,” it really means they’re making money off of you and your information.
    Think for a while and prepare for a day that will go down in history. November 5 2011, #opfacebook . Engaged.
    This is our world now. We exist without nationality, without religious bias. We have the right to not be surveilled, not be stalked, and not be used for profit. We have the right to not live as slaves.
    We are anonymous
    We are legion
    We do not forgive
    We do not forget
    Expect us

    TRANSKRIP (SETELAH DITERJEMAHKAN KEDALAM B.INDONESIA)
    Perhatian warga dunia, 


    Kami ingin mendapatkan perhatian Anda, berharap Anda memperhatikan peringatan sebagai berikut: 
    Media Anda komunikasi Anda semua begitu mahal memuja akan dihancurkan. Jika Anda adalah hacktivist bersedia atau seorang pria yang hanya ingin melindungi kebebasan informasi kemudian bergabung penyebabnya dan membunuh facebook demi privasi Anda sendiri. 

    Facebook telah menjual informasi kepada badan-badan pemerintah dan memberikan akses rahasia untuk perusahaan keamanan informasi sehingga mereka dapat memata-matai orang-orang dari seluruh dunia. Beberapa disebut infosec perusahaan whitehat bekerja untuk pemerintahan otoriter, seperti Mesir dan Suriah. 

    Segala sesuatu yang Anda lakukan di Facebook tetap di Facebook terlepas dari pengaturan "privasi", dan menghapus account Anda adalah mustahil, bahkan jika Anda "menghapus" account Anda, semua info pribadi Anda tetap di Facebook dan dapat dipulihkan setiap saat. Mengubah pengaturan privasi untuk membuat account Facebook Anda lebih "pribadi" juga khayalan. Facebook tahu lebih banyak tentang Anda daripada keluarga Anda. 


    Anda tidak dapat bersembunyi dari realitas di mana Anda, orang-orang dari internet, tinggal masuk Facebook adalah kebalikan dari penyebab Antisec. Anda tidak aman dari mereka atau dari pemerintah manapun. Suatu hari Anda akan melihat kembali hal ini dan menyadari apa yang telah kita lakukan di sini adalah tepat, Anda akan berterima kasih kepada penguasa internet, kami tidak merugikan Anda, tetapi menghemat. 


    Kerusuhan sedang dilakukan. Ini bukan pertempuran atas masa depan privasi dan publisitas. Ini adalah pertempuran untuk pilihan dan informed consent. Ini berlangsung karena orang sedang diperkosa, menggelitik, dianiaya, dan bingung dalam melakukan hal-hal di mana mereka tidak mengerti konsekuensi. Facebook terus mengatakan bahwa itu memberikan pengguna pilihan, tetapi yang benar-benar palsu.Ini memberikan pengguna ilusi dan menyembunyikan rincian menjauh dari mereka "untuk kebaikan mereka sendiri" sementara mereka kemudian membuat jutaan dari Anda. Ketika sebuah servis "bebas," itu benar-benar berarti mereka sedang membuat uang dari Anda dan informasi Anda. 

    Pikirkan untuk sementara dan mempersiapkan untuk hari yang akan turun dalam sejarah. 5 November 2011, # opfacebook. Terlibat. 

    Ini adalah dunia kami sekarang. Kami ada tanpa kebangsaan, tanpa bias agama.Kami memiliki hak untuk tidak surveilled, tidak berjalan, dan tidak digunakan untuk keuntungan. Kami memiliki hak untuk tidak hidup sebagai budak. 

    Kami anonim 
    Kami legiun 
    Kami tidak memaafkan 
    Kami tidak lupa 
    Mengharapkan kita


    Minggu, 07 Agustus 2011

    0

    [Ebook] Membuat Aplikasi Mobile dengan Qt

  • Minggu, 07 Agustus 2011
  • Nurkholish Ardi Firdaus
  • Judul              : Membuat Aplikasi Mobile dengan Qt
    Tahun Terbit : 2011
    Penulis           : Mohamad Iqbal
    Bahasa          : Indonesia


    Perkembangan penggunaan Qt di Indonesia sangat pesat. Qt tidak hanya digunakan untuk pengembangan aplikasi mobile untuk platform Symbian dan Meego, namun Qt juga digunakan untuk pengembangan aplikasi desktop di platform Linux. Penggunaan Linux di Indonesia yang semakin tinggi memicu pesatnya perkembangan penggunaan Qt sebagai kakas pemrograman utama diplatform tersebut.
    Qt akan tetap menjadi kakas pengembangan aplikasi yang penting bagi Nokia. Saat ini telah beredar lebih dari 200 juta telepon genggam dengan sistem operasi Symbian dan Nokia memiliki target penjualan 150 juta Symbian kedepannya. Mengingat semua platform Symbian memiliki akses ke Ovi Store, tentu kesempatan bagi developer di area ini masih terbuka lebar.
    Selain itu Qt adalah sebuah platform yang dibelahan dunia lain digunakan sebagai kakas untuk berinovasi, tidak hanya untuk membuat aplikasi mobile, sebagai contoh Dreamworks merubah semua kakas animasi internalnya ke Qt dan menggunakannya untuk membuat film seperti “MegaMind” dan “How to Train Your Dragon”. Qt kedepannya akan tetap menjadi kakas untuk berinovasi baik di desktop, web, maupun mobile.

    Crowja-Coderz

    Sabtu, 06 Agustus 2011

    0

    [VBS] Trik Menghitung Kemunculan Angka Pada Suatu Interval

  • Sabtu, 06 Agustus 2011
  • Nurkholish Ardi Firdaus
  • Saya sering sekali membaca soal OSN (Olimpiade Sains Nasional) bidang komputer dan matematika yang menanyakan tentang jumlah kemunculan suatu angka pada suatu interval bilangan. Contoh:

    "Hitunglah berapa kali kemunculan angka 5 pada interval 1-1000?"

    Nah loh, kalo dihitung secara manual kamu bakalan kehabisan kertas tuh, hehehe. Walau cara ini tidak bisa diterapkan pada saat tes berlangsung, namun semoga trik ini bisa membantu teman-teman untuk mencocokkan jawabannya pada saat teman-teman latihan mengerjakkan soal. Yang kamu butuhkan cuma komputer bersistem operasi windows. Oke kita langsung buat skrip VBS untuk menyelesaikan soal diatas. Berikut adalah listening code-nya.




    Dim angka, interval_bawah, interval_atas, hitung
    
    angka=5
    interval_bawah=1
    interval_atas=1000
    
    if interval_atas >= interval_bawah then
     For i = interval_bawah to interval_atas
      if instr(i,cstr(angka))>0 then hitung = hitung + 1
     next
    end if
    
    Msgbox hitung

    Nah, kurang lebih begitulah. Jika sobat menemukan soal seperti ini tp berbeda angka, sobat hanya perlu mengganti angka yg ada d skrip nya saja. Semoga bermanfaat.

    Minggu, 01 Mei 2011

    10

    [VB.NET] Belajar Membuat Program File Scanner

  • Minggu, 01 Mei 2011
  • Nurkholish Ardi Firdaus
  • Alhamdulillah, ini adalah postingan pertama saya setelah 1 minggu vakum setelah UN. Sebenarnya UN nya sudah selesai 1 minggu yang lalu, tetapi saya baru menyempatkan posting sekarang. Oke daripada kebanyakan omong, kita mulai saja rapat kali ini ^_^. Sebelumnya saya pernah mempostingkan bagaimana cara membuat Program Virus Scanner Sederhana, tetapi ternyata metode scan nya sangatlah lambat dan merepotkan. Nah kali ini saya akan membuat Program File Scanner yang mana metodenya lumanyan lebih cepat dan tidak memberatkan RAM. Mari kita lihat bagaimana?.



    Buatlah proyek baru dengan 1 Form

    Deklarasi:
    1 Form
    2 Button
    2 TextBox
    1 ComboBox
    5 Label
    1 Timer
    

    Buatlah sedemikian rupa seperti ini sesuai keterangan dibawahnya:



    Keterangan
    1: ComboBox
     Name: cboDir
     DropDownStyle: DropDownList
    2: Button
     Name: cmdBrowse
     Text: "Browse"
    3: Button
     Name: cmdScan
     Text: "Scan"
    4: TextBox
     Name: txtCurrDir
     MultiLine: True
     ScrollBars: Vertical
    5: Label
     Name: lblSpeed
     Text: "Speed:"
    6: TextBox
     Name: txtCurrFile
    7: Label
     Name: lblScanned
     Text: "Scanned:"
    8: Label
     Name: lblUnscanned
     Text: "Unscanned:"
    9: Label
     Name: Label1
     Text: "Current Folder"
    10: Label
     Name: Label2
     Text: "Current File"
    11: Timer
     Name: tmrSpeedo
     Enabled: False
     Interval: 1000

    Terakhir masukkan source codenya:

    Source Code Form1

    ' Program file scanner sederhana
    ' coded by nurkholish ardi f
    ' www.cr0wja.co.cc
    Imports Microsoft.VisualBasic.FileSystem
    Imports Microsoft.VisualBasic.Strings
    Public Class Form1
    
        Dim Scanned As UInt64
        Dim Unscanned As UInt64
        Dim ScannedBefore As UInt64
        Dim RunScan As Boolean
    
        Private Sub cmdScan_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdScan.Click
            If cboDir.Text = "" Then Exit Sub
            If cmdScan.Text = "Scan" Then
                Turn(True)
                ScanDir(cboDir.Text, True)
                If cmdScan.Text = "Stop" Then ShowRes()
            Else
                ShowRes()
            End If
            Turn(False)
        End Sub
    
        Private Sub Turn(ByVal switch As Boolean)
            Scanned = 0
            Unscanned = 0
            ScannedBefore = 0
            tmrSpeedo.Enabled = switch
            RunScan = switch
            txtCurrDir.Text = ""
            txtCurrFile.Text = ""
            lblScanned.Text = "Scanned: "
            lblSpeed.Text = "Speed: "
            cmdBrowse.Enabled = Not switch
            cboDir.Enabled = Not switch
            If switch Then
                cmdScan.Text = "Stop"
            Else
                cmdScan.Text = "Scan"
            End If
        End Sub
    
        Private Sub ShowRes()
            MsgBox("Done, " & Scanned & " file(s) scanned, " & Unscanned & " file(s) unscanned", MsgBoxStyle.Information, "Done")
        End Sub
    
        Private Sub cmdBrowse_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdBrowse.Click
            Dim OpenDirDlg As New FolderBrowserDialog
            With OpenDirDlg
                .ShowDialog()
                If .SelectedPath <> Nothing Then
                    cboDir.Items.Add(.SelectedPath)
                    cboDir.Text = .SelectedPath
                End If
            End With
            OpenDirDlg = Nothing
        End Sub
    
        Private Sub ScanDir(ByVal dirpath As String, ByVal subdirs As Boolean)
            If Not RunScan Then Exit Sub
            Application.DoEvents()
            If Strings.Right(dirpath, 1) <> "\" Then dirpath &= "\"
            Dim CurrFile As String
            Dim value As Int32
            CurrFile = Microsoft.VisualBasic.Dir(dirpath)
            Do While CurrFile <> ""
                value = ScanFile(dirpath & CurrFile)
                Scanned += value
                Unscanned += IIf(value = 1, 0, 1)
                txtCurrFile.Text = CurrFile
                txtCurrDir.Text = dirpath
                lblScanned.Text = "Scanned: " & Scanned & " file(s)"
                lblUnscanned.Text = "Unscanned: " & Unscanned & " file(s)"
                CurrFile = Microsoft.VisualBasic.Dir
            Loop
    
            If subdirs Then
                For Each SubDir As String In FileIO.FileSystem.GetDirectories(dirpath, FileIO.SearchOption.SearchTopLevelOnly)
                    Try
                        ScanDir(SubDir, True)
                    Catch ex As Exception
    
                    End Try
                Next
            End If
        End Sub
    
        Private Function ScanFile(ByVal filepath As String) As Int32
            If Not RunScan Then Exit Function
            Application.DoEvents()
            Try
                Dim OpenFile As New IO.StreamReader(filepath)
                '==========================================
                ' Disini agan bisa menambahkan code yang selanjutnya, setelah akses stream file reader terbuka
                ' bisa berupa mencari bit pada file, mendapatkan hash md5 nya atau sebagainya
                ' sesuai keinginan agan
                '==========================================
                OpenFile.Close()
                Return 1
            Catch ex As Exception
                ' jika terjadi error
                Return 0
            End Try
        End Function
    
        Private Sub tmrSpeedo_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tmrSpeedo.Tick
            If ScannedBefore = 0 Then
                ScannedBefore = Scanned
            Else
                lblSpeed.Text = "Speed: " & (Scanned - ScannedBefore) & " file/s"
                ScannedBefore = Scanned
            End If
        End Sub
    
    End Class

    Dan setelah saya coba Run, kecepatan scan nya lumayan nih.


    Tetapi itu belum ada code yang akan dijalankan pada setiap file yang akan di scan, mungkin jika agan menambahkan code seperti mengambil hash MD5 nya mungkin kecepatan akan semakin lambat tergantung banyaknya tugas yang dilaksanakan.

    Nah, sampai sekian dulu. Seperti biasanya jika agan malas membuatnya, agan bisa mendownload source codenya dibawah ini.

    Crowja-Coderz


    Subscribe