Input dan Output TEE 2103 Algoritma dan Pemrograman Dosen: Abdillah, MIT Hp: 0853 6581 8665 Email: abdill01@gmail.com Website: www.abdill01.wordpress.com
Tujuan Mahasiswa memahami proses input dan output dalam program C.
Standar Input Mekanisme input paling sederhana adalah membaca satu karakter per waktu dari piranti masukan (keyboard) dengan getchar: Setiap dipanggil, getchar mengembalikan karakter input berikutnya atau EOF ketika menemukan akhir kalimat. Konstanta EOF didefinisikan dalam <stdio.h> dan nilainya adalah -1. int getchar(void);
Standar Output Mekanisme output paling sederhana adalah mencetak satu karakter per waktu ke piranti keluaran (layar) dengan putchar: Setiap kode program yang mengacu pada fungsi pustaka input dan output harus mengandung baris Ketika sebuah nama dimasukkan dalam <>, pencarian dilakukan dalam /djgpp/include. int putchar(int); include <stdio.h>
Program /* Konversi input ke huruf kecil */ #include <stdio.h> #include <ctype.h> main() { int c while ((c = getchar()) != EOF) putchar(tolower(c)); return 0; }
Format Output - printf Fungsi printf mencetak argumennya pada layar monitor dibawah kendali format. Format string mengandung dua jenis objek, yakni karakter biasa dan spesifikasi konversi. Setiap spesifikasi konversi diawali dengan tanda % dan diakhiri dengan karakter konversi.
Spesifikasi Konversi Karakter konversi disesuaikan dengan tipe argumen yang akan dicetak. %c char %lf double %f float %ld long %u unsigned int %d int %s string
Format Output - printf Antara tanda % dan karakter konversi dapat ditambahkan: tanda minus untuk rata kiri jumlah lebar kolom minimum tanda titik untuk presisi jumlah angka di belakang koma huruf h jika short dan l jika long.
Presisi String Tabel berikut memperlihatkan efek dari berbagai spesifikasi mencetak “hello, world” (12 karakter) :%s: :hello, world: :%10s: :hello, world: :%.10s: :hello, wor: :%-10s: :hello, world: :%.15s: :hello, world: :%-15s: :hello, world : :%15.10s: : hello, wor: :%-15.10s: :hello, wor :
Format Input - scanf Fungsi scanf membaca karakter dari piranti masukan dan menyimpannya melalui sisa argumen. Format string mengandung dua jenis objek, yakni karakter biasa dan spesifikasi konversi. Setiap spesifikasi konversi diawali dengan tanda % dan diakhiri dengan karakter konversi.
Program #include <stdio.h> main() /* kalkulator dasar */ { double sum, v; sum = 0; while (scanf("%lf", &v) == 1) printf("\t%.2f\n", sum += v); return 0; }
Baris Input Misalkan baris input yang akan dibaca adalah: Statement scanf adalah: Perhatikan bahwa tidak ada operator & digunakan untuk namabulan, karena nama array adalah sebuah pointer. 24 Desember 2013 int tgl, tahun; char namabulan[20]; scanf("%d %s %d", &tgl, namabulan, &tahun);
Baris Input Karakter literal yang muncul dalam string format scanf harus sama dengan karakter input. Sehingga bisa membaca tanggal dalam format dd/mm/yy dengan statement scanf: int day, month, year; scanf("%d/%d/%d", &month, &day, &year);
Akses File Sejauh ini contoh-contoh program membaca dari keyboard dan menulis di layar. Langkah berikut adalah menulis program yang mengakses sebuah file .txt yang belum terhubung ke program. Sebelum dapat dibaca atau ditulis, sebuah file dibuka oleh fungsi fopen yang mengembalikan sebuah pointer file yang digunakan dalam pembacaan atau penulisan file. Pointer file ini menunjuk pada sebuah nama tipe struktur yang mengandung informasi tentang file. FILE adalah nama tipe struktur yang dideklarasikan dalam <stdio.h>.
Deklarasi Pointer File FILE *fp; FILE *fopen(char *name, char *mode); fp = fopen(name, mode); Statement di atas adalah deklarasikan fp, sebuah pointer ke sebuah FILE dan deklarasi fopen yang mengembalikan sebuah pointer ke sebuah FILE. Argumen pertama dari fopen adalah string karakter yang mengandung nama file. Argumen kedua juga string karakter yang mengindikasikan bagaimana file digunakan: read (“r”), write (“w”) dan append (“a”).
Membaca & Menulis File Setelah file dibuka, berikutnya adalah membaca atau menulis file. Fungsi getc membaca dan fungsi putc menulis karakter dari sebuah file. Fungsi ini membutuhkan argumen pointer file untuk menunjuk file mana yang dibaca. Fungsi getc mengembalikan karakter berikutnya dari file yang ditunjuk oleh fp, dan mengembalikan EOF jika akhir file atau error. Sedangkan fungsi putc menulis karakter c ke file fp dan mengembalikan karakter yang ditulis atau EOF jika error. int getc(FILE *fp); int putc(int c, FILE *fp);
Format Input dan Output Ketika sebuah program C dimulai, environment dari sistem operasi bertanggung jawab untuk membuka tiga file dan menyediakan pointer file untuk mereka, yakni stdin, stdout dan stderr yang dideklarasikan dalam <stdio.h>. Biasanya stdin terhubung ke keyboard, sedangkan stdout dan stderr terhubung ke layar. Tapi stdin dan stdout dapat dialihkan ke file. Untuk melakukan format input atau output file, fungsi fscanf dan fprintf dapat digunakan. int fscanf(FILE *fp, char *format, ...) int fprintf(FILE *fp, char *format, ...)
Program Akses File #include <stdio.h> main() { int N, x, i, jumlah; float rerata; FILE *Fin; Fin = fopen(“data.txt”, “r”); fscanf(Fin, “%d”, &N); jumlah = 0; i = 1; while(i<=N) { fscanf(Fin, “%d”, &x); jumlah = jumlah + x; i=i+1: } rerata = (float)jumlah/N; printf(“Rata-rata = %f”, rerata);