0% menganggap dokumen ini bermanfaat (0 suara)
10 tayangan31 halaman

Algoritma Pemrograman10-1

Dokumen tersebut membahas konsep pengolahan teks dalam pemrograman, meliputi definisi teks, operasi yang dapat dilakukan terhadap teks seperti menghitung karakter, kata, dan baris, serta contoh kode C++ untuk menghitung jumlah karakter dan kata dalam file teks.

Diunggah oleh

nofantambirang
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai PDF, TXT atau baca online di Scribd
0% menganggap dokumen ini bermanfaat (0 suara)
10 tayangan31 halaman

Algoritma Pemrograman10-1

Dokumen tersebut membahas konsep pengolahan teks dalam pemrograman, meliputi definisi teks, operasi yang dapat dilakukan terhadap teks seperti menghitung karakter, kata, dan baris, serta contoh kode C++ untuk menghitung jumlah karakter dan kata dalam file teks.

Diunggah oleh

nofantambirang
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai PDF, TXT atau baca online di Scribd
Anda di halaman 1/ 31

Algoritma Pemrograman

Modul 10-1:
Pemrosesan Teks
Konsep Pengolahan Teks
• Teks terdiri atas deretan karakter yang dikenal oleh
komputer. Karakter yang dikenal oleh komputer pada
umumnya terdiri atas :

• Abjad atau alphabet, yaitu :{ A, B, C, …, Z, a, b, c, …, z }


