diktat alpro 1

101
BAB I Pendahuluan 1. Tujuan Instruksional Umum : Setelah menyelesaikan matakuliah ini diharapkan mahasiswa mendapatkan gambaran tentang Algoritma dan pemrograman, dan dapat memahami pemrograman berdasarkan konsep algoritma. 2. Tujuan Instruksional Khusus : Mahasiswa memahami dan mengerti definisi Algoritma, Memahami dan mengerti definisi pemrograman dan perbedaan antara algoritma dan pemrograman. Materi : a. Pengenalan Komputer Komputer adalah alat bantu yang berfungsi untuk membantu manusia dalam menyelesaikan suatu masalah. Namun dalam pemecahan permasalahannya, komputer memiliki permasalahan-permasalahan sebagai berikut : 1. Ada Jarak antara persoalan dengan komputer (problematika manusia tidak dapat begitu saja disodorkan kepada komputer dan di jawab) 2. Problematika manusia harus disodorkan ke komputer dalam bentuk program 3. Terdapat berbagai paradigma untuk menghasilkan program 4. Komputer adalah mesin digital dan hanya mengenal bahasa mesin (kode biner) 5. Diperlukan suatu bahasa (bahasa pemrograman) yang menjembatani antara manusia dan komputer

Upload: epoiiinside

Post on 01-Jan-2016

257 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Diktat Alpro 1

BAB I

Pendahuluan

1. Tujuan Instruksional Umum :

Setelah menyelesaikan matakuliah ini diharapkan mahasiswa mendapatkan

gambaran tentang Algoritma dan pemrograman, dan dapat memahami

pemrograman berdasarkan konsep algoritma.

2. Tujuan Instruksional Khusus :

Mahasiswa memahami dan mengerti definisi Algoritma, Memahami dan

mengerti definisi pemrograman dan perbedaan antara algoritma dan

pemrograman.

Materi :

a. Pengenalan Komputer

Komputer adalah alat bantu yang berfungsi untuk membantu manusia dalam

menyelesaikan suatu masalah. Namun dalam pemecahan permasalahannya, komputer

memiliki permasalahan-permasalahan sebagai berikut :

1. Ada Jarak antara persoalan dengan komputer (problematika manusia tidak

dapat begitu saja disodorkan kepada komputer dan di jawab)

2. Problematika manusia harus disodorkan ke komputer dalam bentuk program

3. Terdapat berbagai paradigma untuk menghasilkan program

4. Komputer adalah mesin digital dan hanya mengenal bahasa mesin (kode

biner)

5. Diperlukan suatu bahasa (bahasa pemrograman) yang menjembatani antara

manusia dan komputer

Page 2: Diktat Alpro 1

“Ilmu” Pemrograman di Era Modern telah berkembang dan menggeser “seni”

memprogram “trial end error”. Program harus dihasilkan dari proses pemahaman

masalah, analisis, sintesis dan baru dituangkan kedalam bahasa pemrograman. Beberapa

Paradigma dalam Pemrograman antara lain :

1. Prosedural / Terstruktur / Imperatif (mesin Von Newmann-Stored Program

Concept)

2. Fungsional

3. Deklaratif / Prediktif / Lojik

4. Obyek Oriented

Dibawah ini adalah beberapa bahasa pemrograman yang sesuai dengan paradigma

pemrograman masing-masing :

1. Prosedural: Algol, Pascal, Fortran, Basic, Cobol, C

2. Fungsional: LOGO, APL, LISP

3. Deklaratif: Prolog

4. Obyek Oriented:

- murni: Smalltalk, Eifel, Java

- hybrid: C++, Object Pascal

Belajar memprogram tidak sama dengan belajar bahasa pemrograman. Belajar

Memprogram adalah belajar tentang strategi pemecahan masalah, metodologi dan

sistematika pemecahan masalah kemudian menuangkan kedalam bentuk notasi yang

disepakati bersama yang tidak tergantung pada bahasa apapun (walaupun untuk

mebuktikan kebenarannya harus dicoba pada bahasa tertentu). Sedangkan Belajar

Bahasa Pemrograman adalah belajar menggunakan bahasa pemrograman tertentu yang

berkaitan dengan sintak (tatabahasa), instruksi, tatacara pengoperasian kompilator

pada mesin (komputer) tertentu.

Pemecahan persoalan lebih penting dari pada pemilihan bahasa pemrograman,

walapun pada akhirnya harus dipilih bahasa yang akan dipakai, dan mahasiswa harus

belajar keduanya. Setiap bahasa pemrograman memiliki aturan dan tabiat yang

berbeda-beda. Transisi dari satu bahasa ke bahasa lainnya memerlukan waktu untuk

adaptasi, tetapi jika strategi pemecahan masalah sudah dikuasai maka waktu adaptasi

bisa singkat.

Page 3: Diktat Alpro 1

Mekanisme Komputer (Mesin Von Neumann)

b. Tahapan program komputer

Program harus ditulis dalam suatu bahasa yang dimengerti oleh komputer yaitu

dalam Bahasa pemrogram dibedakan menjadi :

– Bahasa tingkat rendah (low level language) : bahasa yang berorientasi ke

mesin.

– Bahasa tingkat tinggi (high level language) : bahasa yang berorientasi ke

manusia (seperti bahasa inggris)

contoh bahasa Pascal, bahasa C dll.

Program yang ditulis dalam bahasa pemrograman akan diterjemahkan ke dalam

bahasa mesin (dikenal dengan biner digit) dengan menggunakan penterjemah.

Penterjemah :

– Interpreter : menterjemahkan baris per baris instruksi.

Contohnya adalah penerjemah yang digunakan oleh bahasa Basic.

– Compiler : menterjamahkan setelah seluruh instruksi ditulis. Contoh

Contohnya adalah penerjemah yang digunakan oleh bahasa Pascal, C, Ada

,C++, dll.

Input Device

Output Device

CPU Processor

Control Unit ALU

Memory

ROM RAM

Logika Program

Input Output Proses

Merekam Program dan Data

Berisi Daftar Instruksi

Page 4: Diktat Alpro 1

Program dalam Bahasa Tingkat

Tinggi

Program dalam Bahasa Mesin

Translasi/Coding

(Kompilasi+Linking)/Interpretasi

Eksekusi oleh CPU

Compiler: - Turbo C++ - Borland C++ Builder - Turbo Pascal - Turbo Basic

Algoritma

- C/C++ - Java

- Pascal - Basic

PERSOALAN

Strategi Pemecahan Persoalan

LOADA 10 LOADB 21 MUL LOADA 11 ADD

#include <stdio.h> void main() { printf("Hello World"); }

PROGRAM DALAM BAHASA TINGKAT

BHS RAKITAN

kompilator

Eksekusi oleh CPU

1 2 3 4 5 7 8 9 6

11 12 13 14 15 17 18 19 16

21 22 23 24 25 27 28 29 26

data

progr

M U L L A 3

1 2 3 4 5 7 8 9 6

11 12 13 14 15 17 18 19 16

21 22 23 24 25 27 28 29 26

L A 2 L B 5

A D D

4 5 3

BAHASA

PPrroosseessoorr

ME

MO

RI

CPU

ALU

A B

EDITOR MENGETIK PROGRAM/CODING

Page 5: Diktat Alpro 1

C. Definisi Algoritma

Definisi algoritma adalah urutan logis langkah-langkah penyelesaian masalah.

Menurut Kamus Besar Bahasa Indonesia: Algoritma adalah urutan logis pengambilan

putusan untuk pemecahan masalah. Kegunaan Algoritma adalah untuk memerintah

komputer mengambil langkah-langkah tertentu dalam menyelesaikan masalah

Asal-usul kata Algoritma Kata algorism pertama kali muncul dalam kamus

Webster 1957. Algorism berasal dari nama Abu Ja’far Muhammad ibnu Musa al-

Khuwarizmi (alKhuwarizmi dibaca oleh orang Barat menjadi algorism). Ia menulis buku

“Kitab al jabar wal-muqabala, artinya “Buku pemugaran dan pengurangan” (The book

of restoration and reduction).

Sebagai contoh adalah algoritma mempertukarkan isi dua buah gelas berisi sirup

merah dan hijau. Jika tidak hati-hati maka algoritma yang disusun akan memberikan

hasil jauh dari harapan, seperti algoritma dibawah ini :

Algoritma:

1. Tuangkan isi gelas merah ke dalam gelas hijau

2. Tuangkan isi gelas hijau ke dalam gelas merah

Page 6: Diktat Alpro 1

Algoritma TUKAR ISI GELAS di atas tidak menghasilkan pertukaran yang benar.

Langkah di atas tidak logis, hasil pertukaran yang terjadi adalah percampuran kedua

larutan tersebut.

Untuk mempertukarkan isi dua gelas, diperlukan sebuah gelas tambahan sebagai

tempat penampungan sementara, misalnya gelas K. Maka algoritma untuk menghasilkan

pertukaran yang benar adalah sebagai berikut :

M H K

1.

2.

Page 7: Diktat Alpro 1

Sebut gelas yang saat ini berisi sirup merah sebagai gelas M, yang berisi sirup hijau H

dan sebuah gelas kosong sebagai K

Algoritma:

1. Sediakan/persiapkan gelas K

2. Tuangkan isi gelas M ke dalam gelas K

3. Tuangkan isi gelas H ke dalam gelas M

4. Tuangkan isi gelas K ke dalam gelas H

H

M H K

H M K

M H K

M H K

1.

2.

3.

4.

Page 8: Diktat Alpro 1

Contoh diatas memberikan gambaran ciri-ciri algoritma yang merupakan aspek

penting dari sebuah algoritma. Menurut Donal E Knuth sebua algoritma harus memenuhi

persyaratan :

a. Finiteness

Algoritma harus berhenti (terminate) setelah mengrjakan sejumlah langkah

proses (after a finite number of steps);

b. Definiteness

Setiap langkah algoritma harus didefinisikan secara tepat dan tidak memberikan

makna ganda (ambiguous). Oleh karena itu, cara yang paling tepat untuk menulis

algoritma adalah dengan menggunakan formal language (bahasa pemrograman

komputer);

c. Input

Sebuah algoritma memerlukan nol atau lebih input yang diberikan kepada

algoritma untuk diolah. Algoritma yang tidak memerlukan masukan apa-apa

sebetulnya tidak begitu bermanfaat karena jumlah kasus yang dapat diselesaikan

juga terbatas.

d. Output

Sebuah algoritma memiliki satu atau lebih output, yang biasanya bergantung

kepada input;

e. Effectiveness

Setiap algoritma diharapkan miliki sifat efektif yaitu memiliki langkah-langkah

algoritma dikerjakan dalam waktu yang wajar;

D. Teknik Penulisan Algoritma

Algoritma bersifat programming language independent. Artinya penulisan

algortima tidak tergantung bahasa pemrograman tertentu. Ada beberapa teknik dalam

penulisan sebuah algoritma antara lain :

a. bahasa natural (Bahasa Indonesia, Bahasa Inggris, dan bahasa manusia lainnya)

seperti pada kasus pertukaran isi dua gelas.

Namun bahasa natural sering membingungkan (ambiguous)

b. Menggunakan flow chart (diagram alir)

Bagus secara visual akan tetapi repot kalau algoritmanya panjang

c. Menggunakan pseudo-code (Kode semu)

Page 9: Diktat Alpro 1

Sudah lebih dekat ke bahasa pemrograman, namun sulit dimengerti oleh orang

yang tidak mengerti pemrograman

Berikut ini contoh algoritma yang akan disajikan dalam bentuk bahasa natural,

flowchart dan pseudo-code : algoritma untuk menentukan suatu bilangan yang

diinputkan dari keyboard apakah termasuk bilangan ganjil atau genap dengan

menampilkan pesan ke layar pesan genap/ganjil

1. Algoritma dalam Bahasan Natural :

1. Definisikan/deklarasikan variabel dengan tipe bilangan bulat(integer).

Misalnya: x

2. Baca nilai x dari keyboard

