Ekspresi dan Masukan/Keluaran

dokumen-dokumen yang mirip
JENIS DATA SEDERHANA & INPUT/OUTPUT DATA

Sesi/Perkuliahan ke: II

MATERI 2 JENIS-JENIS DATA SEDERHANA & INPUT/OUTPUT DATA

Algoritma,Flowchart, Konsep

TIPE, NAMA, DAN NILAI

Materi. Tipe, Variabel dan Operator Algoritma Pemrograman PENULISAN ALGORITMA PENULISAN ALGORITMA 15/03/2010 NAMA DAN EKSPRESI

PENGANTAR KOMPUTER & SOFTWARE I REPRESENTASI DATA

PENGANTAR KOMPUTER & SOFTWARE I REPRESENTASI DATA

.::BAB II.::MENGENAL PASCAL

Tipe Data dan Operator dalam Pemrograman

JENIS-JENIS DATA DAN STATEMEN INPUT OUTPUT

Algoritma dan Pemrograman Bab II Dev Pascal, Variabel, Tipe Data. Adam Mukharil Bachtiar, S.Kom. Universitas Komputer Indonesia

KONSEP DASAR BAHASA PASCAL

AP2a (Pascal) Akuntansi Kelas 1 Semester 2. Hana Pertiwi S.T

Bab 2 DASAR-DASAR ALGORITMA

ALGORITMA TUGAS 2 RESUME ALGORITMA PERCABANGAN DAN ALGORITMA PERULANGAN. Disusun Oleh : Sakina Mawardah Teknik Informatika. Dosen : Asep M. Yusuf, S.

MODUL I DAN 2 PENGANTAR dan IDENTIFIER PASCAL

Pengenalan Pascal/DevPascal

MODUL PRAKTIKUM PERCABANGAN DAN PENGULANGAN

Teori Algoritma. Struktur Algoritma

Indentifier, Keywords, Variable, Tipe Data dan Operator. Ramos Somya, S.Kom., M.Cs.

III STATEMEN IF KONDISI TUNGGAL DAN GANDA A. IF TUNGGAL. XI_Sem.1 SMA Sedes Sapientiae Bedono

Chapter 3.2 : Tipe, Nama dan Nilai

Tabel 1. Jenis data integer Ukuran memori (dalam byte)

Algoritma Pemrograman

Dasar Komputer & Pemrograman 2A

Pengantar dalam Bahasa Pemrograman Turbo Pascal Tonny Hidayat, S.Kom

PENGANTAR KOMPUTER DAN TEKNOLOGI INFORMASI 1A

MODUL 3 ALGORITMA PEMROGRAMAN

menunjukkan tipe hasil dari fungsi. sqr, succ dan sebagainya. buat sendiri.

FUNGSI. Blok fungsi juga diawali dengan kata cadangan Begin dan di akhiri dengan kata cadangan End dan titik koma.

ALGORITMA PERULANGAN

Perkuliahan Pemrograman II (Teori / Praktikum) Minggu 3

KONSEP DASAR BAHASA PASCAL

Algoritma Pemrograman

1. Integer Interger adalah data numerik yang tidak mengandung pecahan, dan disajikan dalam memori komputer sebagai angka bulat. Mengacu pada obyek

Algoritma Pemrograman

Algoritma Pemrograman I KONSEP DASAR

Pertemuan 4 KONSEP TIPE DATA

P A S C A L D A S A R

Universitas Komputer Indonesia

VARIABEL, TIPE DATA, KONSTANTA, OPERATOR DAN EKSPRESI. Pemrograman Dasar Kelas X Semester 2

IF32222 STRUKTUR DATA TIPE DATA. Oleh : Andri Heryandi, M.T.

PSEUDOCODE TIPE DATA, VARIABEL, DAN OPERATOR

TPI4202 e-tp.ub.ac.id. Lecture 5

a. TRUE b. FALSE c. Jawaban A dan B keduanya dimungkinkan benar d. Tidak dapat ditentukan e. Tidak ada jawaban di antara A, B, C, D yang benar

Teori Algoritma TIPE DATA