• Karakter angka : { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }
• Operator dan karakter khusus : { +, - , *, /, >, =, <, |, spasi, !,
“, #, $, %, &, ^, @, (, ), …}
• Karakter kontrol seperti : DEL (delete), STX (start of text),
ETX (end of text), LF (line feed), CR (carriage return / Enter),
EOLN (end of line), BOF(begin of file), EOF(end of file), VT
(vertical tab), HT (horizontal tab/TAB), dsb.
• Definisi : Teks (text) adalah deretan karakter yang
bisa direkam ke dalam suatu file / berkas / arsip.
• Suatu teks bisa terdiri atas beberapa kata
(words).
• Satu kata terdiri atas beberapa karakter.
• Setiap kata terpisah dari kata lainnya, dipisahkan
oleh paling sedikit satu spasi.
• Suatu teks dapat terdiri atas beberapa baris
(lines) yang dibentuk oleh beberapa kata.
• Setiap baris diakhiri oleh marka end-of-line
(EOLN).
• Suatu teks diawali oleh marka begin-of-file (BOF)
dan diakhiri dengan marka end-of-file (EOF).
• Berbagai operasi yang bisa dilakukan terhadap
teks, antara lain:
1. menghitung berapa karakter yang ada dalam
suatu teks.
2. menghitung berapa kata dalam teks.
3. menghitung berapa baris dalam teks.
4. menghitung berapa kalimat dalam teks.
5. menggabungkan dua teks.
6. mencari kata tertentu dalam teks.
7. menyalin teks
dsb
Operasi File Teks
• Beberapa instruksi yang berkaitan dengan (file)
teks adalah sbb:
andaikan F adalah variable dari file :
– mengembalikan penunjuk teks ke posisi awal (BOF)
dari file: reset ( F )
– membuka suatu file teks yang ada di storage (disk) :
assign ( F, nama_file ) atau open(nama-file)
– membaca satu karakter dari file teks : read ( F, char )
– merekam satu karakter ke file teks : write ( F, char )
– menyiapkan file untuk merekam teks : rewrite(F)
– menutup file teks : close ( F )
Contoh: Hitung Karakter
Algoritma Hit_karakter endif.
{ menghitung jumlah karakter yang { baca karakter hingga akhir file }
ada dalam suatu file teks } read ( F, k );
jkar  0;
Definisi Variabel while ( k != EOF ) do
text F; { hindari tanda EOLN }
char k; if ( k != EOLN )
integer jkar; then jkar  jkar + 1;
endif.
Rincian Langkah read ( F, k );
assign ( F, “mytext.txt” ); endwhile.
{ kembalikan ke awal file, baca write ( “jumlah karakter
BOF } (termasuk spasi ) = “, jkar );
read ( F, k );
if ( k != BOF )
then reset ( F );
read ( F, k );
Contoh: Jumlah Kata
Algoritma Hit_kata { baca dua karakter ber-urutan hingga
{ menghitung jumlah kata dalam suatu akhir file }
file teks } read ( F, k1 );
read ( F, k2 );
Definisi Variabel jkata  0;
text F; while ( k1 != EOF ) || ( k2 != EOF )
char k1, k2; do
integer jkata; if ( k1 != ‘ ‘ ) && ( k2 = ‘ ‘ )
then jkata  jkata + 1;
Rincian Langkah endif.
assign ( F, “mytext.txt” ); k1  k2;
{ kembalikan ke awal file, baca BOF } read ( F, k2 );
read ( F, k1 ); endwhile.
if ( k1 != BOF ) if ( k1 != ‘ ‘ ) && ( k2 = EOF )
then reset ( F ); then jkata  jkata + 1;
read ( F, k1 ); endif.
endif. write ( “jumlah kata = “, jkata );
File dalam C++
• C++ memakai istilah “stream” untuk menyatakan
aliran karakter (teks), apabila aliran ini menuju
program maka disebut “input stream” dan bila
meninggalkan program disebut “output stream”.
• C++ menyediakan 2 macam header file untuk
menangani stream, yaitu:
– <iostream> untuk keyboard (cin - input) dan
monitor (cout - output)
– <fstream> untuk file, dengan tipe ifstream (input)
dan ofstream (output)
Membuka dan menutup File
• #include <fstream>
ifstream in_file; // definisi input file
ofstream out_file; // definisi output file

in_file.open(“mytext.dat”); // in-stream
out_file.open(“outfile.dat”); //out-stream

• Tutup file dengan:


in_file.close();
out_file.close();
Modus buka file
bentuk fungsi open file:
void open(char *filename, int mode, int access);
dimana: mode adalah:
- ios::app - utk menambah rekaman (append)
- ios::ate - buka file diakhir file (at the end)
- ios::in - buka sebagai in-stream (default untuk
in-stream)
- ios::nocreate – jangan ciptakan file baru
- ios::noreplace – jangan ganti isinya
- ios::out - buka sebagai out-stream (default utk out-
stream)
- ios::trunc – buka dengan overwrite isi-nya
atribut access
• kode yang menunjukkan bagaimana akses
terhadap file:
0 buka dengan akses normal (default)
1 buka dengan akses read-only
2 buka sebagai hidden file
4 buka sebagai system file
8 file archive bit set
• contoh: ofstream out;
out.open(“text.dat”, ios::out, 0);
sebenarnya sama dengan: out.open(“text.dat”);
karena modus dan access-nya semua default.
Membaca dan Merekam
• Membaca dari in-stream: mirip dengan
pemakaian cin >> variable
• Membaca dari file in_stream ke suatu variabel
adalah sbb: in_file >> variabel;
• Merekam ke out-stream: mirip dengan
pemakaian cout << variable
• Merekam nilai variabel ke file out-stream
adalah sbb: out_file << variabel;
get dan put pada stream
• pada ifstream terdapat satu pointer ke elemen
berikut-nya yang akan dibaca, yaitu melalui:
get, sehingga pembacaan dapat dilakukan
dengan perintah: in_stream.get(var)
• pada ofstream terdapat pointer yang
menunjuk lokasi dimana elemen akan ditulis,
yaitu melalui: put, sehingga tampilan bisa
ditulis atau direkam dengan perintah:
out_stream.put(var)
tellg() dan tellp()
• fungsi tanpa parameter tellg() memberikan
nilai integer dari posisi dimana elemen akan
dibaca dengan perintah in_stream.get(var)
• fungsi tanpa parameter tellp() memberikan
nilai integer dari posisi dimana elemen akan
direkam/ditulis
seekg() dan seekp()
• seekg(position) : mencari posisi dalam file
dimana pembacaan akan dimulai.
• seekp(position) : mencari posisi dalam file
dimana rekaman akan dimulai
• seekg(offset, direction) : mencari posisi awal
pembacaan yang dihitung mulai dari nilai offset
hingga nilai direction
• seekp(offset, direction) : mencari posisi awal
prekaman yang dihitung mulai dari nilai offset
hingga nilai direction
• Ada tiga macam nilai direction standard yaitu:
1. ios::beg – offset dihitung dari awal file (BOF)
2. ios::cur – offset dihitung dari posisi pointer
saat ini
3. ios::end – offset dihitung dari akhir file
(EOF)
Contoh menghitung file-size
// fsize.cpp - obtaining file size
#include <iostream>
#include <fstream>
using namespace std;
int main () {
long begin,end;
ifstream myfile ("mytext.txt");
begin = myfile.tellg();
myfile.seekg (0, ios::end);
end = myfile.tellg();
myfile.close();
cout << "size is: " << (end-begin) << " bytes.\n";
system("PAUSE");
return 0;
}
status file
• beberapa fungsi dapat dipakai untuk memeriksa
status file:
• bad() – status file buruk tidak bisa dibuka baik
sebagai in-stream atau sebagai out-stream
• fail() – mirip dengan bad(), tetapi juga apabila
dilakukan pembacaan dengan tipe data yang
beda (misal huruf dibaca sebagai angka)
• eof() – pointer baca sudah sampai ke ujung file
(end-of-file)
• good() – bernilai true bila kondisi file bagus, dan
false bila buruk (bad atau fail)
Memeriksa kondisi file
• Memeriksa apakah file bisa dibuka
ifstream in_file;
in_file.open(“mytext.dat”);
if (in_file.fail() ) {
cout << “File ini tidak bisa dibuka.\n”;
exit(1);
}
• Apakah file sudah mencapai akhir?
if (!in_file.eof() ) {
// belum mencapai akhir
}
Memeriksa end-of-file
char x;
ifstream in_file;
in_file.open(“mytext.dat”);
if (in_file.fail() ) {
cout << “File tidak bisa dibuka\n”;
exit(1);
}
in_file >> x;
if (!in_file.eof() ) {
cout << x;
infile >> x;
}
else {
cout << “File sudah selesai dibaca\n”;
in_file.close();
}
Contoh: hitung karakter
//hitKar.cpp //ketika file dibuka maka posisi-nya BOF
//mneghitung jumlah karakter jkar = 0;
#include <cstdio> F >> k;
#include <cstdlib> while (!F.eof()) {
#include <iostream> jkar += 1;
#include <fstream> F >> k;
using namespace std; }
cout << "Jumlah karakter = " <<
int main() { jkar << endl;
ifstream F; system("PAUSE");
char k; return 0;
int jkar; }

