Input & Output Integer

/
2 Comments
Post pertama tentang competitive programming, sekarang kita akan membahas hal yang paling basic dalam programming, terutama dalam dunia competitive programming yang mengambil input dari terminal atau command prompt.

LevelBeginner
Type
  • I/O Processing
Requirement
  • Basic Program Structure
  • Variable
Similar


Input


Jadi, kita mulai untuk hal yang paling simple, yaitu membaca integer.
Misalkan kita mempunyai input seperti ini.
567

Terus untuk membacanya

Pascal
readln(a);

C++
// using cin
cin >> a;
// using scanf
scanf("%d", &a);

Untuk membaca dua atau lebih integer, bisa dilakukan langsung bersama - sama.
234 212 900

Pascal
readln(a, b, c);

C++
// using cin
cin >> a >> b >> c;
// using scanf
scanf("%d%d%d", &a, &b, &c);

Pascal

Dan untuk pascal ada hal spesifik yang musti diperhatikan.
Di pascal dikenal dua procedure untuk membaca input, yaitu readln() dan read().
Apakah bedanya?
Jadi bayangkan pada saat membaca input, kita ada penunjuk karakter mana yang lagi diproses.
Jika kita menggunakan readln(), maka setelah dia mendapatkan data yang diinginkan, dia langsung memindahkan penunjuk kita ke karakter pertama baris berikutnya.
Kalau read(), dia hanya memindahkan penunjuk kita ke karakter di sebelah kanannya kalau dah mentok dia akan pindah ke karakter pertama baris selanjutnya.

Jadi misalkan inputnya seperti tadi, dan kita melakukan ini
readln(a, b);
readln(c);
Nanti variable 'a' berisi 234, 'b' berisi 212, sedangkan 'c' tidak berisi apa - apa, karena tidak ada data di baris berikutnya.

Dan kasus lain, kita memakai read().
read(a);
read(b);
read(c);
Ini akan bekerja sebagai mana mestinya. Tapi ada satu hal yang perlu diperhatikan lagi.

Misalkan inputnya seperti ini
213 432 234
123 987
Untuk membaca semuanya langsung, paling simple kita bisa menggunakan seperti ini
readln(a, b, c);
readln(d, e);
Itu akan memastikan a, b, c, d, e berisi nilai sesuai yang kita harapkan.

Dan juga bisa ditulis seperti ini
read(a, b, c, d, e);
Untuk read dan readln di pascal tidak memperhatikan baris, dia akan mencari sampai ketemu input selanjutnya, tidak memperhatikan whitespace. Khusus untuk readln, dia setelah selesai akan memindah penunjuknya langsung ke baris berikutnya, jadi jika masih ada sisa di sebelah kanannya, bakal di ignore.
(thanks to Nathan buat yang satu ini)

C++

Dan kita akan bahas kasus spesifik untuk C++.
Di C++ ada 2 cara untuk membaca input yaitu menggunakan cin atau scanf.

Untuk menggunakan "cin" di dalam C++, harus menginclude
#include <iostream>
Dan untuk menggunakan "scanf" di dalam C++, harus menginclude
#include <cstdio>

Dan juga perlu diketahui disarankan menggunakan scanf dibandingkan cin, karena scanf jauh lebih cepat daripada cin.
Hal yang lain adalah kalau tidak sangat mepet, tidak disarankan menggunakan cin dan scanf bersamaan dalam suatu program.

Dan yang paling gampang digunakan adalah cin, karena cin tidak perlu mengkhawatirkan itu sudah ganti baris atau belum, karena dia anggap semuanya sama, jadi dia akan membaca terus dari awal sampai akhir.
Misalkan untuk input ini
213 432 234
123 987

Cukup ditulis seperti ini
cin >> a >> b >> c >> d >> e;
Dan semuanya variable akan mendapatkan nilai yang sesuai tidak peduli mau di baris mana.