3. Jika x dibagi 2 sisanya nol (tanpa sisa) maka cetak pesan ke layar “genap”

Selain itu (sisanya bukan nol / satu) maka maka cetak pesan ke layar “ganjil”

2. Algoritma dengan Flow Chart :

3. Algoritma dengan Pseudo Code

Program Genap_Ganjil

{Menentukan suatu bilangan bulat apakah bilangan genap atau bilangan ganjil

dengan input data dari keyboard dan hasil ditampilkan ke layar berupa pesan

“genap” / “ganjil”}

Deklarasi

x : integer {bilangan bulat yang akan uji genap/ganjil}

Algoritma:

read(x)

if x mod 2 = 0 then

write(‘Genap’)

else

write(‘Ganjil’)

endif

Page 10: Diktat Alpro 1

Untuk seterusnya di dalam materi kuliah ini yang digunakan adalah notasi pseudo-code.

Kerangka Algoritma :

oJudul (Header) :

tempat mendefinisikan apakah teks tersebut berupa program, fungsi,

prosedur atau modul

oDeklarasi:

tempat mendefinisikan type, konstanta, variabel, fungsi, prosedur

oDeskripsi:

tempat menuliskan instruksi atau pemanggilan aksi yang telah

didefinisikan.

Kerangka Algoritma

Judul . . . . . . . . .

{ . . . . . . . . . . . . . . . . . . }

Deklarasi :

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

Deskripsi :

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

E. Pengenalan bahasa C

Lahirnya bahasa pemrograman diawali oleh terbentuknya bahasa assembly yang

dikembangkan oleh IBM dalam tahun 1956 – 1963. Bahasa ini termasuk dalam bahasa

tingkat rendah (low level language). Pada tahun 1957, sebuah tim yang dipimpin oleh

John W Backus berhasil mengembangkan sebuah bahasa pemrograman baru yang lebih

diarahkan untuk proses analisa numerik. Bahasa pemrograman tersebut dinamakan

FORTRAN (Formula Translation). Setahun kemudian yaitu pada tahun 1958 para ilmuwan

komputer dari Eropa dan Amerika yang tergabung dalam sebuah komite menciptakan

bahasa pemrograman baru yang lebih bersifat struktural dan dinamakan dengan bahasa

Page 11: Diktat Alpro 1

ALGOL (Algoritma Language). Kemudian pada tahun 1964, IBM kembali menciptakan

bahasa pemrograman baru dengan nama PL/I(Programming Language 1) yang lebih

ditujukan untuk kepentingan bisnis dan penelitian.

Tahun 1969 laboratorium Bell AT&T di Murray, New Jersey menggunakan bahasa

Assembly untuk mengembangkan sistem operasi UNIX yang bertujuan untuk membuat

program antarmuka yang bersifat programmer friendly. Setelah Unix berjalan, lahirlah

bahasa pemrograman baru yang ditulis oleh Martin Richards dengan nama bahasa BCPL

(Basic Combine programming language). Kemudian pada tahun 1970, seorang

pengembang sistem dari laboratorium tersebut yang bernama Ken Thompson, membuat

bahasa B yang digunakan untuk menulis ulang sistem operasi Unix. Nama “B” ini konon

diambil dari huruf pertama dalam kata BCPL. Karena alasan bahwa bahasa B masih

terkesan lambat, maka pada tahun 1971 seorang pengembang sistem bernama Dennis

Ritchie, yang juga bekerja dilaboratorium yang sama, menciptakan bahasa baru dengan

nama “C” yang bertujuan untuk menulis ulang dan menutupi kelemahan-kelemahan

yang ada pada sistem operasi UNIX sebelumnya. Menurut sumber yang ada, nama “C” ini

juga konon diambil dari huruf kedua dalam kata BCPL.

F. Kerangka Program dalam Bahasa C :

Setiap program yang ditulis dalam bahasa C harus mempunyai fungsi utama, yang

bernama main ( ). Fungsi inilah yang pertama kali akan dipanggil pada saat proses

eksekusi program. Artinya apabila ada fungsi lain selain fungsi utama maka fungsi lain

tersebut baru akan dipanggil pada saat akan digunakan. Fungsi main( ) ini dapat

mengembalikan nilai 0 ke sistem operasi yang berarti bahwa program tersebut berjalan

dengan baik tanpa ada kesalahan.

Berikut ini dua bentuk kerangka fungsi main( ) didalam bahasa C yang sama-sama

dapat digunakan.

Page 12: Diktat Alpro 1

a. bentuk pertama (tanpa pengembalian nilai ke sistem operasi)

void main(void)

{

statemen_yang_akan_dieksekusi;

............

}

Kata kunci void diatas bersifat opsional artinya bisa ditulis atau bisa juga tidak.

b. bentuk kedua (dengan mengembalikan nilai 0 ke sistem operasi)

Int main (void)

{

statemen_yang_akan_dieksekusi;

............

return 0;

}

Kerangka lengkap dari program yang ditulis dalam bahasa C adalah

seperti yang ditulis dibawah ini :

Include <nama_header_file> /*prototipe fungsi*/ Tipe_data nama_fungsi1 (parameter1, parameter2, ....); Tipe_data nama_fungsi2 (parameter1, parameter2, ....); /*fungsi utama*/ Int main(void) { statemen_yang_akan_dieksekusi; ............ return 0; } /*implementasi fungsi*/ Tipe_data nama_fungsi1 (parameter1, parameter2, ....) { statemen_yang_akan_dieksekusi; ............ }

Page 13: Diktat Alpro 1

Tipe_data nama_fungsi2 (parameter1, parameter2, ....) { statemen_yang_akan_dieksekusi; ............ }

Oleh karena itu bahasa C merupakan bahasa prosedural yang menerapkan konsep

runtunan (program dieksekusi perbaris dari atas ke bawah secara berurutan), maka

apabila ditulis fungsi-fungsi lain dibawa fungsi utama, maka harus dituliskan bagian

prototipe fungsinya, hal ini dimaksudkan untuk mengenalkan terlebih dahulu kepada

kompilator daftar fungsi yang ada dalam program. Namun apabila fungsi-fungsi ditulis

sebelum fungsi utama, maka tidak perlu lagi menuliskan bagian prototipe diatas.

Perhatikan contoh berikut :

Include <nama_header_file> /*implementasi fungsi*/ Tipe_data nama_fungsi1 (parameter1, parameter2, ....) { statemen_yang_akan_dieksekusi; ............ } Tipe_data nama_fungsi2 (parameter1, parameter2, ....) { statemen_yang_akan_dieksekusi; ............ } /*fungsi utama*/ Int main(void) { statemen_yang_akan_dieksekusi; ............ return 0; }

Page 14: Diktat Alpro 1

G. File Header (*.h)

File header adalah file dengan ekstensi h (*.h), yaitu file bantuan yang digunakan

untuk menyimpan daftar fungsi yang akan digunakan didalam program. Perlu sekali

diperhatikan bahwa apabila menggunakan file header yang telah disediakan oleh

kompilator, maka harus dituliskan dalam tanda “<” dan “>” (misalnya <stdio.h>).

Namun apabila menggunakan file header yang dibuat sendiri, maka file tersebut ditulis

diantara tanda “ “ (misalnya “cobaheader.h”)

Perbedaan antara keduanya terletak pada saaat pencarian file tersebut. Apabila

menggunakan tanda <>, maka file header tersebut akan dianggap berada pada direktori

default yang telah ditentukan oleh kompilator. Sedangkan apabila menggunakan tanda “

” maka file header dapat ditentukan sendiri lokasinya.

File header yang akan digunakan harus didaftarkan dengan menggunakan

direktive #include. Berikut adalah contoh header yang menggunakan directive #include:

#include <stdio.h>

#include <stdlib.h>

#include “myheader.h”

H. Mengenal Fungsi printf( )dan Scanf( )

Sebuah program memerlukan proses masukan (input) dan keluaran (output) data.

Dalam bahasa C telah tersedia fungsi pustaka, yaitu fungsi printf ( ) yang berguna untuk

menampilkan keluaran data dan fungsi scanf ( ) yang berguna untuk membaca masukan

data. Adapun prototipe dari kedua fungsi tersebut dapat dilihat dibawah ini :

printf (const char *format, .....);

scanf (const char *format, .....);

Page 15: Diktat Alpro 1

Contoh Program:

#include <stdio.h>

void main( )

{

/* Mencetak tulisan kelayar monitor*/

Printf (“saya belajar bahasa C”);

}

I. Karakter pembentuk Program

Program C ditulis dengan menggunakan sebagian dari karakter ASCII, yaitu

sebagai barikut :

1. Huruf Besar : A, B, C sampai Z

2. Huruf Kecil : a, b, c sampai z

3. Angka : 0,1,2 sampai 9

4. karakter Khusus : !, *,+,|,”,<,#,(,=,|,{,>,%,),~,;,}/,^,-,[,:,,,?,&,_,],’,.,spasi

J. Komentar

Pemberian komentar merupakan salah satu cara untuk memberikan dokumentasi

pada program yang akan berguna untuk membantu memperjelas alur logika penyusunan

program

Komentar diawali dengan simbol 2 karakter yang terdiri dari garis miring dan

asterik (/*) dan diakhiri dengan asterik dan garis miring (*/). Karakter-karakter

penunjuk komentar dapat diletakkan dimana saja didalam program dengan syarat setiap

/* harus ditutup dengan */

Komentar yang hanya terdiri dari 1 baris dapat menggunakan tanda //. Semua

karakter disebelah kanan tanda // diberlakukan sebagai komentar.

Page 16: Diktat Alpro 1

Contoh Program:

1. Menampilkan tulisan “Hello World” ke monitor

a. #include <stdio.h>

void main()

{

printf("Hello World");

}

b. #include <stdio.h>

void main()

{

int x=5;

printf(“Nilai x=%i“,x);

}

2. Menampilkan tulisan “Hello World” ke monitor dan menampilkan umur dengan

“meminjam” perintah cout dari C++ (harus dengan kompiler untuk bahasa C++)

a. #include <iostream.h>

void main()

{

cout<<"Hello World“<<endl;

}

b. #include <iostream.h>

void main()

{

int umur=18;

cout<<“Hallo“<<endl;

cout<<“Umur Saya=”<<umur;

cout<<“Tahun”<<endl;

}

Page 17: Diktat Alpro 1
Page 18: Diktat Alpro 1

BAB II

Tipe, Nama dan Nilai

1. Tujuan Instruksional Umum :

Setelah menyelesaikan matakuliah ini diharapkan mahasiswa mendapatkan

gambaran tentang tipe, nama dan nilai suatu variabel dan konstanta didalam

algoritma

2. Tujuan Instruksional Khusus :

Mahasiswa memahami dan mengerti penggunaan tipe, nama dan nilai pada

suatu variabel dan konstanta

1. Pengertian Dasar

Pada umumnya program komputer akan memanipulasi data (variabel, konstanta)

di dalam memori. Variabel adalah sebuah pengenal didalam program yang berguna

untuk menyimpan nilai dari tipe data tertentu. Adapun nilai yang disimpan dalam

variabel bersifat dinamis, artinya nilai tersebut dapat diubah selama program

dijalankan. Sedangkan konstanta adalah sebuah tetapan yang tidak dapat diubah

nilainya ketika program berjalan.

Setiap nilai data akan memiliki sebuah tipe. Type data adalah pola representasi

data di dalam memori komputer atau dengan kata lain sesuatu yang digunakan untuk

merepresentasikan jenis dari suatu nilai tertentu.

Suatu pemrograman sering digunakan untuk melakukan operasi-operasi tertentu

seperti perhitungan matematika, manipulasi string, manipulasi bit ataupun operasi

lainnya. Untuk melakukan hal tersebut harus diketahui operator yang sesuai dengan

bahasa pemrograman tertentu. Operator sendiri adalah tanda yang digunakan untuk

menyelesaikan suatu operasi tertentu.

Ekspresi merupakan kombinasi antara variabel, konstanta dan operator untuk