Nama, Tipe, Ekspresi, dan Nilai

BAB III Pengenalan Tipe Data dan Bahasa Pemrograman C/C++

Pengenalan Pascal. Sejarah Singkat Pascal

Algoritma Pemrograman

Chapter 5 Choice. repeatedly if tanda 2 on label: lakukan proses potong 2 if tanda 3 on label: lakukan proses potong 3 until switched off program 5.

Tinjau algoritma dibawah ini

SMA SANTO PAULUS PONTIANAK

KONSEP DASAR BAHASA PASCAL. Pengertian SEJARAH SINGKAT BAHASA PASCAL STRUKTUR DAN KOMPONEN DASAR PROGRAM PASCAL.

Struktur Data. Belajar Struktur Data Menggunakan Pascal Pertemuan-1

Brigida Arie Minartiningtyas, M.Kom

Algoritma Pemrograman

Perulangan. Bentuk Proses. 1. Perulangan For positif contoh 1 : perulangan positif untuk satu statement :

Dasar Komputer & Pemrograman 2A

Dasar Komputer & Pemrogaman 2A

MODUL 1. Struktur Bahasa PASCAL secara umum

I. KATA PENGANTAR. Modul Algoritma Pemrograman. Modul Ke-3 - Hal 1

ALGORITME DAN PEMROGRAMAN

Algoritma Pemrograman I

Dasar Komputer dan Pemrograman. Konsep Tipe Data dan Operator Nama dan Nilai Data

Algoritma Pemrograman

Bab 2. Dasar-Dasar Pemrograman C

Brigida Arie Minartiningtyas, M.Kom

Belajar itu, Tidak harus menunggu materi dari guru Inisiatif Mencari itulah BELAJAR.

Bab 1 Algoritma dan Pemrograman Tersruktur

Algortima. Teguh Cahyono, ST.M.Kom

Struktur Data adalah : suatu koleksi atau kelompok data yang dapat dikarakteristikan oleh organisasi serta operasi yang didefinisikan terhadapnya.

Type Data terdiri dari : - Data Tunggal : Integer, Real, Boolean dan Karakter. - Data Majemuk : String

Algoritma dan Pemrograman Bab II Tipe Data, Variabel, & Konstanta

Pengenalan Algoritma dan Pemrograman Pascal

Program. Instruksi-instruksi yang diberikan kepada komputer agar dapat melaksanakan tugas-tugas tertentu

Bab 3. Decision 1 (Pengambilan Keputusan)

Struktur dan Organisasi Data 2 STRUKTUR DATA

1/8/2011. Pertemuan 13-14: Dasar Pemrograman. Sub pokok bahasan. Program Komputer dan Bahasa Pemrograman. Program Komputer dan Bahasa Pemrograman

TIPE DATA, VARIABLE, dan OPERATOR DELPHI

Dasar Komputer & Pemrograman 2A

Pengantar dalam Bahasa Pemrograman Turbo Pascal

SOAL PASCAL A. 1. Lengkapi Source Code Dibawah ini : {* Program Menghitung dengan Operator Matematika*}

Pertemuan 4 ELEMEN-ELEMEN BAHASA PEMROGRAMAN

Overview. Tantowi Yahya: urutkan kegiatanmenggosok gigidengan urutan yang benar : A. Ambil sikat gigi B. Berkumur C. Menyikat gigi D.

Diktat Kuliah. Nyoman Bogi Aditya Karna Sisfo IMTelkom

Pertemuan Ke-4 Urutan (sequence) Rahmady Liyantanto. liyantanto.wordpress.com. S1 Teknik Informatika-Unijoyo

BAB IV STRUKTUR PROGRAM Struktur program pada dasarnya tersusun 3 struktur program utama yaitu : a. Struktur Berurutan (Sequence Structure) b.

BAB 1 TIPE DATA. Selain itu terdapat operasi MOD (Modulo) adalah sisa dari pembagian Contoh : 27 MOD 4 = 3

BAB 1 TIPE DATA. Struktur Data 1. Sederhana : Array dan Record 2. Majemuk terdiri atas Linier Non Linier

Sesi/Perkuliahan ke: VII

