Jumat, 03 Januari 2014

Introduction to be Competitive Programmer

Yup, sekarang saya mau ngebahas tentang hal-hal basic mengenai Competitive programming, dan dengan basic maksudnya dari I/O sama tipe data.Oiya, saya terbiasa menggunakan C++, jadi semua yang saya tulis kemungkinan besar saya tulis dengan C++.Sebelum membaca bagian bawah ini, saya asumsikan kalian sudah bisa menulis kerangka dasar dari program yang sangat basic dari C++, dari header, int main(), sampai return 0; .



  1. I/O (Input Output)
    ket: Input dari stdin dan Output ke stdout
    Pada C++, umumnya ada 2 tipe I/O, yaitu C-style dan C++ style.Header untuk C-style adalah <cstdio> , sedangkan C++ style adalah <iostream> . keterangan lebih lanjut tentang kedua cara itu bisa dibaca lebih lanjut di sini untuk C-Style, dan di sini untuk C++-style. I/O yang umumnya saya pakai adalah:
    • Untuk membaca dengan limit spasi dan newline, menggunakan scanf() (C-style) dan cin>> (C++ style)
    • Untuk membaca sampai newline, menggunakan gets()(C-style) dan getline() (C++ style)
    • Output menggunakan printf() (C-style) dan cout<<(C+ style)
    Note yang cukup penting, C++ style biasanya lebih lambat dari C-style, namun dengan sedikit modifikasi sebenarnya C++ style lebih cepat dari C-style (baca di sini)
  2. Tipe Data
    Tipe data yang saya tulis hanyalah tipe data basic yang sering saya gunakan, formatnya kurang lebih nama,argumen I/O C-style, dan range untuk tipe data integer
    • Integer/Bilangan bulat
      1. Short         -> %hd  -> −(215) sampai 215 − 1
      2. Int             ->  %d   -> −(231) sampai 231 − 1
      3. Long long ->  %lld -> −(263) sampai 263 − 1
      Terkadang, ada soal yang memiliki jawaban melebihi range long long, untuk soal seperti itu, ada baiknya mempelajari BigInteger di Java atau membuat BigInt sendiri di C++, yang mungkin lain kali saya bahas.
    • Floating-Point/Pecahan
      1. Float     -> %f
      2. Double -> %lf
      Untuk tipe data floating point ini, sebenarnya saya masih bingung dengan batasannya :| selain itu, usahakan untuk selalu menggunakan double, karena lebih presisi daripada float
    • Char/Karakter
      1. Char -> %c
      Sebenarnya, char juga merupakan tipe data integer, dengan range −(27) sampai 27 − 1. Kenapa bisa begitu? Karena kalau tidak salah, sebenarnya semua yang di C++ bisa direpresentasikan sebagai angka, CMIIW via comment ya :p
    • String/rangkaian karakter
      1. String -> tidak native di C
      Lho? string gak native di C? terus kalau mau proses string dengan C-style gimana?
      Solusi: gunakan array of char, dengan argumen %s .
     
Mungkin segini saja yang bisa saya tulis, tipe-tipe data lainnya seperti static array,vector,dll mungkin saya bahas di post setelahnya.Saya akan sangat senang menerima kritik serta saran kalian semua. See ya later!

Source:
www.cplusplus.com
http://en.wikipedia.org/wiki/Integer_%28computer_science%29
http://www.quora.com/C++-programming-language/Is-cin-cout-slower-than-scanf-printf

0 komentar:

Posting Komentar