memproses (transformasi) suatu nilai menghasilkan keluaran yang diinginkan melalui

suatu perhitungan (komputasi).

Page 19: Diktat Alpro 1

2. Tipe data

Sebuah program yang akan diolah harus memiliki tipe data yang jelas. Berikut

adalah bagan yang menggambarkan jenis-jenis tipe data.

A. Tipe data dasar

Tipe data dasar adalah...., tipe data dasar memiliki 5 jenis data yaitu :

a. Tipe Logika/lojik

a. Nama Tipe adalah boolean (diambil dari nama matematikawan Inggris George

Boole).

b. Ranah Nilai : true (benar) dan false (salah).

c. Konstanta : true dan false.

d. Operasi : operasi logika atau operasi boolean, dengan hasilnya nilai dalam

ranah nilai boolean (true atau false). Operasi yang umum digunakan adalah :

not, and, or dan xor.

A B Not A A and B A or B A xor B

true true false true True false

true false false false True true

false true true false true true

false false true false false false

Type

dasar

bentukan

logika

bil. bulat

bil. riil

karakter

string

Nama baru tipe dasar

Terstruktur

Page 20: Diktat Alpro 1

e. Dalam bahasa C:

false = 0 dan true = 1

not = ! ; and = &&; or = ||

Contoh :

Algoritma Tipe_Logika

{demo penggunaan tipe data logika dan operatornya}

Deklarasi

Algoritma:

write(5=5)

write(5=2)

write(not true)

write(not false)

write(true and false)

write(true or false)

#include <iostream.h>

void main() {

cout<<"nilai 5==5 -> "<<(5==5)<<endl;

cout<<"nilai 5==2 -> "<<(5==2)<<endl;

cout<<"nilai !1 -> "<<(! 1)<<endl;

cout<<"nilai !0 -> "<<(! 0)<<endl;

cout<<"nilai 1&&0 -> "<<(1 && 0)<<endl;

cout<<"nilai 1||0 -> "<<(1 || 0)<<endl;

}

Page 21: Diktat Alpro 1

b. Tipe bil bulat

Bilangan yang tidak mengandung pecahan desimal.

a. Nama Tipe adalah integer.

b. Ranah Nilai : secara teoritis tipe bilangan bulat mempunyai ranah nilai yang

tidak terbatas asalkan nilainya tidak mengandung titik desimal.

Dalam compilator Turbo Pascal, tipe integer direpresentasikan:

Tipe Rentang nilai Format

byte 0 .. 255 Unsigned 8 bit shortint -128 .. 127 signed 8 bit word 0 .. 65535 Unsigned 16 bit integer -32768 .. 32767 signed 16 bit longint -2147483648 .. 2147483647 signed 32 bit

i. Konstanta : harus ditulis tanpa mengandung titik desimal.

Contoh : 75 -13 0 8869

ii. Operasi :

Operasi Matematika

Hasil operasi matematika berupa nilai bertipe bilangan bulat juga.

Operator yang berlaku : +, -, *, div dan mod

Operasi Perbandingan

Hasil operasi berupa nilai boolean, operator yang berlaku : < , <= , > , >=

, = , <>

c. Secara teoritis range untuk integer tidak terbatas, tergantung prakteknya.

Biasanya tergantung kompilator. Dalam bahasa C range untuk integer dalam

kompilator Turbo C++ 4,5 tipe data 16 bit adalah sbb:

Page 22: Diktat Alpro 1
Page 23: Diktat Alpro 1

c. Bilangan Real (floating-point)

a. Nama Tipe adalah real.

b. Ranah Nilai : secara teoritis tipe bilangan bulat mempunyai ranah nilai yang

tidak terbatas. Rentang nilai adalah dari minus tak hingga sampai plus tak

hingga. Tipe real direpresentasikan :

Tipe Rentang nilai Format Real 2.9 x 10-39 .. 1.7 x 1038 6 byte Single 1.5 x 10-45 .. 3.4 x 1038 4 byte Double 5.0 x 10-324 .. 1.7 x 10308 8 byte Extended 3.4 x 10-4932 .. 1.1 x 104932 10 byte

1. Konstanta : harus ditulis dengan tanda desimal.

Contoh : 0.78 -14.233476300+E8 0.0 99.0

2. Operasi :

i. Operasi Matematika

Hasil operasi

matematika berupa nilai bertipe bilangan riil juga. Operator yang

berlaku : +, -, *, dan /.

ii. Operasi Perbandingan

Hasil operasi berupa nilai boolean, operator yang berlaku : < , <= , > , >=

, ?.

c. Secara teoritis range untuk bilangan rill pada suatu program tidak terbatas,

pada prakteknya biasanya tergantung dari kompilatornya. Range real dalam

kompilator Turbo C++ 4,5 tipe data 16 bit adalah sbb:

Page 24: Diktat Alpro 1

d. Karakter

Nama tipe: char

Range: seluruh simbol dalam tabel ASCII yaitu huruf (‘a’..’z’,’A’..’Z’), angka