F.open("mytext.txt");
Contoh: hitung kata
//hitKata.cpp F >> k1; F >> k2;
//mneghitung jumlah kata jkata = 0;
#include <cstdio> while (!F.eof()) {
#include <cstdlib> //cout << k1 << k2 << endl;
#include <iostream> if ((k1 != ' ') && (k2==' '))
#include <fstream> jkata += 1;
using namespace std; k1 = k2;
F.get(k2);
int main() { }
ifstream F; if ((k1 != ' ') && (k2==' '))
char k1,k2; jkata += 1;
int jkata; cout << "Jumlah kata dalam file
= " << jkata << endl;
F.open("mytext.txt"); system("PAUSE");
//ketika file dibuka maka posisi-nya return 0;
BOF }
Pemrosesan String
• String adalah untaian beberapa karakter
• Cara mendefinisikan dan inisialisasi:
char Nama[21]; // nama maximum 20 huruf
// akhir string di-isi ‘\0’
char Nama[21] = “Abdul Hakim Nasution”;
• Assignment string tidak diperbolehkan:
Nama = “Abdul Hakim Nasution”; // Salah
• Pemberian nilai diluar inisialisasi harus
menggunakan fungsi: strcpy(target, source);
strcpy(Nama, “Abdul Hakim Nasution”);
• Fungsi-fungsi string ada dalam library cstring:
#include <cstring>
• Membandingkan dua string tidak boleh memakai tanda ==
atau != , tetapi memakai fungsi strcmp(string1, string2).

if (string1 == string2) // salah


cout << “Keduanya sama”;
else
cout << “Keduanya berbeda”;

if strcmp(string1, string2) // benar


cout << “Keduanya berbeda”;
else
cout << Keduanya sama”;
• Bila string1 sama dengan string2 maka hasilnya 0 (false)
bila string1 > string2 maka hasilnya 1 (true), dan bila
string1 < string2 maka hasilnya -1.
input string
Contoh:
char Nama[22];
cout << “Masukkan nama anda : “;
cin >> Nama;
cout << Nama;

Masukkan nama anda : Abdul Hakim Nasution


hanya menghasilkan : Abdul
char Nama[22];
cout << “Masukkan nama anda : “;
cin.getline(Nama,21);
cout << Nama;

Masukkan Nama anda : Abdul Hakim Nasution


menghasilkan: Abdul Hakim Nasution.
//inputNama.cpp
#include <iostream>
#include <cstring>
using namespace std;

int main() {
char Nama[22];
char x[80];

cout << "Masukkan Nama : ";


cin >> Nama;
cout << "Menghasilkan Nama = " << Nama << endl;

cin.getline(x,80);
cout << endl << endl;

cout << "Masukkan Nama : ";


cin.getline(Nama,21);
cout << "Menghasilkan Nama = " << Nama << endl;

system("PAUSE");
return 0;
}

Anda mungkin juga menyukai