Dan untuk scanf sebenarnya hampir sama, dia juga tidak terlalu memikirkan dia ada di baris mana, tapi penulisannya lebih panjang.
scanf("%d%d%d%d%d", &a, &b, &c, &d, &e);
Scanf memerlukan suatu format di depannya menunjukkan data apa saja yang akan kita baca, dalam kasus ini adalah 5 integer, dan untuk satu integer itu dilambangkan %d, jadi %d nya ada 5.
Dalam scanf, terkadang ada orang menggunakan spasi dalam formatnya seperti "%d %d %d %d %d", hal ini bisa boleh juga dipakai.

Output


Pascal

Untuk output di dalam pascal menggunakan writeln(), dan write().
Kembali kita bayangkan di dalam hasil output kita ada penunjuk yang menunjukkan output kita selanjutnya akan muncul dimana.
Untuk write(), setelah menulis, penunjuknya akan berada pas di sebelah kanan karakter yang ditulis terakhir.
Untuk writeln(), setelah menulis, penunjuknya akan berada pas di baris baru karakter pertama.

Jadi jika kita ingin menulis seperti ini
1 2 3
4 5
Kita dapat melakukannya seperti ini
writeln(a,' ',b,' ',c);
writeln(d,' ',e);
Perlu diperhatikan kita harus manual menaruh spasi karena dia tidak otomatis menyediakan spasi untuk tulis - menulis ini.

Dan perlu diperhatikan, untuk setiap akhir dari output kita, penunjuk selanjutnya harus selalu ada di bawah, oleh karena itu baris terakhir kita masih menggunakan writeln() dibandingkan write() saja.

Dan kita dapat melakukannya dengan cara yang lain, misalnya
write(a);
write(' ');
write(b,' ');
write(c);
writeln();
write(d,' ');
writeln(e);
writeln() tanpa parameter itu menunjukkan kita ingin penunjuknya pindah ke bawah tanpa menulis apa - apa.

C++


Untuk C++, kita mempunyai dua pilihan cout dan printf.
Dan sama seperti sebelumnya, printf lebih cepat daripada cout.

Untuk cout, cara penggunaannya untuk contoh yang sama seperti pascal
cout << a << ' ' << b << ' ' << c << endl;
cout << d << ' ' << e << endl;
Perlu dilihat kita membubuhkan endl di akhir baris. 'endl' tersebut adalah sama dengan karakter '\n', fungsinya sama yaitu memindahkan penunjuk ke baris berikutnya. Jadi kode dibawah ini sama juga fungsinya.
cout << a << ' ' << b << ' ' << c << '\n';
cout << d << ' ' << e << '\n';
Nah ada cara lain kalau benar - benar ingin satu baris;
cout << a << ' ' << b << ' ' << c << endl << d << ' ' << e << endl;
Dan untuk printf, caranya hampir sama.
printf("%d %d %d\n", a, b, c);
printf("%d %d\n", d, e);
Perhatikan untuk printf tidak menggunakan tanda '&' di depan variable. Dan formatnya tersebut mewakilkan bagaimana nantinya akan ditampilkan, %d nantinya akan digantikan oleh variable yang bersangkutan, sedangkan karakter lainnya seperti ' '(spasi) dan '\n'(newline) akan tetap tercetak seperti itu. Dan untuk satu barisnya.
printf("%d %d %d\n%d %d\n", a, b, c, d, e);

Mungkin itu dulu untuk sekarang, aku tidak menyangka artikel ini jadi panjang, padahal cuman membahas input integer doang ==a...
Nanti aku akan membahas cara menginput string yang baik dan benar dan input list dan matriks dll.

Ciao...


You may also like

2 komentar:

  1. Bukannya pascal bisa langsung read(a,b,c,d,e) tanpa memperhatikan baris ya?

    BalasHapus
    Balasan
    1. Eh really? *coba dulu...
      Oh iya juga ==a... *my whole life is a lie... *ganti dulu

      Hapus

alijaya. Diberdayakan oleh Blogger.