(‘0’..’9’), tanda baca (‘,’,’.’,’!’… dll), karakter khusus (‘$’,’#’,’%’…dll).Dalam

bahasa C representasi tipe data bilangan bulat dan karakter adalah sama, integer 65

sama dengan ‘A’ di dalam ASCII. Sehingga tipe data karakter dapat dideklarasikan

sebagai tipe data integer.

Tipe karakter dalam kompilator Turbo C++ 4,5 adalah char

e. String

a. Nama Tipe adalah string.

b. Ranah Nilai : deretan karakter yang telah didefinisikan pada ranah karakter.

c. Konstanta : harus diapit oleh tanda petik tunggal.

Contoh : ‘Palembang’, ‘ ABC1234’, ‘m’, ‘1234’.

String kosong (null) adalah string yang panjangnya nol, dan dilambangkan

dengan ‘’.

d. Operasi :

a. Operasi Penyambungan

Operasi ‘+’ merupakan operasi penyambungan

Contoh :

‘Teknik ’ + ‘Informatika’ = ‘Teknik Informatika’

b. Operasi Perbandingan

Hasil operasi berupa nilai boolean, operator yang berlaku : < , <= , > , >=

, =, ?.

e. Tipe string dalam kompilator Turbo C++ 4,5 adalah char[n], dimana n adalah

jumlah karakter dari string tersebut.

Page 25: Diktat Alpro 1

B. Tipe Bentukan

1. Tipe dasar yang diberi Nama Tipe Baru

Pemberian nama baru terhadap tipe dasar yang sudah dikenal. Kata kunci type.

Ranah nilai, cara menulis tetapan, dan operasi–operasi terhadap tipe baru tidak

berubah, tetap sama dengan tipe dasar aslinya.

Notasi :

type nama_tipe_baru : tipe_dasar

Contoh : type BilanganBulat : integer

2. Rekaman Disusun oleh satu atau lebih field. Tiap field menyimpan data dari tipe dasar

tertentu atau dari tipe bentukan lain yang sudah didefinisikan sebelumnya.

Nama rekaman ditentukan oleh pemrogram. Rekaman disebut juga tipe

terstruktur.

Notasi :

type nama_rekaman record < data1 : tipedata1, data2 : tipedata2, data3 : tipedata3, ..... >

Contoh : type Titik : record < x : real,

y : real > P : Titik

jika P dideklarasikan sebagai Titik maka mengacu field pada P adalah P.x

dan P.y.

Page 26: Diktat Alpro 1

C. Nama

Setiap sesuatu (objek) memiliki nama, untuk mudah membedakan, mengacu,

mengidentifikasi-nya. Dalam algoritma nama dipakai sebagai pendefinisian

“sesuatu” dan pemrogram mengacu “sesuatu” itu melalui namanya. Sehingga nama

haruslah unik, tidak boleh ada dua nama yang sama.

Aturan pemberian Nama (pengenal/identifier):

1. Nama harus dimulai dari alfabet, tidak boleh dimulai dari angka, spasi atau

karakter khusus;

2. Karakter penyusun nama hanya boleh huruf alfabet, angka dan “_”;

3. Nama tidak boleh mengandung operator aritmetika, operator relasi, tanda baca,

dan karakter khusus lainnya;

4. Karakter-karakter di dalam nama tidak boleh dipisahkan dengan spasi.

Contoh penamaan yang salah:

Nama Mhs

2lima

A 1

Apa?

Rata-rata

Contoh penamaan yang benar:

Nama_Mhs atau NamaMhs

Lima2

A1

Apa

Ratarata atau Rata_rata

Page 27: Diktat Alpro 1

‘Sesuatu’ dalam pemrograman dapat berupa :

1. Peubah (variable)

Tempat penyimpan data/informasi di memori yang isinya dapat diubah.

Contoh :

Deklarasi :

X, nilai, jumlah : real

K : integer

C : char

2. Konstanta (constant)

Tempat penyimpan di memori yang isinya tetap selama pelaksanaan program

dan tidak dapat diubah. Notasinya adalah const

Contoh :

Deklarasi : const phi = 3.14 const Nmaks = 100

3. Tipe bentukan

Nama tipe bentukan diberikan oleh pemrogram.

Contoh :

Deklarasi : type Titik : record < x : real, y : real> type jam : record < hh : integer, mm : integer, dd : integer > P : Titik J1, j2 : jam

4. Nama Fungsi

Contoh :

Deklarasi : function Maksimum(a,b : integer) ? integer {mengembalikan nilai terbesar antara a dan b}

5. Nama Prosedur

Page 28: Diktat Alpro 1

Contoh :

Deklarasi : procedure Tukar(input/output a,b : integer) {menukarkan nilai a dan b}

D. Operator

Operator adalah tanda yang digunakan untuk menyelesaikan suatu operasi tertentu.

Operator yang akan dibahas akan dikelompokkan menjadi 4 bagian besar yaitu :

Page 29: Diktat Alpro 1

a. Operator assigment

Operator assigment adalah suatu operator penugasan yang digunakan

untuk memasukan nilai kedalam suatu variabel. Dalam bahasa C operator

assigment dilambangkan dengan tanda dengan (=)

Contoh : x = 2;

Artinya sintak tersebut memasukan nilai 2 kedalam variabel x.

Berbeda dengan kebanyakan bahasa pemrograman lainnya, bahasa C juga

menawarkan cara penulisan sintak untuk mempersingkat proses assigment.

Sebagai contoh : statement j= j+4 bisa ditulis j+=4. Berikut bentuk

penyingkatan yang terdapat dalam bahasa C:

Contoh Statement Bentuk Penyingkatan J =J + 4 J += 4 J =J - 4 J -= 4 J =J * 4 J *= 4 J =J / 4 J /= 4 J =J % 4 J %= 4 J =J << 4 J <<= 4 J =J >> 4 J >>= 4 J =J & 4 J &= 4 J =J ^ 4 J ^= 4 J =J | 4 J |= 4

b. Operator unary

Operator unary adalah operator yang digunakan untuk melakukan operasi-

operasi matematika yang hanya melibat satu buah operand. Dalam bahasa C,

yang termasuk kedalam operand unary adalah seperti tampak pada tabel

dibawah ini :

Operator Jenis Operator Contoh - Membuat nilai negatif - 10 + Membuat nilai positif + 10 ++ Increment ( menambahkan

nilai 1) x ++

-- Decrement ( mengurangi nilai 1 )

x --

c. Operator binary

Operator binary adalah operator yang digunakan untuk melakukan operasi yang

melibatkan 2 buah operand. Operator binary dibagi menjadi 4 jenis yaitu :

Page 30: Diktat Alpro 1

1. Operator Aritmetika

Operator yang berfungsi untuk melakukan operasi-operasi aritmatika.

Berikut adalah operator-operator aritmetika

Opr C Arti Hasil

* * Kali Integer

+ + Tambah integer

- - Kurang integer

/ / Bagi real

div div(..,..) Bagi bulat integer

mod % Sisa pembagian bulat integer

abs abs() Nilai mutlak Integer>0

^ pow(..,2) Pangkat integer

Catatan : : Bahasa C tidak punya operator tersebut maka gantinya

berupa fungsi

2. Operator Logika

Adalah operator yang digunakan didalam operator yang hanya dapat

menghasilkan nilai benar (true) dan salah (false). Nilai ini disebut boolean.

Bahasa C menyediakan tipe data khusus yaitu menggunakan nilai selain 0

untuk benar dan nilai 0 untuk salah.

(catatan : sudah dibahas di data dasar logika)

3. Operator relasional

Operator relasional adalah operator yang digunakan untuk menentukan

relasi atau hubungan dari 2 buah nilai atau operand.

Berikut ini operator yang termasuk kedalam operator relational didalam

bahasa C

Opr C Arti Hasil

< < Lebih kecil Boolean

≤ <= Lebih kecil atau sama dengan boolean

> > Lebih besar boolean

≥ >= Lebih besar atau sama dengan boolean

= == Sama dengan boolean

≠ != Tidak sama dengan boolean

Page 31: Diktat Alpro 1

4. operator bitwise

Operator bitwise digunakan untuk menyelesaikan operasi-operasi bilangan

dalam bentuk biner yang dilakukan bit demi bit. Operasi ini vital digunakan

apabila yang dibuat adalah program yang berinteraksi dengan perangkat

keras.

d. Operator ternary

Operator yang melibatkan 3 buah operand. Adapun bentuk umum dari

penggunaan operator ternary adalah :

Ekspresi 1 ? ekspresi 2; ekspresi 3;

Apabila ekspresi1 bernilai benar maka program akan mengerjakan ekspreasi 2

sedangkan jika salah program akan mengerjakan ekspresi3

E. Nilai

Nilai adalah besaran dari tipe data yang sudah didefinisikan. Nilai dapat berupa isi

yang disimpan oleh nama peubah atau nama konstanta, nilai dari hasil perhitungan

atau nilai yang dikirim oleh fungsi.

1. Pengisian Nilai ke dalam Nama Peubah

a. Pengisian Nilai secara langsung (menggunakan operator assignment)

memasukan sebuah nilai ke dalam nama peubah langsung di dalam teks

algoritma dengan syarat bertipe sama.

Notasi algoritmanya

Nilai yang diberikan ke dalam peubah dapat berupa :

peubah konstanta

peubah1 peubah2

peubah ekspresi

Page 32: Diktat Alpro 1

b. Pembacaan Nilai dari Piranti Masukan

Nilai untuk nama peubah dapat diisi dari piranti masukan, misal dari papan

kunci, operasi ini dinamakan pembacaan data, notasinya read

read (nama1, nama2,..., namaN)

2. Ekspresi

a. Ekspresi Aritmatik

ekspresi yang baik operand-nya bertipe numerik dan hasilnya juga bertipe

numerik.

Contoh :

c a + b

dimana a, b dan c bertipe numerik (integer atau real)

b. Ekspresi Relasional

ekspresi dengan operator <, =, >, =, =, dan ?, not, and, or dan xor. Hasilnya

bertipe boolean (true atau false).

Misalkan : Ketemu bernilai false, ada bernilai true, x bernilai 8

Contoh ekspresi :

not ada { hasil : false }

ada or ketemu { hasil : true }

X < 5 { hasil : false}

c. Ekspresi String

ekspresi dengan operator ‘+’ (operator penyambungan).

3. Menuliskan Nilai ke Piranti Keluaran

Nilai yang disimpan dalam memori dapat ditampilkan ke piranti keluaran,

notasinya write

write (nama1, nama2,..., namaN)

write (tetapan)

write (ekspresi, nama, tetapan)

Page 33: Diktat Alpro 1

Translasi Notasi Algoritma ke Dalam Notasi Bahasa C

Kelompok Algoritmik C

1.penugasan

2.pembacaan

3.penulisan

read

write

=

scanf printf

Konversi Tipe Data

Dalam bahasa C, setiap tipe data memiliki konversi yang akan dipakai pada saat operasi

masukan dan keluaran. Karakter konversi tipe data dapat dilihat pada tabel berikut :

karakter Jenis Masukan / keluaran

d

i

o

u

x

X

f

e

E

c

s

Signed decimal integer

Signed decimal integer

Unsigned octal integer

Unsigned decimal integer

Unsigned hexadecimal integer dengan a,b,c,d,e,f

Unsigned hexadecimal integer dengan A,B,C,D,E,F

Signed floating-point number dalam bentuk [-]dddd.dddd

Signed floating-point number dalam bentuk [-]d.dddd atau

e[+|-] ddd

Seperti e tetapi dengan huruf E

Karakter

Sejumlah karakter

Catatan :

Signed dan Unsigned adalah modifier untuk menggabung tipe data

Page 34: Diktat Alpro 1

Contoh :

Algoritma_konversi_tipe_data_numerik {Melihat hasil keluaran dari konversi tipe numerik} Deklarasi : i1, i2,l1 : integer f1 : real Deskripsi :

i1=123 i2=-4567 l1=1234567890 f1=123.456

write(" 1 2 ") write("12345678901234567890 ") write (i1,i2) write (i1,i2) write (i1) write ("i2) writeln; write (" 1 2") write ("12345678901234567890") write (i1,i2); write (l1); write (l1); write (f1); write (f1); write (f1); write (f1,f1); write (i1,i1,i1);

Page 35: Diktat Alpro 1

Algoritma_tipe_data_karakter {Melihat hasil keluaran dari konversi tipe numerik} Deklarasi : Const kim1 = “algoritma dan pemrograman” Const kim2 = “algo” Const kim3 = “pemrograman” Const huruf =”c”

Deskripsi : write(" 1 2 3 ") write ("123456789012345678901234567890") write (kim1) write (kim1) write (kim1) write (huruf) write (huruf) writeln write (" 1 2 3 ") write ("123456789012345678901234567890") write (kim2,kim3) write ("web","internet"); write (kim2,kim3); printf("web","internet"); }

Page 36: Diktat Alpro 1
Page 37: Diktat Alpro 1
Page 38: Diktat Alpro 1
Page 39: Diktat Alpro 1

BAB III

Algoritma Beruntun

1. Tujuan Instruksional Umum

Setelah menyelesaikan matakuliah ini diharapkan mahasiswa mendapatkan

gambaran tentang algoritma beruntun

2. Tujuan Instruksional Khusus

Mahasiswa memahami dan mengerti penggunaan tipe bentukan dan

algoritma beruntun dan mampu menyelesaikan masalah yang berkaitan dengan

algoritma beruntun

Materi :

1. Pendahuluan

Algoritma merupakan runtunan satu atau lebih instruksi yang berarti bahwa :

a. Tiap instruksi dikerjakan satu per satu.

b. Tiap instruksi dilaksanakan tepat sekali, tidak ada instruksi yang diulang.

c. Urutan instruksi yang dilaksanakan pemroses sama dengan urutan instruksi

sebagai tertulis di dalam teks algoritma.

d. Akhir dari instruksi terakhir merupakan akhir algoritma.

2. Pengaruh Urutan Instruksi

Urutan instruksi dalam algoritma adalah penting. Urutan instruksi menunjukan

urutan logik penyelesaian masalah.

Urutan instruksi yang berbeda mungkin tidak ada pengaruh terhadap solusi

persoalan, tetapi mungkin juga menghasilkan keluaran yang berbeda, tergantung

pada masalahnya.

Page 40: Diktat Alpro 1

Contoh kasus 1 : urutan instruksi tidak berpengaruh terhadap solusi persoalan.

Dibaca dua buah nilai integer dari keyboard, A dan B. Hitung jumlah keduanya dan

hasil kali keduanya, lalu cetak hasil jumlah dan kali ke piranti keluaran.

Algoritma Runtunan_1

{di baca dua buah bilangan integer kemudian hitung

penjumlahan dan perkalian dua buah bilangan tersebut, dan

tampilkan hasilnya ke layar}

Deklarasi :

A, B, C, D : integer

Deskripsi :

read (A, B) {1}

C A + B {2}

D A * B {3}

write (C, D) {4}

Konversi ke bahasa program C

#include <stdio.h>

Hasil agoritma di atas sama jika urutan no. 2 dan 3 diubah (ditukarkan) sebagai

berikut :

Algoritma Runtunan_2

{di baca dua buah bilangan integer kemudian hitung

penjumlahan dan perkalian dua buah bilangan tersebut, dan

tampilkan hasilnya ke layar}

Deklarasi :

A, B, C, D : integer

Deskripsi :

read (A, B)

D A * B

C A + B

write (C, D)

Page 41: Diktat Alpro 1

Tetapi jika algoritma di atas urutan no. 1, 2 dan 3 diubah (ditukarkan ) maka

menghasil keluaran yang berbeda (tidak sama) seperti sebagai berikut :

Algoritma Runtunan_3 {di baca dua buah bilangan integer kemudian hitung penjumlahan dan perkalian dua buah bilangan tersebut, dan tampilkan hasilnya ke layar} Deklarasi :

A, B, C, D : integer

Deskripsi :

read (A, B)

C A+B

D C * B write (C, D)

3. Contoh-contoh runtunan

Contoh 1 :

Tulis algoritma untuk menghitung komisi yang diterima salesman berdasarkan nilai

penjualan yang dicapainya. Salesman akan mendapat komisi sebesar 5 % dari hasil

penjualannya. Masukannya nama salesman dan hasil penjualan kemudian tampilkan

nama salesman dan besarnya komisi yang diterimanya.

Algoritma Komisi_Salesmen

{di baca nama dan hasil penjualan salesman, kemudian hitung

besarnya komisi sebesar 5 % dari hasil penjualan dan tampilkan

nama dan komisinya ke layar}

Deklarasi :

nama : string

NilaiPenjualan : real

Komisi : real

Deskripsi :

read (nama, NilaiPenjualan)

Komisi 0.05 * NilaiPenjualan

write (nama, Komisi)

Page 42: Diktat Alpro 1

Contoh 2 :

Tulis algoritma untuk membaca dua buah titik P1 dan P2, tentukan titik tengah dari

kedua titik tersebut.

Algoritma Titik_tengah

{di baca titik P1, P2, tentukan titik tengahnya dan tampilkan

titik tengahnya ke layar}

Deklarasi :

Type titik = record

< x : real,

y : real >

P1, P2, P3 : titik

Deskripsi :

read (P1.x, P1.y)

read (P2.x, P2.y)

P3.x (P1.x + P2.x)/2

P3.y (P1.y + P2.y)/2

write (P3.x, P3.y)

Page 43: Diktat Alpro 1

Contoh 3 :

Tulis algoritma untuk membaca waktu tempuh seorang pelari dalam jam-menit-

detik, kemudian konversikan waktu tersebut dalam detik.

Algoritma Konversi_jam_ke_detik

{di baca jam-menit-detik (jj:mm:dd), konversikan ke dalam

detik dan tampilkan ke layar}

Deklarasi :

Type jam = record

< jj, mm, dd : integer >

j : jam

tot_detik : integer

Deskripsi :

read (j.jj, j.mm, j.dd)

Tot_detik j.jj*3600 + j.mm * 60 + j.dd

write (Tot_detik)

Contoh 4:

Tulis algoritma untuk membaca waktu dalam detik, kemudian konversikan waktu

tersebut dalam jam-menit-detik.

Algoritma Konversi_det_ke_jam

{di baca total detik kemudian konversikan kedalam jam-menit-

detik (jj:mm:dd), dan tampilkan ke layar}

Deklarasi :

Type jam = record

< jj, mm, dd : integer >

j : jam

tot_detik, sisa : integer

Page 44: Diktat Alpro 1

Deskripsi :

read (Tot_detik)

j.jj tot_detik div 3600

sisa tot_detik mod 3600

j.mm sisa div 60

j.dd sisa mod 60

write (j.jj, j.mm, j.dd)

Contoh :

Algoritma_Luas_PP

Deklarasi :

x,y,z : integer

Deskripsi :

write (“masukan panjang dan lebar”) read (x) read (y) z x * y write (“tampilkan luas”) write (z)

Program : output :

Page 45: Diktat Alpro 1

Contoh :

Algoritma_Segitiga_Siku2

Deklarasi :

a,b,c : integer

Deskripsi :

write (“masukan panjang siku a”) read (a) write (“masukan panjang siku b”) read (b) c sqrt (sqr(a) + sqr(b)) write (“tampilkan nilai c”) write (c)

Soal Latihan :

1. Tentukan total uang yang harus dibayar, jika seorang pembeli akan membeli x kg

telur ayam yang berharga Rp 14.000/kg, y kotak keju yang berharga Rp

15.000/kotak dan z kaleng susu yang berharga Rp 35.000/kaleng.

(Gunakan konstanta untuk harga telur, keju dan susu)

2. Tentukan jumlah lembaran hasil pertukaran uang senilai x rupiah. ( a lembar 50rb, b

lembar 20rb, c lembar 10rb, d lembar 5rb, e lembar 1rb, f keping 500, g keping 200,

h keping 100, dan i keping 50 rupiah).

(Niai uang harus merupakan kelipatan 50 rupiah)

Page 46: Diktat Alpro 1

3. Sebuah proyek dikerjakan selama x hari. Tentukan berapa tahun, berapa bulan dan

berapa hari proyek tersebut dikerjakan bila 1 tahun = 365 hari, 1 bulan = 30 hari

4. dibaca 2 buah tanggal (dd;mm;yy) tuliskan algoritma dan program untuk menghitung

selisih waktu kedua tanggal tersebut

5. Buatlah algoritma dan program wartel jika diketahui lama pulsa = 5 detik dan biaya

perpulsa adalah 150.

6. Tentukan besar tahanan dengan ketentukan : masukannya adalah dua buah harga

tahanan dari keyboard (R1, R2 : real), menghitung besar tahanan total jika kedua

tahanan tersebut dihubungkan secara

seri = (R1+R2) dan

menampilkan hasil perhitungan R_total_seri dan R_total_paralel ke layar monitor.

7. Definisikan sebuah tipe TITIK yang terdiri atas komponen koordinat X(integer) dan

Y(integer). Tulislah sebuah program yang :

• mendefinisikan suatu “Konstanta” titik pusat O(0,0)

• menerima masukan koordinat titik Q

• menghitung jarak OQ

• menentukan Q1, yaitu pencerminan Q terhadap sumbu X

• menentukan Q2, yaitu pencerminan Q terhadap titik O (0,0)

• menampilkan hasil perhitungan ke layar monitor dengan format tampilan :

Program Jarak Titik Q

Koordinat titik Q : 3 4 Q(3,4)

Jarak OQ : xxx.xx satuan

Pencerminan terhadap sumbu x :Q1(x,x)

Pencerminan terhadap O(0,0) :Q2(x,x)

Rumus jarak : d =

2/11/11

RRparalel

+=

Page 47: Diktat Alpro 1
Page 48: Diktat Alpro 1
Page 49: Diktat Alpro 1

BAB IV

Algoritma Kondisi

1. Tujuan Instruksional Umum :

Setelah menyelesaikan matakuliah ini diharapkan mahasiswa mendapatkan

gambaran tentang algoritma kondisi

2. Tujuan Instruksional Khusus :

Mahasiswa memahami dan mengerti penggunaan algoritma kondisi dan mampu

menyelesaikan masalah yang berkaitan dengan algoritma kondisi

1. Pendahuluan

Struktur runtunan hanya terdapat pada program sederhana. Pada umumnya,

masalah yang akan diselesaikan memiliki beberapa alternatif pelaksanaan aksi.

Suatu aksi hanya dilakukan bila persyaratan atau kondisi tertentu dipenuhi

2. Satu Kasus

Notasi algoritmik :

if kondisi then

Aksi

endif

Aksi (dapat berupa satu atau lebih aksi) hanya akan dilaksanakan bila kondisi

bernilai benar (true), jika kondisi bernilai salah, tidak ada aksi apapun yang

dikerjakan.

Page 50: Diktat Alpro 1

3. Contoh-contoh analisis dengan satu kasus

Contoh 1:

Dibaca sebuah bilangan bulat dari piranti masukan. Diminta mencetak pesan

‘bilangan genap’ jika bilangan tersebut adalah genap.

Algoritma Bilangan_Genap

{mencetak pesan ‘bilangan genap’ jika sebuah bilangan bulat yang

dibaca merupakan bilangan genap}

Deklarasi :

Bil : integer

Deskripsi :

read (bil)

if bil mod 2 = 0 then

write (‘bilangan genap’)

endif

Contoh 2:

Dibaca sebuah karakter dari piranti masukan. Diminta mencetak pesan ‘huruf

hidup’ jika karakter tersebut merupakan huruf vokal.

Page 51: Diktat Alpro 1

Algoritma Huruf_vokal

{mencetak pesan ‘Huruf hidup’ jika sebuah karakter yang dibaca

merupakan huruf vokal}

Deklarasi :

c : character

Deskripsi :

read (c)

if (c=’a’)or(c=’i’)or(c=’u’)or(c=’e’)or(c=’o’)then

write (‘Huruf hidup’)

endif

4. Dua Kasus

Notasi algoritmik :

if kondisi then

Aksi1

else

Aksi2

endif

Aksi1 (dapat berupa satu atau lebih aksi) akan dilaksanakan bila kondisi bernilai

benar (true), jika kondisi bernilai salah maka aksi2 yang akan dilaksanakan.

5. Contoh-contoh analisis dengan dua kasus

Contoh 1:

Dibaca sebuah bilangan bulat dari piranti masukan. Diminta mencetak pesan

‘bilangan genap’ jika bilangan tersebut adalah genap atau bilangan ganjil jika

bilangan tersebut adalah ganjil.

Page 52: Diktat Alpro 1

Algoritma Genap_Ganjil

{mencetak pesan ‘bilangan genap’ jika sebuah bilangan bulat yang

dibaca merupakan bilangan genap atau ‘bilangan ganjil’ jika bilangan

tsb ganjil}

Deklarasi :

Bil : integer

Deskripsi :

read (bil)

if bil mod 2 = 0 then

write (‘bilangan genap’)

else

write (‘bilangan ganjil’)

endif

Contoh 2:

Tulis algoritma yang membaca dua buah bilangan bulat dari piranti masukan, lalu

tentukan bilangan terbesar dari kedua bilangan tersebut.

Algoritma Maksimum

{menentukan bilangan terbesar dari dua buah bilangan bulat}

Deklarasi :

a,b : integer

Deskripsi :

read (a,b)

if a > b then

write (‘Bilangan terbesar : ’,a)

else

write (‘Bilangan terbesar : ’,b)

endif

Page 53: Diktat Alpro 1

6. Tiga Kasus atau Lebih

Notasi algoritmik :

if kondisi1 then

Aksi1

else if kondisi2 then

Aksi2

else If kondisi3 then

Aksi3

endif

endif

endif

7. Contoh-contoh analisis dengan dua kasus

Contoh 1:

Tulis algoritma yang membaca sebuah bilangan bulat, lalu menentukan apakah

bilangan tersebut positif, negatif atau nol.

Page 54: Diktat Alpro 1

Algoritma Jenis_bilangan

{mencetak pesan ‘bilangan positif’ jika bilangan bulat yang dibaca > 0,

atau ‘bilangan negatif’ jika < 0 atau ‘nol’ jika = 0}

Deklarasi :

Bil : integer

Deskripsi :

read (bil)

if bil > 0 then

write (‘bilangan positif’)

else

if bil < 0 then

write (‘bilangan negatif’)

else

if bil = 0 then

write (‘nol’)

endif

endif

endif

8. Struktur Case

Notasi algoritmik :

Case (nama) of

Kondisi1 : Aksi1

kondisi2 : Aksi2

kondisi3 : Aksi3

. .

kondisiN : AksiN

[otherwise aksix]

endcase

Page 55: Diktat Alpro 1

9. Contoh-contoh analisis dengan dua kasus

Contoh 1:

Tulis algoritma yang membaca sebuah titik, lalu menentukan kuadran titik

tersebut pada bidang kartesian.

Algoritma Kuadran_titik

{menentukan kuadran sebuah titik di bidang kartesian}

Deklarasi :

Type titik : record <x: real, y : real>

P : titik

Deskripsi :

read (p.x,p.y)

case (p.x, p.y)

(p.x > 0)and (p.y > 0) : write (‘kuadran 1’)

(p.x < 0)and (p.y > 0) : write (‘kuadran 2’)

(p.x < 0)and (p.y < 0) : write (‘kuadran 3’)

(p.x > 0)and (p.y < 0) : write (‘kuadran 4’)

otherwise write (‘tidak terletak di kuadran manapun’)

endcase

10. Translasi Notasi Algoritma ke Dalam Notasi Bahasa C

Kelompok Algoritmik C

1.IF-THEN

If konsisi then

Aksi

endif

If (kondisi)

Aksi;

Bila aksi lebih dari satu buah :

If (kondisi)

{

Aksi1;

Aksi2;

Page 56: Diktat Alpro 1

...

aksiN;

}

2.IF-THEN-

ELSE

If konsisi then

Aksi1

Else

Aksi2

endif

If (kondisi)

Aksi1;

Else

Aksi2;

3.CASE

Case (nama) of

<kondisi1> : aksi1

<kondisi2> : aksi2

...

<kondisiN> : aksiN

[otherwise aksix]

endcase

Cara 1 : utk nilai-nilai bertipe

integer, char atau boolean

Switch (ekspresion)

{

Case constant1 : statement1;

Case constant2 : statement2;

....

Case constant_n : statement_n;

default: statement_x;

}

Cara 2 : utk kondisi berupa

ekspresi yang operatornya bukan

‘=’ atau bila konstanta ruas

kanan tidak bertipe integer, char

atau boolean

If (kondisi1)

Aksi1

Else

If (kondisi2)

Aksi2

else

...

Page 57: Diktat Alpro 1

11. Contoh Algoritma dan Program : 1. Algoritma_Penentuan_nama_ibukota Deklarasi : ibk : string Deskripsi : write (“ketik nama ibukota di jawa :”) read (ibk) write (“ibukota dari ”) if ibk = “serang” then write (“banten”) else if ibk = “jakarta” then write (“DKI Jakarta”) else if ibk = “bandung” then write (“Jawa Barat”) else if ibk = “semarang” then write (“jawa Tengah”) else if ibk = “Yokyakarta” then write (“DI Yogyakarta”) else if ibk = “Surabaya” then write (“Jawa Timur”) else write (“salah memasukan nama kota”) endif endif endif endif endif endif

Page 58: Diktat Alpro 1

Output :

2. Algoritma_Penentuan_nama_ibukota Deklarasi : bulan : integer Deskripsi : read (bulan) write (“nama bulan adalah”) case (bulan) of 1 : write (“januari”) 2 : write (“pebruari”) 3 : write (“maret”) 4 : write (“april”) 5 : write (“mei”) 6 : write (“juni”) 7 : write (“juli”) 8 : write (“agustus”) 9 : write (“september”) 10 : write (“oktober”) 11 : write (“nopember”) otherwise : write (“desember”)

Output :

Page 59: Diktat Alpro 1

3. Algoritma_Kelulusan

\

Output :

Soal Latihan :

1. Buatlah algoritma dan program untuk menentukan luas suatu bangunan dengan pilihan :

a. bangun segitiga b. bangun bola c. bangun trapesium d. bangun tabung

2. Buatlah algoritma dan program untuk menghitung akar kuadrat dengan

menggunakan rumus abc : a

DbX22,1±−

= , D = b2 – 4ac

Jika D > 0, maka a

DbX21+−

= , a

DbX22−−

=

Jika D = 0 maka abXX

221−

==

Jika D < 0 maka “akar imajiner”

3. Buatlah algoritma dan program untuk menentukan grade nilai dengan ketentuan A : nilai > 85 B : 70 < nilai <= 85 C : 60 < nilai <= 70 D : 45 < nilai <= 60 E : nilai < 45

Page 60: Diktat Alpro 1

4. Buatlah algoritma dan program untuk menentukan gaji karyawan dengan ketentuan :

Gaji = gaji pokok + tunjangan + transport – pajak Tunjangan = tunjangan istri + tunjangan anak Pajak = 5% * (gaji pokok + tunjangan + transport) Ctt : jumlah hari kerja maksimal 26 hari

gol Gajipokok Tunjangan istri Tunjangan anak Transport/hari 1 1500000 15000 2 1250000 12500 3 1000000

10%*gaji pokok

5%*gaji pokok (per-anak. Maks jumlah anak 3) 10000

Tentukan juga keluaran dibawah ini, berdasarkan data diatas Karyawan Gol Status Jumlah anak Hari kerja gaji

A 1 duda 3 24 B 1 beristri 0 26 C 2 beristri 2 20 D 3 Belum

nikah - 26

5. Tentukan total yang harus dibayar oleh seseorang jika harus membeli x kaleng susu dengan ketentuan :

Merk\Ukuran Besar Sedang Kecil

Bendera 80000 50000 30000 Dancow 75000 46000 29000 Indomilk 81000 54000 35000

Page 61: Diktat Alpro 1

BAB V

Algoritma Pengulangan

1. Tujuan Instruksional Umum :

Setelah menyelesaikan matakuliah ini diharapkan mahasiswa mendapatkan

gambaran tentang algoritma pengulangan

2. Tujuan Instruksional Khusus

Mahasiswa memahami dan mengerti penggunaan algoritma pengulangan dan

mampu menyelesaikan masalah yang berkaitan dengan algoritma pengulangan

1. Pendahuluan

Salah satu kelebihan komputer dibandingkan dengan manusia adalah

kemampuannya untuk melaksananakan suatu instruksi berulang kali tanpa mengenal

lelah dan bosan. Di dalam algoritma pengulangan atau kalang (repetition atau loop)

dapat dilakukan sejumlah kali atau sampai kondisi berhenti pengulangan tercapai.

2. Struktur Pengulangan

Secara umum terdiri atas dua bagian :

a. kondisi pengulangan, yaitu ekspresi boolean yang harus dipenuhi untuk

melaksanakan pengulangan yang dinyatakan secara eksplisit oleh pemrogram

atau implisit oleh komputer.

b. badan pengulangan, yaitu bagian algoritma yang diulang.

Struktur pengulangan biasanya (opsional) disertai bagian :

a. inisialisasi, yaitu aksi yang dilakukan sebelum pengulangan dilakukan pertama

kali.

b. Terminasi, yaitu aksi yang dilakukan setelah pengulangan selesai dilaksanakan.

Page 62: Diktat Alpro 1

Struktur umum :

<inisialisasi>

awal pengulangan

badan pengulangan

akhir pengulangan

<terminasi>

Tiga macam notasi struktur pengulangan :

a. struktur FOR

b. struktur WHILE

c. struktur REPEAT

3. Struktur FOR

Digunakan untuk menghasilkan pengulangan sejumlah kali yang dispesifikasikan.

Jumlah pengulangan diketahui atau dapat ditentukan sebelum eksekusi.

Notasi algoritmik :

a. FOR menaik

For pencacah nilai_awal to nilai_akhir do

Aksi

endfor

Keterangan :

1. pencacah harus bertipe data integer atau karakter.

2. aksi adalah satu atau lebih instruksi yang diulang.

3. nilai-awal harus <= nilai-akhir, jika tidak maka badan pengulangan tidak

dimasuki.

4. nilai pencacah diinisialisasi dengan nilai_awal kemudian secara otomatis

bertambah satu sampai nilai_akhir tercapai.

5. banyak pengulangan yaitu (nilai_akhir – nilai_awal +1).

Page 63: Diktat Alpro 1

Contoh 1:

Diinginkan mencetak angka 1, 2, 3, .., 8 di layar dengan satu angka setiap baris.

Algoritma Cetak_Angka

{mencetak 1, 2, .., 8 ke piranti keluaran}

Deklarasi :

K: integer

Deskripsi :

for k 1 to 8 do

write (k)

endfor

Program : output :

Page 64: Diktat Alpro 1

Contoh 2

Menghitung rata-rata N buah bilangan yang dibaca dari piranti masukan.

Algoritma Hitung_rata

{mengitung rata-rata N buah bilangan bulat yang dibaca dari piranti masukan}

Deklarasi :

N: integer {jumlah data, > 0}

x: integer {bilangan bulat yg dibaca dari papan kunci}

k: integer {pencacah banyaknya pengulangan}

total : integer {pencacat jumlah nilai}

rerata: real {rata-rata nilai}

Deskripsi :

read (N)

total 0

for k 1 to N do

read (x)

total total + x

endfor

rerata total/N

write (rerata)

Program : output :

Page 65: Diktat Alpro 1

a. FOR menurun

For pencacah nilai_awal downto nilai_akhir do

Aksi

endfor

Keterangan :

1. pencacah harus bertipe data integer atau karakter.

2. aksi adalah satu atau lebih instruksi yang diulang.

3. nilai-awal harus >= nilai-akhir, jika tidak maka badan pengulangan tidak

dimasuki.

4. nilai pencacah diinisialisasi dengan nilai_awal kemudian secara otomatis

berkurang satu sampai nilai_akhir tercapai.

5. banyak pengulangan yaitu (nilai_ awal – nilai_ akhir +1).

Contoh 1:

Algoritma peluncuran roket dengan hitung mundur mulai 100, 99, .., 0.

Algoritma Peluncuran_Roket

{hitung mundur peluncuran roket}

Deklarasi :

K: integer

Deskripsi :

for k 100 downto 0 do

write (k)

endfor

write (‘GO’) {roket meluncur}

Program Output :

Page 66: Diktat Alpro 1

4. Struktur WHILE

Notasi algoritmik :

while kondisi do

Aksi

Endwhile

Keterangan :

Aksi ( atau runtunan aksi) akan dilaksanakan berulang kali selama kondisi

bernilai true, jika false maka badan pengulangan tidak akan dilaksanakan yang

berarti pengulangan selesai.

Contoh 1:

Diinginkan mencetak angka 1, 2, 3, .., 8 di layar dengan satu angka setiap baris.

Algoritma Cetak_Angka

{mencetak 1, 2, .., 8 ke piranti keluaran}

Deklarasi :

K: integer

Deskripsi :

K 1 {inisialisasi}

while k <= 8 do

write (k)

k k + 1

endwhile

Program : output :

Contoh 2

Page 67: Diktat Alpro 1

Menghitung rata-rata N buah bilangan yang dibaca dari piranti masukan.

Algoritma Hitung_rata

{mengitung rata-rata N buah bilangan bulat yang dibaca dari piranti

masukan}

Deklarasi :

N: integer {jumlah data, > 0}

x: integer {bilangan bulat yg dibaca dari papan kunci}

k: integer {pencacah banyaknya pengulangan}

jumlah: integer {pencacat jumlah nilai}

rerata: integer {rata-rata nilai}

Deskripsi :

read (N)

Jumlah 0

k 1

while k <= N do

read (x)

jumlah jumlah + x

k k + 1

endwhile

rerata jumlah/N

write (rerata)

Program output

Page 68: Diktat Alpro 1

5. Struktur REPEAT

Notasi algoritmik :

repeat

Aksi

Until kondisi

Keterangan :

Aksi ( atau runtunan aksi) akan dilaksanakan berulang kali sampai kondisi

bernilai true, jika kondisi bernilai false maka pengulangan masih terus

dilakukan.

Contoh 1:

Diinginkan mencetak angka 1, 2, 3, .., 8 di layar dengan satu angka setiap baris.

Algoritma Cetak_Angka

{mencetak 1, 2, .., 8 ke piranti keluaran}

Deklarasi :

K: integer

Deskripsi :

K 1 {inisialisasi}

repeat

write (k)

k k + 1

until k > 8

Page 69: Diktat Alpro 1

Contoh 2

Menghitung rata-rata N buah bilangan yang dibaca dari piranti masukan.

Algoritma Hitung_rata

{mengitung rata-rata N buah bilangan bulat yang dibaca dari piranti masukan}

Deklarasi :

N: integer {jumlah data, > 0}

x: integer {bilangan bulat yg dibaca dari papan kunci}

k: integer {pencacah banyaknya pengulangan}

jumlah: integer {pencacat jumlah nilai}

rerata: integer {rata-rata nilai}

Deskripsi :

read (N)

Jumlah 0

repeat

read (x)

jumlah jumlah + x

k k + 1

until k > N

rerata jumlah/N

write (rerata)

6. Struktur WHILE atau REPEAT

Untuk menyelesaikan persoalan-persoalan tertentu dapat digunakan struktur while

ataupun repeat, tetapi pada kebanyakan kasus, pemilihan struktur while atau

repeat bergantung pada natural dari persoalan. Ini artinya ada persoalan yang

hanya benar bila menggunakan struktur while tetapi bisa salah bila menggunakan

repeat atau sebaliknya.

Perbedaan mendasar dari struktur while dengan repeat yaitu :

Page 70: Diktat Alpro 1

Pada REPEAT, kondisi pengulangan diperiksa pada akhir pengulangan. Jadi, instruksi

di dalam badan pengulangan dilaksanakan dulu, barulah kondisi diperiksa, yang

berarti pengulangan dilaksanakan minimal satu kali.

Pada WHILE, kondisi pengulangan diperiksa di awal pengulangan. Jadi instruksi di

dlam badan pengulangan hanya dapat dilaksanakan bilai kondisi bernilai true,

yang berarti badan pengulangan mungkin tidak akan pernah dilaksanakan.

Page 71: Diktat Alpro 1

7. Translasi Notasi Algoritma ke Dalam Notasi Bahasa C

Kelompok Algoritmik C

1.FOR

FOR menaik

for pencacah a to b do

Aksi

endfor

FOR menurun

for pencacah a downto

b do

Aksi

endfor

FOR menaik

For (cacah = a; cacah <= b; cacah ++)

Aksi;

Bila aksi lebih dari satu buah :

For (cacah = a; cacah <= b; cacah ++)

{

Aksi1;

Aksi2;

Aksi3;

Aksi4;

}

FOR menurun

For (cacah = a; cacah >= b; cacah--)

Aksi;

Bila aksi lebih dari satu buah :

For (cacah = a; cacah >= b; cacah--)

{

Aksi1;

Aksi2;

Aksi3;

Aksi4;

}

Page 72: Diktat Alpro 1

2.WHILE

while konsisi do

Aksi1

Endwhile

while (kondisi)

Aksi;

bila aksi lebih dari satu maka runtunan

aksi diawali { dan diakhiri };

while (kondisi)

{

Aksi1;

Aksi2;

Aksi3;

}

3.REPEAT

repeat

aksi

until kondisi

/*sampai kondisi tidak

terpenuhi */

do

aksi;

while (kondisi)

bila aksi lebih dari satu maka runtunan

aksi diawali { dan diakhiri };

do

{

Aksi1;

Aksi2;

Aksi3;

}

while (kondisi)

/*selama kondisi terpenuhi */

Page 73: Diktat Alpro 1

Soal – soal :

1. Buatlah algoritma dan program untuk menampilkan output seperti dibawah ini :

2. Buatlah algoritma dan program untuk menampilkan output seperti dibawah ini

3. Buatlah algoritma dan program untuk menampilkan output seperti dibawah ini.

Gunakan perintah while untuk menghitung ulang luas persegi panjang

4. Buatlah algoritma dan program tidak menampilkan * jika angka adalah kelipatan 3

dengan tampilan output seperti dibawah ini

5. Buatlah algoritma dan program deret bilangan ganjil dengan tampilan output seperti

dibawah ini.

6. Buatlah algoritma dan program untuk menampilkan output seperti dibawah ini :

Page 74: Diktat Alpro 1

7. Buatlah algoritma dan program untuk menampilkan output seperti dibawah ini

8. Buatlah algoritma dan program untuk menampilkan output seperti dibawah ini :

9. Beberapa mahasiswa memiliki data nim, nama, ipk dan predikat. Predikat ditentukan dari ipk dengan ketentuan Ipk < 2.00 : kurang 2.00 <= ipk < 2.50 : cukup 2.50 <= ipk < 3.00 : baik 3.00 <= ipk < 3.50 : memuaskan Ipk >= 3.50 : cum laude

Page 75: Diktat Alpro 1

BAB VI

Prosedur

1. Tujuan Instruksional Umum :

Setelah menyelesaikan matakuliah ini diharapkan mahasiswa mendapatkan

gambaran tentang procedure

2. Tujuan Instruksional Khusus

Mahasiswa memahami dan mengerti penggunaan procedure dalam sebuah

algoritma dan program

Materi :

1. Pendahuluan

Dalam memprogram yang besar perlu memecah program menjadi beberapa

subprogram yang lebih kecil. Tiap subprogram kadangkala cukup independen dari

program utama sehingga programnya dapat dirancang tanpa mempertimbangkan

konteks tempat ia digunakan. Tiap subprogram disebut modul. Dalam bahasa

pemrograman modul disebut rutin, prosedur atau fungsi.

2. Pendefinisian Prosedur

Prosedur adalah modul program yang mengerjakan tugas/aktifitas yang spesifik dan

menghasilkan suatu efek besar. Efek besar tersebut diketahui dengan

membandingkan keadaan awal dengan keadaan akhir pada pelaksanaaan sebuah

prosedur.

Struktur prosedur sama dengan struktur algoritma yang sudah dikenal, yaitu ada

bagian judul (header) yang terdiri dari nama prosedur, deklarasi dan badan

prosedur.

Page 76: Diktat Alpro 1

Notasi algoritma :

Procedure Namaprosedur

{spesifikasi prosedur berisi penjelasan tentang apa

yang dilakukan oleh prosedur ini}

{IS : keadaan awal sebelum prosedur dilaksanakan }

{FS : keadaan akhir sesudah prosedur dilaksanakan}

Deklarasi :

{semua nama yang dipakai dalam prosedur dan hanya

berlaku lokal di dalam prosedur}

Deskripsi :

{badan prosedur, berisi kumpulan instruksi}

Contoh :

Menghitung rata-rata N buah bilangan yang dibaca dari piranti masukan.

Page 77: Diktat Alpro 1

procedure Hitung_rata

{mengitung rata-rata N buah bilangan bulat yang dibaca dari

piranti masukan}

{IS: sembarang}

{FS: nilai rata-rata seluruh bilangan bulat dicetak di piranti

keluaran}

Deklarasi :

N: integer {jumlah data, > 0}

x: integer {bilangan bulat yg dibaca dari papan kunci}

k: integer {pencacah banyaknya pengulangan}

jumlah : integer {pencacat jumlah nilai}

rerata : real

{rata-rata nilai}

Deskripsi :

read (N)

Jumlah 0

for k 1 to N do

read (x)

jumlah jumlah + x

endfor

rerata jumlah/N

write (rerata)

3. Pemanggilan Prosedur

Prosedur bukan program yang berdiri sendiri, jadi tidak dapat dieksekusi secara

langsung. Ini berarti instruksi-instruksi di dalam prosedur baru dapat dilaksanakan

bila prosedur tersebut diakses dengan cara memanggil namanya dari program

pemanggil (program utama atau modul lain).

Contoh program utama untuk memanggil prosedur Hitung_Rata

Page 78: Diktat Alpro 1

Algoritma Rata_Rata

{program utama untuk menghitungrata-rata N buah bilangan bulat}

Deklarasi :

Procedure Hitung_Rata

{mengitung rata-rata N buah bilangan bulat yang dibaca dari

piranti masukan}

Deskripsi :

write (‘menghitung rata-rata N buah bilangan bulat’)

Hitung_Rata

write (‘sukses’)

4. Nama Global atau Lokal

Nama-nama yang dideklarasikan di dalam prosedur hanya dikenal di dalam badan

prosedur ang bersangkutan dan ini dikatakan bersifat ‘lokal’.

Nama-nama yang dideklarasikan di dalam program utama dikatakan bersifat

‘global’, yang dapat digunakan dibagian manapun di dalam program baik di

program utama maupun di dalam prosedur.

Pengunaan nama akan dideklarasikan global atau lokal bergantung kepada

penggunaan nama tersebut. Bila suatu nama digunakan diseluruh bagian program,

maka nama tersebut harus dideklarasikan global.

Bila nama tersebut hanya digunakan di dalam prosedur saja maka sebaiknya di

deklarasikan sebagai peubah lokal (walaupun global masih tetap benar).

Usahakan menggunakan nama-nama global sesedikit mungkin.

Penggunaan nama lokal akan memberikan keuntungan sebab nama lokal membuat

program lebih elegan, dan dapat meminimumkan usaha pencarian kesalahan yang

disebabkan oleh nama tersebut.

Page 79: Diktat Alpro 1

5. Parameter

Penggunaan parameter merupakan mekanisme pertukaran informasi antara

prosedur (atau fungsi) dan titik di mana ia dipanggil.

Tiap item data ditransfer antara parameter aktual dan parameter formal yang

bersesuaian.

Parameter aktual adalah parameter yang disertakan pada waktu pemanggilan.

Parameter formal adalah parameter yang dideklarasikan di dalam header

prosedur itu sendiri.

Tiga jenis parameter formal yang disertakan di dalam prosedur :

a. Parameter masukan (input parameter)

Parameter yang nilainya berlaku sebagai masukan untuk prosedur yang

disebut parameter nilai (value parameter/parameter by value).

Nilai parameter aktual diisikan (assign) ke dalam parameter formal yang

bersesuaian.

Nilai yang dinyatakan oleh parameter masukan tidak dapat dikirim dalam

arah sebaliknya.

Perubahan nilai parameter di dalam badan prosedur tidak mengubah nilai

parameter aktual.

Nama parameter aktual boleh berbeda dengan nama parameter formal

yang bersesuaian.

Page 80: Diktat Alpro 1

Contoh :

Prosedure satu dengan parameter masukan :

Procedure Satu (input x,y : integer)

{contoh prosedur dengan parameter formal berjenis parameter masukan}

{IS : nilai x dan y sudah terdefinisi}

{FS : nilai x dan y masing-masing dinaikan satu lalu dicetak}

Deklarasi :

{ tidak ada }

Deskripsi :

x x + 1

y y + 1

write (x,y)

Program Utama

Algoritma PQR

{program utama untuk memanggil prosedur satu}

Deklarasi :

a,b : integer

Procedure Satu (input x,y : integer)

{contoh prosedur dengan parameter formal berjenis parameter

masukan}

Deskripsi :

Satu (4, 10) {pemanggilan Satu yang pertama kali}

read (a,b)

Satu (a,b) {pemanggilan Satu yang kedua kali}

Satu (a+5,17) {pemanggilan Satu yang ketiga kali}

Pada pemanggilan pertama, menghasilkan x = 4 dan y = 11

Pada pemanggilan kedua, nilai x dan y tergantung pada pemasukan data nilai a

dan b, misalkan a =10 dan b =21, maka x =11 dan y=22. dst

Page 81: Diktat Alpro 1

b. Parameter keluaran (output parameter)

Parameter yang menampung keluaran yang dihasilkan oleh prosedur, yang

disebut dengan parameter acuan (reference parameter/parameter by

reference).

Bila prosedur yang mengandung parameter keluaran dipanggil, nama

parameter aktual di dalam program pemanggil menggantikan nama

parameter formal yang bersesuaidi dalam prosedur.

Bila di dalam prosedur parameter aktual diisi suatu nilai, nilai ini akan

tetap berada di dalam parameter aktual meskipun prosedur selesai

dilaksanakan.

Contoh :

Prosedure dua dengan parameter keluaran :

Procedure Dua (input x : integer, output y : real)

{contoh prosedur dengan parameter formal berjenis parameter keluaran}

{IS : nilai x sudah terdefinisi}

{FS : y berisi nilai x ditambah satu dan dikalikan tiga}

Deklarasi :

{ tidak ada }

Deskripsi :

x x + 1

y x + 1

Program Utama

Algoritma XYZ

{program utama untuk memanggil prosedur dua}

Deklarasi :

A,b : integer

Page 82: Diktat Alpro 1

Procedure Dua (input x : integer, output y : real)

{contoh prosedur dengan parameter formal berjenis parameter

keluaran}

Deskripsi :

dua(4, b) {pemanggilan dua yang pertama kali}

write (b)

read (a)

dua(a, b) {pemanggilan dua yang pertama kali}

write (b)

dua(a+5,b) {pemanggilan dua yang ketiga kali}

write (b)

c. Parameter masukan/keluaran (input/output parameter)

Parameter yang berfungsi sebagai masukan sekaligus keluaran bagi

prosedur tersebut, yang disebut dengan parameter acuan (reference

parameter/parameter by reference).

Digunakan pada aplikasi yang informasinya dikirim dalam kedua arah.

Bila parameter aktual diubah nilainya di dalam badan prosedur,

makasesudah pemanggilan prosedur nilai parameter dititik pemanggilan

juga berubah.

Contoh :

Prosedure tiga dengan parameter masukan/keluaran :

Procedure tiga (input/output x,y : integer)

{contoh prosedur dengan parameter formal berjenis parameter

masukan/keluaran}

{IS : nilai x dan y sudah terdefinisi}

{FS : nilai x dan y bertambah masing-masing empat dan dicetak}

Page 83: Diktat Alpro 1

Deklarasi :

{ tidak ada }

Deskripsi :

x x + 4

y y + 4

write (‘nilai x dan y diakhir prosedur adalah ‘)

write (‘x = ‘,x)

write (‘y = ‘,y)

Program Utama

Algoritma ABC

{program utama untuk memanggil prosedur tiga}

Deklarasi :

a,b : integer

Procedure tiga (input/output x,y : integer)

{contoh prosedur dengan parameter formal berjenis parameter

masukan/keluaran}

Deskripsi :

A 15

B 10

write (‘nilai a dan b sebelum pemanggilan prosedur ‘)

write (‘a = ‘,a)

write (‘b = ‘,b)

tiga (a, b) {pemanggilan tiga pertama kali }

Page 84: Diktat Alpro 1

write (‘nilai a dan b sesudah pemanggilan prosedur ‘)

write (‘a = ‘,a)

write (‘b = ‘,b)

Jika program di atas dieksekusi maka menghasilkan :

nilai a dan b sebelum pemanggilan prosedur

a = 15

B = 10

nilai x dan y di akhir prosedur adalah

x = 19

y = 14

nilai a dan b sesudah pemanggilan prosedur

a = 19

B = 14

Contoh :

Page 85: Diktat Alpro 1

6. Translasi Notasi Algoritma ke Dalam Notasi Bahasa C

Kelompok Algoritmik C

Procedure

Procedure Namaprosedur

(jenis parameter nama

parameter : tipe data )

{spesifikasi prosedur berisi

penjelasan tentang apa

yang dilakukan oleh

prosedur ini}

{IS : keadaan awal sebelum

prosedur dilaksanakan }

{FS : keadaan akhir

sesudah prosedur

dilaksanakan}

Deklarasi :

{semua nama yang dipakai

dalam prosedur dan hanya

berlaku lokal di dalam

prosedur}

Deskripsi :

{badan prosedur, berisi

kumpulan instruksi}

void namaprocedure ( tipe_data

nama_ parameter )

{

Deklarasi parameter lokal;

Instruksi 1;

Instruksi 2;

......;

}

Page 86: Diktat Alpro 1

Contoh1 : }