RINGKASAN PEMROGRAMAN QUICK BASIC

KONSEP SISTEM INFORMASI B. Pertemuan 5 - Jenis Data dalam Dbase & Spesifikasi File

VARIABEL, OPERATOR DAN EKSPRESI

STRUKTUR KENDALI. Memanfaatkan struktur kendali untuk kasus komputasi

I. KATA PENGANTAR. Modul Algoritma Pemrograman. Modul Ke-4 - Hal 1

Pemrograman Dasar Pascal

PUTERA BATAM LOGIKA INFORMATIKA DAN ALGORITMA DAFTAR ISI. BAB IV : PEMILIHAN A. Pengertian

Function. Pertemuan 7 Jurusan Sistem Informasi Fakultas Ilmu Komputer dan Teknologi Informasi Universitas Gunadarma 2015

Transkripsi:

Ekspresi dan Masukan/Keluaran Tim Olimpiade Komputer Indonesia 1/52

Pendahuluan Melalui dokumen ini, kalian akan: Mengenal ekspresi. Mengenal masukan dan keluaran untuk program. 2/52

Kilas Balik: Assignment Membosankan sekali jika kita hanya bisa mengisi variabel dengan nilai yang pasti. Kadang-kadang dibutuhkan hal yang lebih ekspresif. Contoh: a := 5; b := 2; jumlah := a + b; Kenyataannya, hal ini dapat diwujudkan pada pemrograman! Perintah a + b biasa disebut sebagai ekspresi. 3/52

Bagian 1 Ekspresi 4/52

Mengenal Ekspresi Ekspresi terdiri dari dua komponen: operator dan operand. Operand menyatakan nilai yang akan dioperasikan, misalnya bilangan atau suatu ekspresi lagi. Operator menyatakan bagaimana operand akan dioperasikan, apakah ditambah, dikali, atau dibagi? 5/52

Mengenal Ekspresi (lanj.) Bisa juga dibentuk ekspresi bersarang, yaitu ekspresi yang operand-nya merupakan ekspresi lagi: 6/52

Operasi Numerik Operasi pada bilangan yang dapat dilakukan adalah penjumlahan (+), pengurangan (-), perkalian (*), pembagian (/), pembagian integer (div), dan modulo (mod). Jika kedua operand merupakan bilangan bulat, hasil pengoperasian selalu bilangan bulat juga, kecuali untuk operasi pembagian yang selalu menghasilkan floating point. Contoh: 3-1 = 2 10 / 5 = 2.0000000 7 / 2 = 3.5000000 Ketika setidaknya salah satu dari operand ada yang bertipe data floating point, pengoperasian akan selalu menghasilkan floating point. 7/52

Operasi Numerik (lanj.) Operasi pembagian integer didefinisikan sebagai: membagi, lalu dibulatkan ke bawah. Contoh: 7 div 2 = 3 10 div 2 = 5 3 div 5 = 0 Operasi modulo adalah mengambil sisa bagi dari operand pertama terhadap operand kedua. Contoh: 7 mod 2 = 1 10 mod 2 = 0 3 mod 5 = 3 8 mod 3 = 2 Operasi div dan mod hanya bisa dilakukan apabila kedua operand memiliki tipe data bilangan bulat. 8/52

Contoh Program: kuadrat.pas Setelah memahami tentang operasi numerik, coba perhatikan program berikut dan cari tahu apa keluarannya! var a, b, c, x, hasil: longint; begin a := 1; b := 3; c := -2; x := 2; hasil := a*x*x + b*x + c; writeln( ax^2 + bx + c =, hasil); end. 9/52

Prioritas Pengerjaan Seperti pada ilmu matematika, ada juga prioritas pengerjaan pada ekspresi numerik. Tabel berikut menunjukkan prioritasnya: Prioritas Operasi 1 *,/,div,mod 2 +,- Jika ada beberapa operasi bersebelahan yang memiliki prioritas sama, operasi yang terletak di posisi lebih kiri akan dikerjakan lebih dahulu. 10/52

