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.