#include <stdio.h> void segitiga(float *l); void bujursangkar(float *l); void main () { float l; segitiga (&l); printf("luas segitiga = %.3f ", l); printf("\n\n"); bujursangkar(&l); printf("luas bujursangkar = %.3f ", l); } void segitiga (float *l) { float a,t; printf("a = " ); scanf ("%f",&a); printf("t = " ); scanf ("%f",&t); *l=0.5*a*t; } void bujursangkar (float *l) { float p,lb; printf("p = " ); scanf ("%f",&p); printf("lb = " ); scanf ("%f",&lb); *l=p*lb; }

Page 87: Diktat Alpro 1

#include <stdio.h> #include <conio.h> #include <string.h> #include <ctype.h> void mhs (int n); void nilai(); typedef struct { char nama[15]; char nim[10]; float ipk; } mahasiswa; void main() { int n; printf("jumlah mahasiswa: "); scanf ("%d",&n); printf("\n\n"); mhs (n); } void mhs (int n) { int i; mahasiswa m; for (i=1; i<=n; i++) { printf ("Mahasiswa ke %d \n",i); printf ("Nama :"); scanf("%s", &m.nama); printf ("NIM :"); scanf("%s", &m.nim); nilai (); } } void nilai() { int j,y; int sks, nilai; char x[3]; float sum, jsks; mahasiswa m; printf("Jumlah MataKuliah :"); scanf ("%d",&y); sum = 0; jsks = 0; for (j=1; j<=y; j++) { printf(" sks : "); scanf("%d", &sks); printf(" grade : "); scanf("%s", &x); if (strcmp(x,"a")== 0) { nilai= 4; } else if (strcmp(x,"b")== 0) { nilai= 3; } else if (strcmp(x,"c")== 0) { nilai= 2; } else if (strcmp(x,"d")== 0) { nilai= 1; } else { nilai = 0; } sum = sum + nilai*sks; jsks = jsks + sks; } m.ipk = sum/jsks; printf (" ipk = %.2f", m.ipk); printf("\n\n"); }

