PRAKTIK DASAR PEMROGAMAN DAN ALGORITMA
BAB 1. NOTASI ALGORITMIK
Algoritma berisi deskripsi langkah-langkah penyelesaian masalah. Langkah-langkah penyelesaian masalah tersebut dapat kita tuliskan dalam notasi algoritmik sembarang, asalkan ia mudah dibaca dan dipahami. Tidak ada notasi yang standar untuk menuliskan algoritma sebagaimana pada notasi bahasa pemrogaman. Setiap orang boleh saja mendefinisikan notasi algoritmiknya sendiri. Hal ini bukan persoalan karena notasi algoritma tidak sama dengan kode progam komputer. Progam komputer adalah implementasi algoritma dalam bahasa pemrogaman tertentu. Dalam bab ini akan dibahas mengenai notasi algoritmik.
1.1. Pseudocode
Notasi algoritmik yang baik adalah notasi yang mudah dibaca dan mudah pula di transalasikan ke dalam notasi bahasa pemrogaman. Notasi algoritmik berupa pseudo-code mempunyai korespondensi dengan notasi bahasa pemrogaman sehingga proses penerjemahan dari pseudo-code ke kode progam menjadi lebih mudah.
Tidak ada aturan baku membuat pseudo-code. Tidak seperti bahasa pemrogaman yang direpotkan dengan tanda titik koma (semicolon), indeks, format keluaran, kata-kata khusus, dan sebagainya, sembarang versi pseudocode dapat diterima asalkan notasinya bisa dipahami.
1. Sebuah pernyataan dalam notasi deskriptif: tulis nilai X dan Y Maka pseudo-code-nya dalam notasi algoritmik mungkin ditulis sebagai; write(X,Y) Notasi write berarti nilai x dicetak ke piranti keluaran. Dengan notasi algoritmik, kita
tidak terlalu mempersoalkan format tampilan keluaran, misalnya apakah hasil penulisan antara X dan Y dipisah dengan spasi atau dengan koma, apakah X dan Y dicetak pada koordinat tertentu di layar, dan sebagainya. Bila X dan Y berisi nilai bertipe bilangan riil (memakai titik desimal) kita juga tidak mempersoalkan berapa angka di belakang koma, dan sebagainya. Hal-hal teknis semacam ini barulah kita pikirkan pada saat translasi notasi algoritmik tersebut ke notasi bahasa pemrogaman. Dengan cara seperti ini, kita telah membuat notasi algoritmik terlepas dari hal-hal teknik seperti yang terdapat dalam bahasa pemrogaman. Notasi algoritmik dalam bentuk pseudo-code sebaiknya mudah ditranslasikan ke dalam bahasa pemrogaman pada saat coding. Notasi write di dalam algoritma tidak terlalu mempersoalkan format tampilan keluaran, misalnya apakah hasil penulisan antara X dan Y dipisah dengan spasi atau dengan koma, apakah X dan Y dicetak pada koordinat tertentu di layar, dan sebagainya. Bila X dan Y berisi nilai bertipe bilangan riil (memakai titik desimal) kita juga tidak mempersoalkan berapa angka di belakang koma, dan sebagainya. Hal-hal teknis semacam ini barulah kita pikirkan pada saat translasi notasi algoritmik tersebut ke notasi bahasa pemrogaman. Dengan cara seperti ini, kita telah membuat notasi algoritmik terlepas dari hal-hal teknik seperti yang terdapat dalam bahasa pemrogaman. Notasi algoritmik dalam bentuk pseudo-code sebaiknya mudah ditranslasikan ke dalam bahasa pemrogaman pada saat coding. Notasi write di dalam algoritma
write(X,Y) Bahasa Pascal: write(X.Y); Bahasa C: printf (“%d %d”, X,Y); Bahasa Basic: WRITE X,Y Bahasa Fortran: WRITE(*,*) X,Y Perhatikan bahwa setiap bahasa mempunyai cara yang berbeda dalam menulis
perintah penulisan. Bahasa C misalnya, mengharuskan pemakaian penentu-format (seperti “%d” pada contoh di atas) untuk nilai yang dicetak. Penentu format “%d”
berarti pada field tersebut nilai yang akan dicetak bertipe bilangan bulat.
2. Sebuah pernyataan dalam notasi deskriptif: isikan nilai X ke dalam min maka pseudo-code-nya dalam notasi algoritmik menjadi: min X Notasi “” berarti mengisi (assign) peubah (variable) min dengan nilai x. Translasi
notasi “” ke dalam bahasa Pascal adalah “:=”, dalam bahasa C adalah “=”, dalam bahasa Basic adalah “=” dan dalam bahasa Fortran juga “=”. Jadi, translasi min x
ke dalam masing-masing bahasa tersebut adalah: Algoritmik:
min x Bahasa Pascal:
min := x; Bahasa C: min = x; Bahasa Basic: min = x Bahasa Fortran: min = x
1.2. Struktur Teks Algoritma
Dua buah algoritma sederhana diberikan untuk mengilustrasikan teks algoritma seperti apa yang dipakai di dalam buku ini.
1. Algoritma pertama adalah untuk mencetak tulisan: Hello, world Algoritma Hello world hampir selalu ditemukan pada buku-buku bahasa pemrogaman. Pelajaran pemrogaman dan buku-buku bahasa pemrogaman sering memulai contoh progam pertamanya dengan memberikan contoh bagaimana
mencetak “Hello, world” ke layar. Progam “Hello, world” pertama kali dikemukakan oleh Brian W. Kernigham, yakni seorang penemu Bahasa C. Algoritma untuk menulis “Hello, world”: PROGAM helloworld
{ Progam untuk mencetak “Hello world” Masukan: - Keluaran: string „Hello, world‟ } DEKLARASI
{ tidak ada } ALGORITMA: write(“Hello, world”)
Gambar 1 . Algoritma untuk mencetak “Hello, world”
2. Algoritma kedua adalah progam untuk mencetak tabel konversi suhu dalam derajat Fanrenheit (F) dan suhu ekivalennya dalam derajat Celcius (C) dengan menggunakan rumus
C = 5/9 (F – 32) Data masukan adalah suhu awal (x) dan suhu akhir (y). Tabel keluaran memuat suhu
mulai dari x sampai y o
F dengan kenaikan sebesar step. Misalnya jika x=o, y=100, dan step =20, tabel yang ingin dihasilkan kira-kira seperti dibawah ini:
80 26.7 100 37.8 Maka, algoritma untuk mencetak tabel konversi Fanrenheit-Celcius sebagai berikut:
PROGAM FahrenheitCelcius { Progam untuk mencetak tabel Fanrenheit-Celcius dari x sampai y
dengan kenaikan sebesar step. Masukan: suhu awal, suhu akhir, step Keluaran: tabel konversi suhu dalam C dan F
} DEKLARASI
F, C : real x, y, step : integer ALGORITMA: read(x, y, step) F x while F ≤ y do C = 5/9 * (F – 32) write(F, C) F F + step endwhile
Gambar 2. Mencetak tabel konversi Fanrenheit-Celcius
Dengan memperhatikan kedua contoh algoritma sederhana di atas, maka teks algoritma selalu disusun oleh tiga bagian (blok), yaitu:
1. Bagian judul (header),
2. Bagian deklarasi (declaration),
3. Bagian algoritma. Ketiga bagian tersebut secara umum ditunjukkan dalam notasi algoritmik, seperti contoh dibawah ini :
PROGAM Nama Progam { Penjelasan tentang algoritma, yang berisi uraian singkat mengenai masalah apa
yang akan diselesaikan, termasuk masukan dan keluarannya } DEKLARASI { semua nama yang dipakai, meliputi nama tipe, nama konstanta, nama peubah, nama prosedur dan nama fungsi diumumkan di sini } ALGORITMA: { berisi langkah-langkah penyelesaian masalah }
Gambar 3. Struktur teks algoritma
Pada setiap bagian sangat dianjurkan menuliskan komentar untuk memperjelas maksud dari pernyataan. Komentar adalah kalimat yang diapit oleh pasangan tanda
kurung kurawal („{„ dan „}‟). Komentar membuat algoritma lebih mudah untuk dibaca dan dipahami. Di dalam progam komputer, komentar tidak dieksekusi, hanya dilewati saja.
1.2.1. Bagian Judul
Judul adalah bagian yang terdiri atas nama progam dan penjelasan (spesifikasi) tentang nama progam tersebut. Judul diawali dengan kata kunci PROGAM dan nama progam X. Kata PROGAM ini bukan menyatakan progam dalam bahasa komputer, tetapi menyatakan bahwa kita sedang menulis algoritma untuk progam pemecahan masalah.
Nama progam sebaiknya singkat namun cukup menggambarkan apa yang dilakukan oleh progam. Di bawah nama progam sebaiknya disertai dengan penjelasan singkat tentang apa masalah di progam dan apa masukan dan keluarannya. Dua contoh progam terdahulu mempunyai judul sebagai berikut:
PROGAM HelloWorld { Progam untuk mencetak “Hello, world”
Masukan progam ini tidak ada. Keluarannya adalah tulisan „Hello world‟ tercetak di layar.
PROGAM FahrenheitCelcius { Progam untuk mencetak tabel Fahrenheit-Celcius dari x sampai y de-
Kenaikan sebesar step. Masukan progam ini adalah suhu awal, suhu- akhir, step, dan keluarannya adalah tabel konversi suhu dalam C dan F
1.2.2. Bagian Deklarasi
Bagian ini digunakan untuk mengumumkan semua nama yang dipakai didalam algoritma beserta propertinya (misalnya tipe). Nama tersebut dapat berupa nama konstanta, nama peubah, nama tipe, nama prosedur dan nama fungsi. Semua nama yang dipakai di dalam algoritma harus dikenali sebelum mereka digunakan. Bagian deklarasi mungkin kosong jika tidak ada penggunaan nama. Progam Helloworld mengandung bagian deklarasi yang kosong, sedangkan progam FahrenheitCelcius berisi deklarasi nama- nama peubah yang digunakan di dalam progam beserta tipenya sebagai berikut:
DEKLARASI F, C : real
x, y, step : integer
F, C, X, Y dan step adalah nama-nama peubah yang digunakan di dalam bagian algoritma. Nama-nama peubah ini beserta tipenya harus diumumkan di bagian deklarasi sebelum mereka digunakan.
Contoh-contoh deklarasi yang lain (deklarasi nama konstanta, nama tipe peubah, nama prosedur dan fungsi) adalah seperti dibawah ini.
DEKLARASI { nama konstanta } const Npeg = 100 { jumlah pegawai } const phi = 3.14 { nilai π } { nama tipe } type Titik : record{ koordinat titik di bidang kartesian } { nama peubah (variable)}
c : char {karakter yang dibaca} Q : titik {titik dalam koordinat kartesian} ketemu : boolean {keadaan hasil pencarian} FUNCTION Apakah_A(input c : char) boolean { men gembalikan nilai true bila c adalah karakter „A‟, atau false
bila sebaliknya } PROCEDURE Tukar(input/output A : integer, input/ouput B : integer} { Mempertukarkan nilai A dan B. Parameter A dan B sudah terdefinisi nilainya. Setelah pertukaran, A berisi nilai B semula, B berisi nilai A semula.}
Npeg dan phi adalah nama konstanta, Titik adalah nama tipe, c, q, dan ketemu adalah nama peubah, Apakah_A adalah nama fungsi, dan Tukar adalah nama prosedur.
Oleh karena nama adalah satu kesatuan leksikal, maka nama tidak boleh mengandung spasi, tanda baca (seperti titik, koma dan sebagainya), operator (seperti +,-,;, dan sebagainya). Karakter garis bawah (“_”) dapat digunakan untuk mengganti spasi. Jadi, menuliskan nama
fungsi sebagai
Apakah_A adalah benar, tetapi Apakah A salah karena mengandung spasi.
Selain spasi, kita juga tidak membedakan huruf besar (kapital) dan huruf kecil di dalam notasi algoritmik kita. Namun, pada bahasa pemrogaman yang case sensitive seperti bahasa C, huruf besar dan kecil adalah dua karakter yang dianggap berbeda.
1.2.3. Bagian Algoritma
Inilah bagian inti dari sebuah progam. Bagian ini berisi instruksi-instruksi pemecahan masalah dalam notasi pseudo-code.
Progam HelloWorld mengandung bagian algoritma yang hanya berisi satu baris instruksi saja:
ALGORITMA write(“Hello, world”)
Progam FanrenheitCelcius mengandung bagian algoritma yang berisi beberapa baris instruksi:
ALGORITMA read(x, y, step) F x while F ≤ y do C=5/9 * (F-32) write(F, C)
F F+step endwhile
1.3. Translasi Notasi Algoritmik ke Bahasa C
Teks algoritma merupakan desain penyelesaian masalah. Agar dapat dieksekusi oleh komputer, algoritma harus diterjemahkan terlebih dahulu ke dalam notasi bahasa pemrogaman. Penerjemahan dari notasi notasi algoritmik ke notasi bahasa pemrogaman dinamakan translasi.
ALGORITMIK:
PROGAM Nama Progam { Penjelasan tentang algoritma, yang berisi uraian singkat mengenai
masalah apa yang akan diselesaikan, apa masukan dan keluarannya } DEKLARASI
{ semua nama yang dipakai, meliputi nama tipe, nama konstanta, nama peubah, nama prosedur dan nama fungsi yang diumumkan disini }
ALGORITMA { berisi langkah-langkah penyelesaian masalah }
C:
/* PROGAM Nama Progam */ /* Penjelasan tentang algoritma, yang berisi uraian singkat mengenai
masalah apa yang akan diselesaikan, apa masukan dan keluarannya */ /* DEKLARASI */ /* semua nama yang penggunaannya global didefinisikan disini */ /* purwarupa prosedur dan fungsi didefinisikan disini */ /* ALGORITMA: */ main() {
/* di sini juga mungkin ada DEKLARASI lokal */ /* semua instruksi progam dituliskan di sini */
} Beberapa hal penting yang harus diketahui dari bahasa C adalah:
1. Bahasa C bersifat case sensitive. Ini berarti bahasa C membedakan huruf besar (kapital) dengan huruf kecil. Nama yang ditulis dengan huruf besar dianggap berbeda kalau ia ditulis dengan huruf kecil. Misalnya,
N tidak sama dengan n nama_orang tidak sama dengan NAMA_ORANG, Nama_orang,
Nama_Orang HitKar tidak sama dengan hitkar
2. Dalam bahasa C, deklarasi yang didefinisikan sebelum kata main() adalah deklarasi global, artinya semua nama yang didefinisikan di dalam deklarasi global dikenal di seluruh bagian progam, termasuk di dalam fungsi atau prosedur yang ada di dalam progam itu. Apabila deklarasi didefinisikan di dalam main(), maka 2. Dalam bahasa C, deklarasi yang didefinisikan sebelum kata main() adalah deklarasi global, artinya semua nama yang didefinisikan di dalam deklarasi global dikenal di seluruh bagian progam, termasuk di dalam fungsi atau prosedur yang ada di dalam progam itu. Apabila deklarasi didefinisikan di dalam main(), maka
3. Dalam bahasa C, komentar ditulis di antara “/*” dan “*/”.
1.4. Kompilator Bahasa C
Progam sumber (source progam) dalam bahasa pemrogaman harus dikompilasi terlebih dahulu oleh progam khusus yang disebut kompilator (compiler). Kompilasi progam bertujuan memeriksa kebenaran sintaks (tata bahasa) progam, kemudian, jika tidak ada kesalahan, progam diterjemahkan ke dalam bahasa mesin sehingga siap dieksekusi.
1.4.1. Instalasi Borland Turbo C++ v4.5
1. Langkah pertama buatlah folder di drive C dan beri nama TurboC
Gambar 4. Membuat folder TurboC di drive C:\
2. Langkah kedua menjalankan file C:\TurboC\INSTALL.EXE
Gambar 5. Menjalankan file C:\TurboC\INSTALL.EXE
3. Langkah ketiga konfirmasi instalasi
Gambar 6. Konfirmasi instalasi
4. Langkah keempat, pilih drive untuk melanjutkan instalasi
Gambar 7. Pilih drive untuk melanjutkan instalasi
5. Instalasi selesai
Gambar 8. Instalasi selesai
1.4.2. “Hello World” di Borland Turbo C++ v4.5
Ketikkan pada task compiler coding C “Hello, World” berikut ini.
Gambar 9 . Coding C “Hello, World”.
Kemudian eksekusi, pilih Debug > Run Ctrl+F9
Penjelasan :
1. Header File
Adalah berkas yang berisi prototype fungsi, definisi konstanta, dan definisi variable. Fungsi adalah kumpulan code C yag diberi nama dan ketika nama tersebut dipanggil maka kumpulan kode tersebut dijalankan. Contoh:
stdio.h math.h conio.h
2. Preprosesor Directive (#include)
Preposesor directive adalah bagian yang berisi pengikut sertaan file atau berkas- berkas fungsi maupun pendefinisian konstanta. Contoh:
#include <stdio.h> #include phi 3.14
3. Void
Artinya fugnsi yang mengikutinya tidak memiliki nilai kembalian (return).
4. Main ( )
Fungsi main ( ) adalah fungsi yang pertama kali dijalankan ketika progam dieksekusi, tanpa fungsi main suatu progam tidak dapat dieksekusi namun dapat dikompilasi.
5. Statement
Statement adalah instruksi atau perintah kepada suatu progam ketika progam itu dieksekusi untuk menjalankan suatu aksi. Setiap statement diakhiri dengan titik- koma (:).
1.4.3. Kata Kunci (Keyword)
Kata kuci-kata kunci yang terdapat di C, sebagai berikut:
Gambar 10. Kata kunci C
1.4.4. Identifier
Identifier atau nama pengenal adalah nama yang ditentukan sendiri oleh pemrogam yang digunakan untuk menyimpan nilai, misalnya nama variable, nama konstanta, nama suatu elemen (misalnya: nama fungsi, nama tipe data, dll). Identifier punya ketentuan sebagai berikut:
1. Maksimum 32 karakter (bila lebih dari 32 karakter maka yang diperhatikan hanya
32 karakter pertama saja).
2. Case sensitive: membedakan huruf besar dan huruf kecilnya.
3. Karakter pertama harus karakter atau underscore (_), selebihnya boleh angka.
4. Tidak boleh mengandung spasi atau blank.
5. Tidak boleh mnggunakan kata yang sama dengan kata kunci dan fungsi.
1.4.5. Variable
Variable adalah identifier yang nilainya dapat berubah atau diubah selama progam berjalan (dieksekusi). Pengubahnya adalah user atau proses.
Deklarasi variable (tipe_data nama_variable;)
Variable yang akan digunakan dalam progam haruslah dideklarasikan terlebih dahulu. Pengertian deklarasi di sini berarti memesan memori dan menentukan jenis data yang bisa disimpan di dalamnya.
Contoh:
int a, b, c;
Initialisasi variable (tipe_data nama_variable=nilai;)
int a=15, b=7, c=0;
1.4.6. Konstanta
Konstanta adalah identifier yang nilainya tetap selama progam berjalan/ dieksekusi. Cara untuk mengubahnya hanya melalui source codenya saja seperti halnya variable, konstanta juga memiliki tipe. Penulisan konstanta mempunyai aturan tersendiri, sesuai dengan tipe masing-masing.
1. Konstanta karakter misalnya ditulis dengan diawali dan diakhiri dengan tanda petik tungal, contohnya : „A‟ dan „@‟.
2. Konstanta integer ditulis dengan tanda mengendung pemisah ribuan dan tidak mengendung bagian pecahan, contohnya: -1 dan 32767
3. Konstanta real (float dan double) bisa mengandung pecahan (dengan tanda berupa titik) dan nilainya bisa ditulis dalam bentuk eksponential (menggunakan tanda e), contohnya : 27.5f(untuk tipe float) atau 27.5 (untuk tipe double) dan 2.1e+5 (maksudnya 2,1x105).
4. Konstanta string merupakan deretan karakter yang diawali dan diakhiri dengan tanda petik- ganda (“), contohnya: “Pemrogaman Dasar C”.
Contoh :
#define phi 3.14
#define max_data 50
BAB 2. TIPE DATA DASAR
Data merupakan suatu nilai yang bisa dinyatakan dalam bentuk konstanta atau variable. Konstanta menyatakan nilai yang tetap, sedangkan variable menyatakan nilai yang apat diubah-ubah selama eksekusi berlangsung.
2.1. Ukuran Memori untuk Tipe Data
Data merupakan suatu nilai yang bisa dinyatakan dalam bentuk konstanta atau variable. Konstanta menyatakan nilai yang tetap, sedangkan variable menyatakan nilai yang apat diubah-ubah selama eksekusi berlangsung.
Tabel 1. Ukuran memori untuk tipe data
Untuk mengetahui ukuran memory bisa dipakai fungsi sizeof (<tipe_data>). Catatan: Ukuran dan kawasan dari masing-masing tipe data adalah bergantung pada jenis
mesin yang digunakan (misalnya mesin 16 bit bisa jadi memberikan hasil berbeda dengan mesin 32 bit).
Untuk menampilkan hasil output dibutuhkan kode format, berikut adalah daftar kode format :
Tabel 2. Kode format
Contoh:
1. Coba hilangkan %i nya, apa hasilnya?
2. Coba ganti a menjadi ukuran tipe data yang lain, misalnya float dan char!
2.2. Karakter Escape
Karakter escape adalah karakter yang diawail dengan tanda backslash (/), yang masing-masing memiliki makna tertentu. Berikut adalah daftar karakter.
Tabel 3. Karakter escape
2.3. Statement
Apa itu statement? Macam-macam statement:
1. Statement Kosong/ Empty Statement/ Null Statement
Statement kosong adalah statement yang hanya terdiri dari pengakhiran titik koma (;) saja, sehingga tidak ada tindakan yang akan dilakukan. Statement kosong digunakan untuk memberikan jarak waktu atau delay. Contoh:
for(int i=0; i<1000; i++);
2. Statement Ungkapan/ Espressions Statement
Statement Ungkapan adalah statement yang dibentuk dari suatu ungkapan yang diakhiri dengan titik koma (;). Contoh:
luas=panjang*lebar scanf(“%i”,&luas); printf(“nilai luas persegi adalah %i”,luas); luas--;
3. Statement Kendali/ Control Statement
Statement kendali adalah statement yang dipakai untuk mengendalikan proses dari progam, yaitu penyelesaian kondisi/ percabangan (if, case, switch) dan lompatan /perulangan (for, while, do-while, break, continue) Contoh: Statement kendali adalah statement yang dipakai untuk mengendalikan proses dari progam, yaitu penyelesaian kondisi/ percabangan (if, case, switch) dan lompatan /perulangan (for, while, do-while, break, continue) Contoh:
4. Statement Jamak/ Compound Statement/ Block Statement
Statement jamak adalah statement yang terdiri dari gabungan beberapa statement tunggal yang ditulis diantara tanda kurung kurawal (“(“ dan”)”).
Contoh: {
s canf(“%f”,&Panjang); s canf(“%f”,&Lebar); Luas=Panjang*Lebar;
2.4. Latihan
1. Soal 1
a. Coba ganti \t dengan \n atau \b!
b. Tambahkan //printf (“memberikan comment”); dibawah print (“1 karakter escape\ t2.karakter escape”);
2. Soal 2
a. Jika progam di atas di jalankan, bagaimanakah tampilannya? Mengapa demikian?
b. Coba ganti int menjadi long int dan %i menjadi %li. Bagaimana tampilannya?
3. Soal 3
Perhatikan setiap perbedaan yang dihasilkan!
4. Soal 4
Adakah perbedaan hasil format yang dihasilkan???
5. Soal 5
Perhatikan setiap perbedaan yang dihasilkan! Coba bandingkan dengan latihan 3!
BAB 3. TIPE, OPERATOR DAN EKSPRESI
Progam komputer pada dasarnya memanipulasi objek (data) di dalam memori. Peubah (variable) dan konstanta (constant) adalah objek data dasar yang dimanupulasi di dalam progam. Deklarasi daftar peubah digunakan untuk menyatakan tipe peubah. Operator menspesifikasikan operasi apa yang dapat dilakukan terhadap peubah dan konstanta. Ekspresi mengombinasikan peubah-peubah dan konstanta untuk menghasilkan nilai baru.
Tipe sebuah objek menentukan himpunan nilai yang dapat dimilikinya dan opeerasi yang dapat dilakukan pada objek tersebut. Nilai-nilai yang dicakup oleh tipe tersebut dinyatakan di ranah (domain) nilai. Operasi-operasi (beserta operator) yang dapat dilakukan terhadap tipe tersebut juga didefinisikan.
Tipe data dapat dikelompokkan menjadi atas dua macam: tipe dasar dan tipe bentukan. Tipe dasar adalah tipe yang dapat langsung dipakai, sedangkan tipe bentukan dibentuk dari tipe dasar atau dari tipe bentukan lain yang sudah didefinisikan sebelumnya.
3.1. Tabel Translasi dari Algoritmik ke Pascal dan C
Kelompok Algoritmik
C Ket. 1. Tipe Dasar
(Lihat ket. Dibawah table)
integer
byte
unsigned char 1 byte
shortint
signed char
1 byte
word
unsigned int
2 byte
integer
int, short int 2 byte
longint
long int
long double
(lihat ket.)
string [n]
char[n]
<field1:type,
field1:
{type field1;
field2:type,
type;
type field2;
field2:
fieldN:type
type;
type fieldN;
fieldN: type end;
2. Operator a. aritmetik +
div
div
mod
mod mod
c. logika and
tidak ada
tidak ada
d. string <
tidak ada
tidak ada
tidak ada
tidak ada
tidak ada
tidak ada
3. Komentar { komentar }
4. Lain-lain const
dapat diganti 1
false
true
dapat diganti 0
Keterangan Tambahan:
1. Bahasa C tidak menyediakan tipe boolean secara eksplisit. Tipe boolean dapat diganti dengan tipe integer, yang dalam hal ini true =1, false =0. Namun demikian, kita dapat membentuk tipe baru yang bernama boolean dengan typedef sebagai berikut:
typedef enum {false = 0, true = 1} Boolean; Tipe Boolean di atas selanjutnya dpat digunakan untuk mendeklarasikan peubah yang bertipe boolean: Boolean ketemu; /* ketemu adalah peubah bertipe Boolean */ Selanjutnya, false dan true dapat digunakan sebagai konstanta boolean di dalam
progam C.
2. Sebuah karakter atau string dalam bahasa Pascal diapit dengan sepesang tanda petik tunggal („…‟), sedangkan dalam bahasa C karakter diapit dengan sepasang tanda petik tunggal („…‟) dan sebuah string diapit oleh sepasang tanda petik ganda (“…”).
Contoh dalam bahasa Pascal: „a‟
(karakter)
„Teknik Informatika‟
(string)
Contoh dalam bahasa C: „a‟
(karakter)
“Teknik Informatika”
(string)
Perhatikan bahwa di daam bahasa C, „a‟ adalah sebuah karakter, sedangkan “a” adalah sebuah string.
3. Dalam bahasa Pascal, string yang tidak disertai dengan panjang maka diasumsikan panjangnya adalah default, yaitu 255. Apabila panjangnya ditentukan, panjang tersebut harus disebutkan. Contoh: kota : string[20];
4. Bahasa C tidak menyediakan tipe string secara khusus. String di dalam bahasa C direpresentasikan dengan larik (array). Kita juga dapat membuat tipe bentukan baru untuk string dengan menggunakan larik dan fasilitas typedef dan panjang string maksimum 255 (seperti nilai defaut panjang string di bahasa Pascal)
typedef char string[255]; Tipe string ini selanjutnya dapat digunakan untuk mendeklarasikan peubah yang
bertipe string: string p, kota; /* p dan kota adalah peubah bertipe string */ Jika panjang string ditetapkan, maka nama peubah yang bertipe string
didefinisikan sebagai array karakter disertai panjang string tersebut: char nama_peubah[n]; dengan n adalah panjang string.
Contoh: char kota[20];
5. Dua buah string di dalam bahasa C tidak dapat dibandignkan secara langsung, karena string pada dasarnya adalah array of character. Namun kita dapat membandingkan kesamaan dua buah string dengan menggunakan fungsi strcmp. Fungsi ini menghasilkan nilai perbandingan dua buah string, s1 dan s2 dengan format:
nilai = strcmp (s1,s2) yang dalam hal ini, nilai=0 jika s1=s2, nilai<0 jika s1<s2, dan nilai >0 jika s1>s2.
6. Pendeklarasian konstanta dalam bahasa C, selain menggunakan kata kunci const , dapat juga menggunakan pernyataan baris #define . Pernyataan #define mendefinisikan konstanta simbolik dengan cara penulisan:
#define nama nilai Pernyataan di atas bererti, setiap kemunculan nama di dalam progam akan diganti
dengan nilai.
Contoh: /* nama konstanta */ const float phi = 3.14;
/* konstanta π */ const int N = 100;
/* jumlah mahasiswa */ const char sandi{}= “xyz”;
/* kunci rahasia */
atau /* nama konstanta */
#define PHI 3.14 /* konstanta π */ #define N 100
/* jumlah mahasiswa */ #define SANDI “xyz”
/* kunci rahasia */
Pernyataan #define harus diletakkan di luar blok main(). Perhatikan bahwa tidak diperlukan karakter “;” pada akhir pernyataan #define. Nama-nama seperti PHI,
N dan SANDI adalah konstanta simbolik, bukan peubah, sehingga tidak muncul di bagian deklarasi. Nama-nama konstanta simbolik menurut konvensi ditulis dengan huruf besar untuk membedakannya dengan nama peubah.
3.2. Ekspresi
Suatu nilai dipakai untuk proses transformasi menjadi keluaran yang diinginkan. Transformasi nilai menjadi keluaran dilakukan melalui suatu perhitungan (komputasi). Cara perhitungan ini dinyatakan dalam suatu ekspresi. Ekspresi terdiri atas operand dan operator. Operand adalah nilai yang dioperasikan dengan operator tertentu. Operand dapat berupa konstanta, nama peubah, nama konstanta, atau hasil darui suatu fungsi. Hasil evaluasi dari sebuah ekspresi adalah nilai di dalam ranah yang sesuai dengan tipe operand yang dipakai. Dikenal tiga macam ekspresi: ekspresi aritmetik, ekspresi relasional, dan ekspresi string.
3.2.1. Ekspresi Aritmetik
Ekspresi numeric adalah ekspresi yang baik operand-nya bertipe numeric dan hasilnya juga bertipe numeric. Misalkan dideklarasikan nama-nama peubah sebagai berikut:
DEKLARASI a, b, c
: real d : integer I, j, k
: integer
Contoh ekspresi numeric misalnya, a*c Hasil evaluasi ekspresi tersebut juga bertipe real. Pada ekspresi ini, operand-nya
adalah a dan b, sedangkan operatornya adalah “*”. Bila hasil evaluasi disimpan ke dalam adalah a dan b, sedangkan operatornya adalah “*”. Bila hasil evaluasi disimpan ke dalam
c a*b
adalah benar, tetapi pernyataan
d a*b
tidak benar karena d bertipe integer sedangkan hasil evaluasi ekspresi bertipe real.
Contoh lainnya adalah penyimpanan ekspresi (i+j) div 2 ke dalam peubah k: k (I + j) div 2 Contoh ekspresi numeric lainnya: a/2.5) + c *b
i+(j*k) – 10*(d+k) 100.0/(a+c) – 2.5
Yang harus diperhatikan dalam penulisan ekspresi numeric adalah tingkatan (hirharki) operator. Operator yang mempunyai tingkatan lebih tinggi lebih dahulu dikerjakan daripada operator yang tingkatannya lebih rendah. Misalnya ekspresi
a/c + b
akan dikerjakan dengan urutan a/c lebih dahulu, lalu hasilnya ditambah dengan b. Urutan evaluasi ekspresi dapat berubah karena penggunaan tanda kurung. Misalnya
ekspresi.
a/ (c + b) akan dikerjakan sebagai c + b lebih dahulu, baru kemudian a dibagi dengan hasil dari
c + b. Tingkatan operator aritmetika adalah (dari tertinggi ke terendah): (i) div, mod
(ii) / (iii) * (iv) +, -
Operator “/” dan “*” dapat saja mempunyai urutan prioritas yang sama, misalnya
a*b/c a*b/c
(b*c). Penggunaan tanda kurung dapat menghilangkan kesalahan interprestasi. Operator +, - mempunyai urutan prioritas yang sama. Apabila ada bagian ekspresi
yang diapit oleh pasangan tanda kurung, maka ekspresi di dalam tanda kurung mempunyai prioritas tertinggi untuk dievaluasi terlebih dahulu.
Contoh-contoh ekspresi yang sudah kita kemukakan merupakan ekspresi biner, yaitu ekspresi yang operator-nya membutuhkan dua buah operand (sehingga operator-nya disebut juga operator biner). Disamping ekspresi biner, terdapat juga ekspresi uner, yaitu ekspresi dengan satu buah operand, misalnya
-a -a * (b+c)
(- a adalah ekspresi uner). Operator “-“, selain merupakan operator biner, juga adalah satu-satunya operator uner dari seluruh operator aritmetika.
Ekspresi biner pada seluruh contoh diatas ditulis dalam notasi infix, yaitu notasi yang kita gunakan dalam kehidupan sehari-hari. Notasi infix adalah notasi dengan susunan:
operand1 operator operand2 selain notasi infix, ekspresi biner juga dapat ditulis dalam notasi prefix: operator operand1 operand2 atau dalam notasi postfix (suffix atau polish): operand1 operand2 operator Contoh ekspresi infix, prefix, dan postfix:
infix : 6*8
a+b/c*d-e*f a+b/c*d-e*f
*+a/bc-d*ef
postfix : 68*
abc/+def*-*
Umumnya bahasa pemrogaman mengevaluasi ekspresi dalam notasi infix, namun ada beebrapa bahasa pemrogaman tertentu yang dapat menghitung ekspresi dalam notasi postfix dan prefix.
Rumus-rumus di bawah ini dalam notasi algoritmik:
T 5/9*(C + 32) z (2*x + y) / (5*w) y 5((a + b) / (c*d) + m/(p + q))
3.2.2. Ekspresi Relasional
Ekspresi relasional adalah ekspresi dengan operator <, ≤, >, ≥, =, dan ≠, not, and, or dan xor. Hasil evaluasi ekspresinya adalah nilai bertipe boolean (true atau false), sehingga ekspresi relasional kadang-kadang disebut juga ekspresi boolean. Misalkan dideklarasikan nama-nama peubah sebagai berikut ini:
DEKLARASI ada, ketemu, besar : boolean x, y : integer
Misalkan ketemu berisi nilai false , ada bernilai true , x bernilai 8 dan y bernilai 12 , maka. Contoh-contoh ekspresi boolean adalah:
not ada (hasil: false) ada or ketemu (hasil: true) ada and true (hasil: true) x < 5 (hasil: false) ada or (x = y) (hasil: true)
3.2.3. Ekspresi String
“+” (operator penyambungan/concatenation). Misalkan dideklarasikan nama-nama peubah sebagai berikut
Ekspresi string
DEKLARASI Kar : char S : string
maka contoh-contoh ekspresi string misalnya: s + kar) + „c‟ { operasi penyambungan karakter/string }
„Jl Ganesha „ + „No 10‟
3.3. Tabel Translasi Notasi Algoritmik Pengisian Nilai, Pembacaan, dan Penulisan ke dalam Notasi Bahasa Pascal dan C
Tabel 4. Tabel translasi notasi algoritmik pengisian nilai, pembacaan, dan penulisan ke dalam notasi bahasa pascal dan C
Keterangan:
read : membaca masukan dari papan kunci, kursor tetap di posisi yang sama readln : sama, tetapi kursor kemudian pindah ke baris berikutnya write : menulis keluaran di layar, kursor tetap pada posisi yang sama
writeln
: sama, tetapi kursor kemudian pindah ke baris berikutnya. scanf : membaca dengan menggunakan penentu format printf : mencetak nilai dengan penentu format
Tabel penentu format dalam bahasa C:
Tabel 5. Tabel penentu format dalam bahasa C
3.4. Latihan
1. Soal 1
a. Jika progam di atas di jalankan, bagaimanakah tampilannya? Mengapa demikian?
b. Ubah pemrogaman diatas untuk mencari bilangan ganjil!
2. Soal 2
a. Jika progam di atas di jalankan, bagaimanakah tampilannya? Mengapa demikian?
3. Soal 3
a. Sebuah mobil melaju dengan kecepatan tetap v km/jam. Jika mobil tersebut berjalan selama t jam, tulislah algoritma untuk menghitung jarak yang sudah ditempuh mobil (dalam km). algoritma tersebut membaca masukan berupa v dan t, menghitung jarak dengan rumus s = vt, lalu mencetak jarak tersebut.
b. Translasikan algoritma soal diatas ke dalam progam, lalu tes progam dengan bermacam-macam nilai v dan t.
BAB 4. RUNTUNAN
Runtunan adalah struktur algoritma paling dasar yang berisi rangkaian instruksi yang diproses secara sekuensial, satu per satu, mulai dari instruksi pertama sampai instruksi terakhir.
4.1. Pendahuluan
Algoritma merupakan runtutan (sequence) satu atau lebih instruksi, yang berarti bahwa;
1. Tiap instruksi dikerjakan satu per satu;
2. Tiap instruksi dilaksanakan tepat sekali; tidak ada instruksi yang diulang;
3. Urutan instruksi yang dilaksanakan pemroses sama dengan urutan instruksi sebagaimana yang tertulis di dalam teks algoritmanya;
4. Akhir dari instruksi terakhir merupakan akhir algoritma Setiap instruksi di dalam runtutan ditulis dalam satu baris, atau beberapa instruksi
dalam baris yang sama tetapi antara setiap instruksi dipisahkan dengan tanda titik koma (;). Contoh-contoh masalah di bawah ini memperlihatkan algoritma yang berisi runtutan.
4.2. Contoh-contoh runtunan
1. Contoh 1
a. Tulis algoritma masing-masing dalam notasi algoritmik, flowchart, dan C yang membaca panjang dan lebar dari sebuah empat persegi panjang, lalu menghitung luas segiempat yang berbentuk empat persegi panjang. Luas segiempat adalah panjang dikali lebar. Luas segiempat dicetak ke piranti keluaran. Tuliskan!
panjang
lebar
Gambar 11. Luas segiempat yang berbentuk empat persegi panjang adalah panjang x lebar
b. Algoritma
Algoritma Luas_Persegi_Panjang {Menghitung luas persegi panjang dengan memasukkan nilai panjang dan lebar} Deklarasi
p,l,luas : float;
Deskripsi
printf(“Panjang”); scanf(“%f”,&p); printf(“Lebar”); scanf(“%f”,&l);
luas p*l printf(“luas = %.2f”,luas);
c. Flowchart
START
Input Panjang, Lebar
Luas p*l
Output luas
END
Gambar 12. Flowchart algoritma menghitung luas persegi panjang
d. C:
2. Contoh 2
a. Seorang pelari marathon menempuh waktu lari yang diukur dalam satuan jam, menit, dan detik. Tulislah algoritma yang membaca waktu tempuh seorang a. Seorang pelari marathon menempuh waktu lari yang diukur dalam satuan jam, menit, dan detik. Tulislah algoritma yang membaca waktu tempuh seorang
1 menit = 60 detik 1 jam = 3600 detik
b. Algoritma
PROGAM Konversi_ke_detik {Membaca waktu tempuh pelari maraton dalam jam, menit, detik, lalu mengkonversi waktu tempuh tersebut ke dalam detik. Hasil konversi ditampilkan ke piranti keluaran} DEKLARASI
type Jam = record
< hh : integer {jam} mm : integer {menit} ss : integer {detik}
> J : Jam TotalDetik : integer
ALGORITMA read (jam, menit, detik) TotalDetik (J.hh*3600) + (J.mm*60) + J.ss Write(TotalDetik)
c. Flowchart
START
Input n detik
Konversi 1 menit = 60 detik, 1 jam = 3600 detik
Output konversi
END
d. C:
BAB 5. PEMILIHAN
Progam yang hanya berisi runtutan instruksi biasanya terdapat pada masalah sederhana. Seringkali suatu instruksi hanya bisa dikerjakan jika ia memenuhi suatu persyaratan tertentu. Oleh karena itu, komputer tidak lagi mengerjakan instruksi secara sekuensial seperti pada runtutan, tetapi berdasarkan syarat yang dipenuhi. Di dalam bab ini kita membahas konstruksi algoritma yang penting yaitu struktur pemilihan (selection).
5.1. Menganalisis kasus
Sebuah persoalan harus kita analisis untuk menentukan kasus-kasus yang mungkin terdapat didalamnya. Untuk setiap kasus ada aksi tertentu yang dilakukan. Adanya analis kasus menyebabkan terjadinya pemilihan instruksi (atau percabangan) di dalam algoritma, bergantung pada kasus mana yang dipenuhi.
Sebagai contoh, kita ingin menentukan menentukan di kuadran mana terletak sebuah titik di bidang kartesian. Yang dimaksud dengan kuadran adalah seperempat bidang datar bidang yang terbagi oleh sumbu-sumbu koordinat (sumbu-X dan sumbu-Y). ada empat kuadran di bidang kartesian, yaitu kuadran I, kuadran II, kuadran III, kuadran IV. Suatu titik P(x,y) dapat terletak pada salah satu dari empat kuadran kuadran tersebut, bergantung pada tanda x dan y (apakah positif atau negative). Nilai α disebut positif jika α > 0, dan sebaliknya disebut negative jika α < 0. Kita tidak mendefinisikan kuadran titik P jika titik tersebut terletak pada sumbu-sumbu koordinat (salah satu dari x atau y = 0)
Ada lima kasus yang harus kita analisis untuk menentukan kuadran titik P(x,y), yaitu: Kasus 1: jika x>0 dan y>0, maka titik P erletak di kuadran I Kasus 1: jika x<0 dan y>0, maka titik P terletak di kuadran II Kasus 3: jika x<0 dan y<0, maka titik P terletak di kuadran III Kasus 4: jika x>0 dan y<0, maka titik P terletak di kuadran IV Kasus 5: selain Kasus 1, 2, 3, dan 4, maka titik P tidak terletak di kuadran manapun. Contohnya, titik (1, 3) terletak di kuadran I karena 1 > 0 dan 3 > 0, titik (-1, 3) di
kuadran II, titik (-1, -3) di kuadran III, dan titik (3, -1) di kuadran IV.
Kuadran II
Kuadran I
Kuadran III
Kuadran IV
(x < 0, y < 0)
(x > 0, y < 0)
Gambar 13. Penetapan kuadran untuk titik-titik di bidang kartesian. Kuadran adalah bidang yang merupakan
seperempat dari bidang kartesian.
5.2. Satu kasus
Notasi algoritmik untuk ananlisis dengan satu kasus adalah dengan menggunakan konstruksi IF-THEN (jika-maka) dalam bentuk pernyataan:
if kondisi then aksi endif
Pernyataan di atas bererti bahwa aksi hanya dilaksanakan bila kondisi bernilai benar (true). Bila kondisi bernilai salah (false), tidak ada aksi apapun yang dikerjakan. Kata endif sengaja kita tambahkan untuk mempertegas awal dan akhir struktur IF-THEN.Aksi yang dikerjakan bisa satu, dua atau lebih. Bagan alir pada gambar dibawah membantu memperlihatkan visualisasi pemilihan dengan hanya satu kasus ini.
Gambar 14. Bagan alir yang memperlihatkan pemilihan dengan hanya satu kasus
5.2.1. Contoh-contoh Masalah dengan Satu Kasus
1. Contoh 1. Buatlah algoritma yang membaca sebuah bilangan bulat, lalu mencetak pesan “genap” jika bilangan tersebut adalah genap.
Penyelesaian: Bilangan genap adalah bilangan yang habis dibagi dengan 2 (sisa pembagian = 0). Oleh karena itu, kita perlu membagi data masukan dengan 2. Jika data masukan habis dibagi 2, maka tulis bahwa bilangan tersebut bilangan genap.
Gambar 15 . Mencetak “genap” jika data masukan adalah bilangan genap
5.3. Dua kasus
Konstruksi IF-THEN hanya menyediakan satu alternative aksi jika suatu pernyataan (kondisi) dipenuhi. Kadang-kadang kita perlu memilih melakukan aksi alternative jika suatu kondisi tidak memenuhi. Jadi ada dua kasus, tetapi hanya salah satu dari keduanya yang harus dipilih satu untuk dikerjakan. Notasi algoritmik untuk masalah dengan dua buah kasus adalah dengan menggunakan konstruksi IF-THEN-ELSE (jika-maka-kalau tidak).
if kondisi then
endif Pernyataan di atas berarti bahwa aksi, dikerjakan jika kondisi bernilai benar,
sebaliknya jika kondisi bernilai salah, maka aksi 2 yang akan dilaksanakan. Perhatikan bahwa else menyatakan ingkaran (negation) dari kondisi. Bagan alir berikut akan membantu memperlihatkan visualisasi pemilihan dengan dua kasus.
Gambar 16. Bagan alir yang memperlihatkan pemilihan dengan dua kasus
5.3.1. Contoh-contoh Masalah dengan Dua Kasus
1. Contoh 1. Tulislah algoritma yang membaca sebuah bilangan bulat, lalu menuliskan pesan “genap” jika bilangan tersebut adalah genap, atau “ganjil” jika
bilangan tersebut adalah bilangan ganjil. Penyelesaian: Misalkan bilangan bulat yang dibaca adalah x. Hanya ada dua kemungkinan untuk x, yaitu genap atau ganjil. Bilangan genap adalah bilangan yang habis dibagi dengan 2 (memberikan sisa = 0), sedangkan bilangan ganjil bersisa 1 bila dibagi dengan 2. Contohnya, 10 adalah bilangan genap karena 10 mod 2 = 0, tetapi 9 adalah bilangan ganjil karena 9 mod 2 = 1.
Analisis kasus: Kasus 1: jika x mod 2 = 0, maka tulis pesan “genap”
Kasus 2: jika x mod 2 ≠ 0, maka tulis pesan “ganjil”
Gambar 17. Menentukan genap atau ganjil
5.4. Tiga Kasus atau Lebih
Masalah yang mempunyai tiga buah kasus atau lebih dapat dianalisis dengan konstruksi IF-THEN-ELSE bertingkat-tingkat.
Tiga Kasus: if kondisi then
aksi 1
else if kondis i2 then
aksi 2
else
if kondisi 3 then aksi 3
endif
endif endif
Gambar 18. Bagan alir yang memperlihatkan pemilihan dengan tiga kasus
5.4.1. Contoh-contoh Masalah dengan Tiga Kasus atau Lebih
1. Contoh 1. Tulislah algoritma yang membaca masukan nama ibukota di jawa lalu menentukan apakah masuk jawa barat, jawa tengah atau jawa timur.
Gambar 19. Menentukan ibukota di jawa
BAB 6. PENGULANGAN
Salah satu kelebihan komputer dibandingkan dengan manusia adalah kemampuannya untuk melaksanakan suatu perintah berulangkali tanpa menganal lelah dan bosan. Didalam algoritma, pengulangan atau kalang (repetition atau loop) dapat dilakukan sejumlah kali, atau sampai kondisi berhenti pengulangan tercapai. Pada bab ini membahas struktur pengulangan.
6.1. Struktur Pengulangan
Di dalam algoritma terdapat beberapa macam konstruksi pengulangan yang berbeda. Beberapa konstruksi dapat dipakai untuk masalah yang sama, namun ada konstruksi pengulangan yang hanya cocok dipakai untuk masalah tertentu. Pemilihan konstruksi pengulangan untuk masalah tertentu dapat mempengaruhi kebenaran algoritma. Pemilihan konstruksi pengulangan yang tepat bergantung pada masalah yang akan diprogam. Ada 3 macam konstruksi pengulangan dalam bentuk pernyataan, yaitu:
1. Pernyataan FOR;
2. Pernyataan WHILE;
3. Pernyataan REPEAT;
6.2. Pernyataan FOR
Konstrusi FOR digunakan untuk menghasilkan pengulangan sejumlah kali yang telah dispesifikasikan. Jumlah pengulangan diketahui atau dapat ditentukan sebelum eksekusi. Untuk mencacah beberapa kali pengulangan dilakukan, kita memerlukan sebuah peubah (variable) pencacah (counter). Peubah ini nilainya selalu bertambah satu setiap kali pengulangan dilakukan. Jika cacah pengulangan sudah mencapai jumlah yang dispesifikasikan, maka proses pengulangan berhenti.
6.2.1. Contoh Pernyataan FOR
1. Contoh 1. Sebagai contoh pertama, misalkan kita ingin mencetak pesan “Hello, world” sebanyak 10 kali, maka pemrogamannya adalah:
6.3. Pernyataan WHILE
Bentuk umum pernyataan WHILE adalah: while kondisi do
aksi endwhile
Keterangan:
Aksi akan dilaksanakan berulangkali selama kondisi bernilai true. Jika kondisi bernilai false, badan pengulangan tidak akan dimasuki, yang berarti pengulangan selesai. Kondisi di akhir pengulangan (setelah endwhile) disebut loop invariant, yaitu variable kondisi yang nilainya sudah tidak berubah lagi.
6.3.1. Contoh Pernyataan FOR
1. Contoh 1. Sebagai contoh pertama, misalkan kita ingin mengetahui rata-rata dari N bilngan N > 0 :
6.4. Pernyataan REPEAT
Bentuk umum pernyataan REPEAT adalah: repeat
aksi until kondisi
Notasi ini mendasarkan pengulangan pada kondisi Boolean. Aksi di dalam badan kalang diulang-ulang sampai kondisi bernilai true. Degnan kata lain, jika kondisi masih false, proses pengulangan masih terus dilakukan. Karena proses pengulangan suatu saat harus berhenti, maka di dalam badan pengulangan harus ada pernyataan yang mengubah nilai peubah kondisi.
Pernyataan REPEAT memiliki makna yang sama dengan WHILE, dan dalam beberapa masalah kedua pernyataan tersebut komplemen satu sama lain.
6.5. Tabel Translasi Notasi Algoritmik Struktur Pengulangan ke Notasi Pascal dan C Struktur Algoritma
Pascal
FOR For menaik:
FOR menaik:
FOR menaik:
for(pencacah= do
for pencacah a to b
for pencacah:=a to
b a;a<=b;a++) aksi
aksi; endfor
Bila aksi lebih dari
Bila aksi lebih
satu buah, maka
dari
runtunan aksi diawali
satu buah, maka
dengan “{“ dam “}”.
runtutan aksi diawali dengan
for (pencacah=
begin
a;a<=b;a++)
dan end.
aksi1;
for pencacah:= a to
aksi2; b .
end; (*for)
FOR menurun:
FOR menurun:
FOR menurun:
for pencacah a
for(pencacah= downto
for pencacah:=a
downto b do
a;a<=b;a++) a;a<=b;a++)
aksi; aksi
aksi;
/*endfor*/ endfor
(*endfor*)
Keterangan: Bila aksi lebih
Keterangan:
dari
Bila aksi lebih dari
satu buah, maka
satu buah, maka
suntutan aksi
runtutan aksi diawali
diawali dengan
dengan “{“ dan “}”.
begin dan end.
for( pencacah=a;a<=b;a+ +)
for pencacah:=a to
b aksi1;
end; (*for*)
WHILE while kondisi do
while (kondisi) aksi
while kondisi do
aksi endwhile
Bila aksi lebih
Bila aksi lebih dari
dari
satu buah, maka
satu buah, maka
runtutan aksi diawali
runtutan aksi
dengan “{“ dan “}”.
diawali dengan begin
while (kondisi)
dan end.
aksi1;
while kondisi do
end; (*while*)
REPEAT repeat
repeat
do {
aksi until kondisi
aksi
aksi;
until kondisi;
}while (:kondisi); .
Keterangan:
Keterangan:
Bila aksi lebih
Bila aksi lebih dari
dari
satu buah, maka
satu buah, maka
runtunan aksi diawali runtunan aksi tidak dengan begin dan end.
perlu diawali dengan
do
begin dan end.
aksi1; aksi2; . . .
}while (: kondisi)
6.6. Latihan
1. Buatlah algoritma yang membaca semabarang karakter dan mencetaknya ke layar. Buatlah algoritma untuk dua kasus:
a. Jumlah karakter yang dibaca diketahui, yaitu N buah (baca N terlebih dahulu)
b. Jumlah karakter yang dibaca tidak diketahui, tetapi proses pembacaan berakhir jika karakter yang dimasukkan adalah karakter titik (karakter titik tidak ikut dicetak)
2. Buatlah algoritma untuk menghitung jumlah N buah bilangan ganjil pertama (yaitu, 1+3+5+…). Catatan: N adalah bilangan bulat tidak negative.
3. Buatlah algoritma untuk menghitung jumlah bilangan ganjil dari 1 sampai N (yaitu, 1+3+5+…+N). (perhatikan perbedaan soal latihan ini dengan soal nomor 1).
4. Tuliskan progam Pascal dan C untuk mencetak gambar segitiga bintang sebanyak N baris, setiap baris ke-I berisi I buah bintang. Nilai N dibaca dari papan kunci. Contoh: masukan: N=5 Keluaran: * ** *** **** *****
5. Tuliskan algoritma untuk menampilkan semua solusi bilangan bulat tidak negative dari persamaan berikut: x + y + z = 25 Yang dalam hal ini, x ≥ o, y ≥ o, dan z ≥ o.