Contoh Program: numerik.pas Kita juga bisa menggunakan tanda kurung untuk mengatur prioritas pengerjaan suatu ekspresi. Perhatikan contoh berikut dan coba jalankan programnya: var hasil1, hasil2: longint; begin hasil1 := 3+5 div 4; hasil2 := (3+5) div 4; writeln(hasil1); writeln(hasil2); end. Isi dari variabel hasil1 adalah 4, karena operasi 5 div 4 memiliki prioritas yang lebih tinggi untuk dikerjakan, dan menghasilkan nilai 1. Barulah 3 + 1 dilaksanakan kemudian. 11/52

Fungsi Dasar Numerik Berikut fungsi dasar yang disediakan Pascal untuk membantu perhitungan: trunc: mengambil bagian depan penanda desimal dari suatu bilangan pecahan. Contoh: trunc(3.14) akan menghasilkan 3 (sebuah integer). frac: mengambil bagian belakang penanda desimal dari suatu bilangan pecahan. Contoh: frac(3.14) akan menghasilkan 0.14. 12/52

Fungsi Dasar Numerik (lanj.) round: membulatkan suatu bilangan pecahan bilangan bulat terdekat (hasilnya adalah bilangan bertipe integer). Contoh: round(1.2) akan menghasilkan 1, sementara round(1.87) akan menghasilkan 2. sqr: mengkuadratkan suatu bilangan. Contoh: sqr(3) akan menghasilkan 9. sqrt: mendapatkan akar kuadrat dari suatu bilangan. Contoh: sqrt(9) akan menghasilkan 3.00, dan sqrt(3) akan menghasilkan 1.73205... 13/52

Fungsi Dasar Numerik (lanj.) Catatan khusus untuk fungsi round Jika angka yang diberikan memiliki pecahan tepat setengah, pembulatan ditentukan dari angka sebelum penanda desimal. Jika ganjil, dilakukan pembulatan ke atas. Jika genap, dilakukan pembulatan ke bawah. Contoh: round(1.5) = 2 round(2.5) = 2 round(3.5) = 4 14/52

Contoh Program: kuadrat2.pas Program kuadrat1.pas bisa ditulis juga dengan menggunakan fungsi sqr, sehingga menjadi: var a, b, c, x, hasil: longint; begin a := 1; b := 3; c := -2; x := 2; hasil := a*sqr(x) + b*x + c; writeln( ax^2 + bx + c =, hasil); end. 15/52

Operasi Relasional Kita juga bisa melakukan operasi relasional, yaitu: kurang dari (<) lebih dari (>) sama dengan (=) kurang dari atau sama dengan (<=) lebih dari atau sama dengan (>=) tidak sama dengan (<>) Operasi relasional harus melibatkan dua operand (ingat bahwa operand bisa jadi berupa ekspresi lagi), dan menghasilkan sebuah nilai kebenaran. Pada Pascal, nilai kebenaran dinyatakan dengan tipe data boolean. 16/52

Contoh Program: relasional.pas Perhatikan contoh berikut dan coba jalankan programnya: begin writeln(2 > 1); writeln(2 < 1); writeln(2 = 1); writeln(2 >= 1); writeln(1 = 1); writeln(1 <> 1); writeln(1 <> 2); end. 17/52

Operasi Relasional pada Floating Point Karena komputer tidak dapat secara sempurna menyimpan nilai floating point, Anda perlu hati-hati saat membandingkan dua bilangan riil. Ekspresi berikut mungkin saja bernilai FALSE: (0.1 + 0.2) = 0.3 Sebab 0.1 + 0.2 bisa saja bernilai 0.30000000000000001 18/52

Operasi Relasional pada Floating Point (lanj.) Untuk memeriksa kesamaan antara dua nilai floating point, biasanya dilibatkan suatu nilai toleransi. Misalnya, kedua nilai dianggap sama apabila selisih mereka kurang dari 10 8. 19/52

Operasi Relasional (lanj.) Operasi relasional dapat dilakukan pada setiap tipe data ordinal, sehingga bisa juga diterapkan pada char. Perbandingan karakter dilakukan dengan membandingkan kode ASCII mereka, sehingga menjadi seperti membandingkan angka biasa. Contoh: a < b akan bernilai TRUE a > z bernilai FALSE A < a akan bernilai TRUE 20/52