Page 88: Diktat Alpro 1

BAB VII

Fungsi

1. Tujuan Instruksional Umum :

Setelah menyelesaikan matakuliah ini diharapkan mahasiswa mendapatkan

gambaran tentang fungsi

2. Tujuan Instruksional Khusus :

Mahasiswa memahami dan mengerti penggunaan fungsi dalam sebuah algoritma

dan program

Uraian Materi :

1. Pendahuluan

Fungsi juga merupakan modul program yang mempunyai tujuan spesifik. Fungsi

hampir sama dengan prosedur, tetapi pada beberapa kasus kita lebih tepat

menggunakan fungsi ketimbang prosedur demikian juga sebaliknya.

2. Pendefinisian Fungsi

Fungsi adalah modul program yang memberikan / mengembalikan (return) sebuah

nilai dari tipe data tertentu.

Fungsi diakses dengan memanggil namanya sama seperti prosedur.

Parameter pada fungsi selalu merupakan parameter masukan.

Struktur fungsi sama dengan struktur algoritma yang sudah kita kenal, yaitu ada

bagian judul (header) yang terdiri dari nama fungsi, deklarasi dan badan fungsi.

Page 89: Diktat Alpro 1

Notasi algoritma :

function Namafungsi (input daftar parameter formal) -> tipe hasil

{spesifikasi fungsi berisi penjelasan tentang apa yang dilakukan dan yang

dikembalikan oleh fungsi}

Deklarasi :

{semua nama yang dipakai dalam fungsi dan hanya

berlaku lokal di dalam fungsi}

Deskripsi :

{badan fungsi, berisi kumpulan instruksi untuk menghasilkan nilai

yang akan dikembalikan oleh fungsi}

return hasil {mengembalikan nilai yang dihasilkan fungsi}

Contoh :

Buat fungsi untuk menghasilkan nilai

F (x) = 2 x2 + 5x - 8

function F(input x : real)-> real

{mengembalikan nilai F(x)=2x2 + 5x – 8}

Deklarasi :

{tidak ada }

Deskripsi :

return (2*x*x + 5*x - 8)

3. Pemanggilan Prosedur

Fungsi diakses dengan cara memanggil namanya dari program pemanggil, diiluti

dengan daftar parameter aktual (bila ada). Fungsi menghasilkan nilai oleh karena

itu nilai tersebut dapat ditampung dalam sebuah peubah yang bertipe sama

dengan tipe fungsi.

Page 90: Diktat Alpro 1

Contoh program utama untuk memanggil fungsi F untuk nilai x dimulai dengan 10

sampai 15 dengan selang 0.2.