Operasi Relasional (string) Lebih jauh lagi, string sebenarnya merupakan untaian char. Operasi relasional juga bisa diterapkan pada string (meskipun string bukan tipe data ordinal). Pascal akan membandingkan karakter demi karakter dari kiri ke kanan. Begitu ditemukan ada perbedaan karakter, lebih kecil atau tidaknya suatu string ditentukan oleh karakter tersebut. Contohnya, aa < ab akan bernilai TRUE. Jika sampai salah satu string habis dan tidak ditemukan ada perbedaan karakter, maka stirng yang lebih pendek dianggap lebih kecil. Contohnya a < aa bernilai TRUE. 21/52

Contoh Program: relasional2.pas Perhatikan contoh berikut dan coba jalankan programnya: begin writeln( a > A ); writeln( a < A ); writeln( a >= A ); writeln( a = A ); writeln( a < aa ); writeln( abcb > abca ); writeln( abc = abc ); writeln( abc <= abc ); end. 22/52

Operasi Boolean Operasi boolean merupakan operasi yang hanya melibatkan nilai-nilai kebenaran. Terdiri atas: not, and, or, xor. Operasi-operasi ini sesuai dengan sebuah cabang ilmu matematika yang bernama aljabar boolean. Operasi not merupakan operasi unary, artinya hanya melibatkan satu operand. Gunanya untuk membalik nilai kebenaran. Tabel berikut menunjukkan efek dari penggunaan not. a not a TRUE FALSE FALSE TRUE 23/52

Operasi Boolean (lanj.) Operasi boolean yang lainnya merupakan operasi binary, yang artinya melibatkan dua operand. Tabel berikut menunjukkan efek dari penggunaan operator-operator tersebut: a b a and b a or b a xor b TRUE TRUE TRUE TRUE FALSE TRUE FALSE FALSE TRUE TRUE FALSE TRUE FALSE TRUE TRUE FALSE FALSE FALSE FALSE FALSE 24/52

Operasi Boolean (lanj.) Prioritas pengerjaan dari operator boolean secara berurutan adalah: not, and, or, xor. Tanda kurung juga bisa digunakan untuk menentukan operasi mana yang perlu dijalankan terlebih dahulu. Bahkan sangat disarankan untuk selalu menggunakan tanda kurung untuk kejelasan. 25/52

Contoh Program: relasional3.pas Perhatikan contoh berikut dan coba jalankan programnya: begin writeln(2 > 1); writeln(not (2 > 1)); writeln((2 > 1) and (3 > 1)); writeln(((2 > 1) or (3 < 1)) and (1 = 1)); writeln((1 <> 1) xor not (1 <> 1)); end. Perhatikan bahwa tanda kurung diperlukan dalam ekspresi not (2 > 1). Dengan tanda kurung, 2 > 1 akan dievaluasi terlebih dahulu, menghasilkan nilai boolean. Barulah operator not bisa mengolah nilai boolean tersebut. 26/52

Bagian 2 Masukan dan Keluaran 27/52

Kilas Balik: kuadrat2.pas Sekarang coba lihat kembali program kuadrat2.pas: var a, b, c, x, hasil: longint; begin a := 1; b := 3; c := -2; x := 2; hasil := a*sqr(x) + b*x + c; writeln( ax^2 + bx + c =, hasil); end. Jika kita ingin mengganti nilai x, kode harus diganti, dikompilasi ulang, baru dijalankan kembali. Untuk menghasilkan keluaran yang bervariasi, perlu ada masukan dari luar program. 28/52

Membaca Masukan Diperlukan mekanisme untuk melakukan pembacaan masukan dari luar program. Masukan bagi suatu program bisa berasal dari berbagai sumber, misalnya standard input atau file. Pada Pascal, dikenal dua fungsi yang umum untuk membaca masukan: read dan readln. 29/52