Algoritma Panggil_Fungsi

{program utama untuk memanggil funsi F dan menampilkan nilaix dan F(x) di

dalam selang (10,15) dengan ?=0.2}

Deklarasi :

X : real

function F(input x : real)-> real

{mengembalikan nilai F(x)=2x2 + 5x – 8}

Deskripsi :

write (‘-------------’)

write (‘ x f(x) ’)

write (‘-------------’)

x 10.0

while x = 15.0 do

write (‘ x,’ ’,f(x))

x x + 0.2

endwhile

write (‘-------------’)

4. Prosedur atau Fungsi

Fungsi digunakan apabila modul program mengembalikan sebuah nilai.

Prosedur digunakan bila modul menghasilkan efek netto dari (satu atau lebih)

sekumpulan aksi.

Fungsi dapat dikonversi sebagai prosedur dengan cara menyatakan nilai yang

dikembalikan (return value) oleh fungsi tersebut sebagai parameter keluaran pada

prosedur. Demikian juga, jika prosedur yang mempunyai satu buah parameter

keluaran dapat ditulis sebagai fungsi dengan cara menyatakan parameter keluaran

sebagai nilai yang dikembalikan oleh fungsi.

Page 91: Diktat Alpro 1

Contoh mengubah fungsi menjadi prosedur :

Buat fungsi untuk menentukan bilangan terbesar dari dua buah bilangan.

function Maks (input a,b : integer)-> integer

{mengembalikan harga terbesar dari a dan b }

Deklarasi :

{ tidak ada }

Deskripsi :

if a > b then

return a

else

return b

endif

Program pemanggil fungsi

Algoritma Maksimum

{program utama untuk memanggil fungsi Maks}

Deklarasi :

a,b : integer

function Maks (input a,b : integer)-> integer

{mengembalikan harga terbesar dari a dan b }

Deskripsi :

read (a,b)

write (Maks(a,b)

Penulisan fungsi diatas dapat ditulis sebagai prosedur seperti di bawah ini :

Page 92: Diktat Alpro 1

Procedure Max (input a,b:integer, output maks:integer)

{menentukan nilai terbesar dari a dan b dan disimpan dalam maks}

{IS : a dan b sudah terdefinisi}

{FS : maks berisi nilai terbesar dari a atau b}

Deklarasi :

{ tidak ada }

Deskripsi :

if a > b then

maks a

else

maks b

endif

Program pemanggil fungsi

Algoritma Maksimum

{program utama untuk memanggil fungsi Maks}

Deklarasi :

a,b : integer

Procedure Max (input a,b:integer, output maks:integer)

{menentukan nilai terbesar dari a dan b dan disimpan dalam maks}

Deskripsi :

read (a,b)

Max(a, b, m)

Page 93: Diktat Alpro 1

write (m)

5. Translasi Notasi Algoritma ke Dalam Notasi Bahasa C

Kelompok Algoritmik C

Fungsi

function Namafungsi (input

daftar_parameter_formal :

tipe_data) -> tipe hasil

{spesifikasi fungsi berisi

penjelasan tentang apa

yang dilakukan dan yang

dikembalikan oleh fungsi}

Deklarasi :

{semua nama yang dipakai

dalam fungsi dan hanya

berlaku lokal di dalam

fungsi}

Deskripsi :

{badan fungsi, berisi

kumpulan instruksi untuk

menghasilkan nilai yang

akan dikembalikan oleh

fungsi}

return hasil

{mengembalikan nilai yang

dihasilkan fungsi}

Tipe_data_hasil nama_fungsi

(tipe_data nama_parameter_formal)

{

Deklarasi parameter lokal;

Instruksi 1;

Instruksi 2;

......;

}

Page 94: Diktat Alpro 1
Page 95: Diktat Alpro 1

Contoh

1. Buatlah algoritma dan program untuk menghitung nilai S= n

xn

ii∑

=

Χ−1

)(,

Gunakan prosedur dan fungsi 2.

Page 96: Diktat Alpro 1

BAB VIII Pointer

1. Tujuan Instruksional Umum :

Setelah menyelesaikan matakuliah ini diharapkan mahasiswa mendapatkan

gambaran pointer didalam algoritma

2. Tujuan Instruksional Khusus :

Mahasiswa memahami dan mengerti penggunaan pointer dalam sebuah algoritma

dan program

Uraian Materi :

1. Definisi

Menurut definisinya pointer adalah sebuah variabel yang berisikan alamat

memori (bukan nilai) atau dengan kata lain dapat dikatakan bahwa pointer adalah

suatu variabel penunjuk ke alamat memori tertentu.

Secara umum, pointer dapat digambarkan sebagai berikut :

Dari gambar diatas dapat dilihat bahwa pointer P sedang menunjuk ke

alamat ke-1, ini berarti bahwa nilai dari pointer P adalah alamat ke -1. hal ini

berbeda dengan variabel yang biasa hanya dapat menyimpan nilai dengan tipe

data tertentu.

Alamat ke-1

Alamat ke-2

Alamat ke-3

Alamat ke-4

.......

.......

Alamat ke-N

P

Page 97: Diktat Alpro 1

Memori komputer dapat dikatakan sebagai kumpulan atau larik dari alamat

memori yang masing-masing bersifat unik. Hal yang perlu sekali untuk

diperhatikan adalah bahwa pointer juga merupakan isi memori. Pointer merupakan

“alamat khusus” yang telah dipesan oleh kompilator dan linker untuk mencatat

atau menunjuk alamat memori dari variabel lain. Oleh sebab itu, pointer juga

sering dinamakan dengan alamat memori, walaupun sebenarnya lebih tepat bila

disebut dengan pencatat atau penunjuk alamat memori.

2. Deklarasi

Apabila pointer menunjuk ke alamat dari variabel a yang bertipe char (berukuran

1 byte), maka situasi ini dapat direfresentasikan melalui gambar berikut :

p a

……

| | | | | | | | |

| | | | | |

| | | …..

Adapun cara mendeklarasikan pointer didalam bahasa C adalah dengan

menambah tanda asterik (*) didepan nama pointer yang akan dibuat. Berikut ini

bentuk umumnya :

tipe_data *nama_pointer;

tipe_data disini menunjukan bahwa pointer tersebut akan menunjuk ke suatu

alamat dimana alamat tersebut ditempati oleh nilai yang memiliki tipe data

tertentu.

Content of *

Address of &

Page 98: Diktat Alpro 1

Contoh :

# include <stdio.h>

void main( )

{

int a,b;

int *p; /* 1 */

a = 10; b = 20; /* 2 */

p = &a; /* 3 */

printf ("%x ", p); // yang ditampilkan alamat dari a

printf ("%i \n", *p); // yang ditampilkan isi dari a

*p = b + 15; /* 4 */

printf (" %d \n",a );

}

Catatan :

a. p adalah deklarasi awal bahwa p adalah variabel pointer. Isi dari p=0 b. a = 10, b = 20 dan p = 0 c. a = 10, b = 20 dan p = alamat dari a (tergantung a diletakan dimana) d. a = 35, b = 20 dan p = alamat dari a (tergantung a diletakan dimana)

Contoh 2 :

Page 99: Diktat Alpro 1
Page 100: Diktat Alpro 1

3. Mendeklarasi pointer tanpa tipe data

4. Pointer dan Array

5. Pointer dan Fungsi

Page 101: Diktat Alpro 1

BAB IX

Larik

1. Tujuan Instruksional Umum :

Setelah menyelesaikan matakuliah ini diharapkan mahasiswa mendapatkan

gambaran tentang tipe, nama dan nilai suatu variabel dan konstanta didalam

algoritma

2. Tujuan Instruksional Khusus :

Mahasiswa memahami dan mengerti penggunaan tipe, nama dan nilai pada

suatu variabel dan konstanta