Membaca Masukan: readln Lakukan modifikasi pada bagian x := 2 menjadi readln(x): var a, b, c, x, hasil: longint; begin a := 1; b := 3; c := -2; readln(x); hasil := a*sqr(x) + b*x + c; writeln( ax^2 + bx + c =, hasil); end. Kompilasi, dan jalankan program. Kemudian ketikkan angka 2, dan tekan enter. Selamat! Kalian berhasil membaca masukan! 30/52

Fungsi readln Fungsi readln berguna untuk membaca masukan, dan nilainya dapat di-assign ke dalam variabel. Cara kerja readln: pada berkas masukan, cari token yang dapat dibaca berikutnya, lalu baca ambil nilainya. Yang dimaksud token adalah serangkaian karakter non-spasi, misalnya huruf atau angka. Pada contoh sebelumnya, token yang dimaksud adalah bilangan yang akan menjadi nilai variabel x. 31/52

Membaca Masukan: read Sekarang ganti readln(x) menjadi read(x): var a, b, c, x, hasil: longint; begin a := 1; b := 3; c := -2; read(x); hasil := a*sqr(x) + b*x + c; writeln( ax^2 + bx + c =, hasil); end. Kompilasi, dan jalankan program. Kemudian ketikkan angka 2, dan tekan enter. Hasilnya tetap sama. Lalu apa yang membedakan readln dengan read? 32/52

Perbedaan readln dengan read Setelah read atau readln mencari token berikutnya dan membacanya, yang terjadi selanjutnya adalah: readln Program disiapkan untuk membaca masukan selanjutnya di baris berikutnya. read Program tidak disiapkan untuk membaca masukan selanjutnya di baris berikutnya. 33/52

Perbedaan readln dengan read (lanj.) Artinya, jika kita ingin membaca masukan dengan format: Baris pertama berisi tiga bilangan bulat dipisahkan dengan sebuah spasi, yaitu a, b, dan c. Baris kedua berisi sebuah bilangan bulat, yaitu x. Dapat digunakan: read(a); read(b); readln(c); readln(x); 34/52

Perbedaan readln dengan read (lanj.) Boleh juga: read(a); read(b); read(c); read(x); Ingat bahwa baik read maupun readln akan mencari token berikutnya untuk dibaca, tanpa peduli di baris mana token itu berada. 35/52

Perbedaan readln dengan read (lanj.) Namun hal ini tidak bisa dilakukan: readln(a); readln(b); readln(c); readln(x); Sebab pada readln, setelah membaca token pada suatu baris, sisa token yang ada pada baris yang sama diabaikan dan langsung berpindah ke baris berikutnya. Akibatnya, token yang seharusnya menjadi masukan bagi variabel b dan c terabaikan. 36/52

Perbedaan readln dengan read (lanj.) Sebagai alternatif, readln dan read juga bisa digunakan untuk membaca beberapa masukan pada suatu baris secara bersamaan. Contoh penggunaan yang benar: readln(a,b,c); readln(x); atau read(a,b); readln(c); readln(x); 37/52

Kegunaan Lain readln Fungsi readln dapat digunakan untuk memaksa program untuk berpindah baris dalam membaca masukan. Caranya dengan mengosongkan variabel di dalam pemanggilan fungsi readln. Pada contoh yang sebelumnya, boleh juga digunakan cara membaca seperti ini: read(a,b,c); readln; readln(x); 38/52

Membaca string Khusus untuk membaca string, baik read maupun readln akan membaca satu baris penuh. Perhatikan program berikut: var s: string; begin readln(s); writeln( s =, s); end. 39/52

Membaca string (lanj.) Jika program tersebut diberi masukan: bebek 123 maka keluaran dari program tersebut adalah: s = bebek 123 Dari contoh ini, diketahui bahwa variabel s berisi bebek 123. 40/52

Membaca string (lanj.) Bagaimana jika kita ingin s hanya berisi bebek, sementara 123 disimpan pada variabel lainnya? Apakah hal berikut bisa dilakukan? var s: string; nilai: longint; begin readln(s, nilai); writeln( s =, s, nilai =, nilai); end. Sayangnya tidak bisa. Variabel s langsung berisi seluruh karakter yang ada pada baris input, sehingga variabel nilai tidak menerima masukan apa-apa. Penanganan kasus sejenis ini dipelajari pada materi yang akan datang. 41/52

Mencetak Keluaran Seperti masukan, keluaran juga bisa disajikan dalam bentuk langsung ke standard output atau ke file. Pada Pascal, fungsi untuk mencetak keluaran yang umum adalah writeln dan write. Sejauh ini, kita sudah menggunakan writeln. 42/52

Perbedaan writeln dengan write writeln Seperti yang sudah kita gunakan selama ini, writeln akan mencetak seluruh string, karakter, angka, atau variabel yang diberikan, lalu mencetak sebuah baris baru. write Fungsi write memiliki kegunaan yang sama, tetapi tidak mencetak baris baru di akhir percetakan, 43/52

Perbedaan writeln dengan write (lanj.) Dengan demikian, untuk mencetak teks berikut: 1 2 3 4 5 6 Bisa digunakan: writeln(1,, 2,, 3); writeln(4,, 5,, 6); atau write(1,, 2,, 3); writeln; write(4,, 5,, 6); writeln; 44/52

Contoh Program: jumlah.pas Coba ketikkan dan jalankan program berikut: var a, b: longint; begin write( masukkan nilai a: ); readln(a); write( masukkan nilai b: ); readln(b); writeln( hasil dari penjumlahan a dan b:, a+b); end. Pada program tersebut, dicetak terlebih dahulu apa yang perlu dimasukkan. Tentu saja, program seperti ini sangat ramah terhadap pengguna (user-friendly). Namun dalam kontes pemrograman OSN/IOI, hal seperti ini tidak perlu dilakukan. Bahkan, tidak boleh dilakukan. 45/52

Bagian 3 Standard Input Output 46/52

Penjelasan Tentang STDIO Tempat kalian selama ini mengisikan masukan dan melihat keluaran biasa disebut sebagai standard input output, atau STDIO. STDIO memiliki dua saluran yang berbeda, yaitu input (STDIN) dan output (STDOUT). 47/52

Penjelasan Tentang STDIO (lanj.) Masukan yang kalian masukkan, akan melewati saluran STDIN. Keluaran yang kalian lihat, sebenarnya datang lewat saluran STDOUT. Namun, pada command line keduanya terlihat seperti menyatu, seakan-akan keduanya melewati jalur yang sama. 48/52

Penjelasan Tentang STDIO (lanj.) Untuk lebih memahami tentang hal ini, coba buat sebuah berkas bernama input.txt pada folder yang sama dengan program jumlah.pas, dan berisi: 1 2 Kemudian pada command line, saat menjalankan program jumlah.pas, ketikkan perintah: jumlah < input.txt > output.txt Buka output.txt dan perhatikan apa yang tercetak! 49/52

Penjelasan Tentang STDIO (lanj.) Isi dari output.txt adalah: masukkan nilai a: masukkan nilai b: hasil dari penjumlahan a dan b: 3 Tulisan masukkan nilai... juga ikut tercetak, karena pada kasus ini, STDOUT merupakan berkas output.txt. Segala yang dicetak lewat saluran STDOUT akan dicetak ke output.txt. Dengan pemahaman yang sama, seluruh masukan yang diberikan adalah lewat STDIN, yang merupakan input.txt. Sehingga masukannya perlu dimasukkan ke input.txt terlebih dahulu. 50/52

Masukan dan Keluaran pada OSN/IOI Setelah kalian memahami tentang STDIN dan STDOUT, mungkin kalian sudah bisa menebak kenapa pada OSN/IOI tidak boleh mencetak informasi masukan seperti masukkan nilai.... Hal ini dikarenakan tulisan itu akan ikut tercetak sebagai keluaran, yang mana mengakibatkan ada keluaran yang tidak sesuai spesifikasi soal. Hasilnya, program akan dinilai wrong answer, alias menghasilkan jawaban yang tidak sesuai. 51/52

Selanjutnya... Kini kalian sudah mempelajari tentang variabel, ekspresi, dan masukan/keluaran. Artinya, sudah waktunya untuk menulis program-program sederhana. 52/52