ASSALAMUALLAIKUM WR WB KEISTIQOMAHAN , KEIKHLASAN , BERTAQWA

Monday, 3 June 2013



TUGAS MANDIRI

“Program Data Penduduk”
Mata Kuliah: Pemrograman Terstruktur




NAMA MAHASISWA    : MUHAMAD FAJRI MAULANA M I
NIM                                   : 113410027
KODE KELAS                 : 112-IS002-M4
DOSEN                             : HOTMA PANGARIBUAN, S.KOM.,M.S.I.


STMIK PUTERA BATAM
TAHUN 2012

KATA PENGANTAR

Syukur Alhamdulillah dengan memohon Ridho dari Allah, Tuhan Yang Maha Esa dan atas berkat Rahmat-Nya, melalui proses yang cukup panjang  Tugas Mandiri ini dapat terselesaikan.
Tugas Mandiri ini merupakan makalah refrensi bagi mahasiswa, agar dapat membuat tugas akhir ( skripsi ) di semester akhir nanti dengan lancar tanpa adanya kesulitan dan timbulnya sebuah permasalahan yang sangat berarti, sehingga mempersulit mahasiswa untuk melanjutkan ke jenjang berikutnya.
Tugas Mandiri ini bersumber dari disertai penulis dan pengalaman proses pembelajaran serta reservasi  mahasiswa dalam proses pembelajaran yang telah berlangsung. Untuk itu pada kesempatan yang berbahagia ini, perkenankan penulis mengucapkan terima kasih yang tulus kepada:
  1. Bapak dan ibu dosen yang telah membimbing proses pembelajaran, sehingga penulis menemukan banyak hal baru yang belum pernah penulis jumpai sebelumnya.
  2. Rekan-rekan mahasiswa yang telah membantu dalam proses penulisan Tugas Mandiri ini.
Diharapkan, semoga makalah ini dapat bermanfaat bagi penulis dan para pembaca. Sekali menyelam 2-3 pulau terlampaui, oleh karena itu penulis akan menerima dengan terbuka terhadap kritik dan saran yang membangun dari Bapak/Ibu dosen penilai serta rekan pembaca.
Salam hangat.

                                                                                                Batam, 2012
                                                                                    Muhamad Fajri Maulana MI




DAFTAR ISI

BAB I . PENGANTAR  ALGORITMA    …………………………        4
1.1. PENGANTAR ALGORITMA      ………………….……..         4
  A. SEJARAH ALGORITMA             …………………………        4
A. ALGORITMA & PEMROGRAMAN        …………………        5
B. PEMROGRAMAN   …………………………………………        6
C. PRODUK YANG DI HASILKAN  …………………………        6
D. ATURAN PENULISAN       …………………………………        7
E. PENYAJIAN ALGORITMA           …………………………        9
F. STRUKTUR DAN LAPORAN DASAR PASCAL           …………        11
G. UNIT- UNIT PASCAL         …………………………………        12
H. PEMROGRAMAN PROSEDURAL          …………………        12
I. TIPE – TIPE ALGORITMA BERDASARKAN FORMAT PENULISAN …         13
J. FLOW CHART          ……………………………………………    15
1.2. DASAR – DASAR ALGORITMA            …………………………        18
A. DASAR – DASAR ALGORITMA  …………………………        18
B. STRUKTUR PENULISAN  …………………………………        18
C. KOMENTAR …………………………………………………        19
D. IDENTIFIER …………………………………………………        19
E. STRUKTUR DASAR           …………………………………………        19
F. VARIEBLE    …………………………………………………        20
G. EKSPRESI     …………………………………………………        20
H. PENUGASAN           ……………………………………………    20
I. INPUT & OUTPUT    …………………………………………        20
BAB II . PEMROGRAMAN           …………………………………        22
  A. PROGRAM  …………………………………………………        22
  B. PENGUJIAN DENGAN F9           …………………………………        26
C. INPUD DATA        …………………………………………        27
D. HASIL PROGRAM ( OUTPUT ) …………………………        28
  E. ALGORITMA      …………………………………………        29
  F. FLOWCHART      …………………………………………        33









































BAB I
PENGANTAR ALGORITMA

1.1. Pengantar Algoritma
            A. Sejarah Algoritma

            Ditinjau dari asal-usul katanya, kata Algoritma sendiri mempunyai sejarah yang aneh. Orang hanya menemukan kata algorism yang berarti proses menghitung dengan angka arab. Anda dikatakan algorist jika Anda menghitung menggunakan angka arab. Para ahli bahasa berusaha menemukan asal kata ini namun hasilnya kurang memuaskan. Akhirnya para ahli sejarah matematika
menemukan asal kata tersebut yang berasal dari nama penulis buku arab yang terkenal yaitu Abu Ja’far Muhammad Ibnu Musa Al-Khuwarizmi. Al-Khuwarizmi dibaca orang barat menjadi Algorism. Al- Khuwarizmi menulis buku yang berjudul Kitab Al Jabar Wal-Muqabala yang artinya “Buku pemugaran dan pengurangan” (The book ofrestoration and reduction). Dari judul buku itu kita juga memperoleh akar kata “Aljabar” (Algebra). Perubahan kata dari algorism menjadi algorithm muncul karena kata algorism sering dikelirukan dengan arithmetic, sehingga akhiran –sm berubah menjadi –thm. Karena perhitungan dengan angka Arab sudah menjadi hal yang biasa, maka lambat laun kata
algorithmberangsur-angsur dipakai sebagai metode perhitungan (komputasi) secara umum, sehingga kehilangan makna kata aslinya. Dalam bahasa Indonesia,kata algorithm diserap menjadi algoritma.

Algoritma berasal dari bahasa arab “algorism” yang berarti menghitung.Perubahan kata dari Algorism menjadi Algorithm muncul karena kata Algorism sering dikelirukan dengan Arithmetic, sehingga akhiran –sm berubah menjadi –thm. kata Algorithm berangsur-angsur dipakai sebagai metode perhitungan (komputasi) secara umum, sehingga kehilangan makna kata aslinya. Dalam Bahasa Indonesia, kata Algorithm diserap menjadi Algoritma.

A. Algoritma dan Pemrograman
A. Pengertian algoritma

Algoritma adalah urutan langkah-langkah logis penyelesaian masalah yang disusun secara sistematis dan logis. Asal usul kata algoritma dapat Anda baca dalam buku “The Art of Computer Programming Second Edition Volume I” yang ditulis oleh Donald E. Knuth (1973, p1-2). Menurut Donald E. Knuth (1973,p4), algoritma dalam pengertian modern mempunyai kemiripan dengan istilah resep, proses, metode, teknik, prosedur, rutin. Algoritma adalah sekumpulan aturan-aturan berhingga yang memberikan sederetan operasi-operasi untuk menyelesaikan suatu jenis masalah yang khusus. Menurut Rinaldi Munir, algoritma adalah urutan langkah-langkah logis penyelesaian masalah yang disusun secara sistematis. Berdasarkan dua pengertian algoritma di atas, dapat disimpulkan bahwa algoritma merupakan suatu istilah yang luas, yang tidak hanya berkaitan dengan dunia komputer. “Algoritma adalah urutan langkah-langkah logis penyelesaian masalah yang disusun secara sistematis dan logis”. Kata logis merupakan kata kunci dalam algoritma. Langkah-langkah dalam algoritma harus logis dan harus dapat ditentukan bernilai salah atau benar.

è Penyajian Algoritma
1. Menggunakan Flow Chart (Diagram Alir)
2. Menggunakan Pseudo-Code

è Pembuatan algoritma mempunyai banyak keuntungan di antaranya:
1. Pembuatan atau penulisan algoritma tidak tergantung pada bahasa pemrograman manapun, artinya
penulisan algoritma independen dari bahasa pemrograman dan komputer yang melaksanakannya.
2. Notasi algoritma dapat diterjemahkan ke dalam berbagai bahasa pemrograman.
3. Apapun bahasa pemrogramannya, output yang akan dikeluarkan sama karena algoritmanya sama.

B. PEMROGRAMAN
Pemrograman berasal dari kata program yang diberi awalan pe– dan akhiran –an. Dalam buku ini, program berarti program komputer. Pengertian program komputer menurut John M. Zelle, Ph.D. dalam bukunya yang berjudul “Python Programming: An Introduction to Computer Science” (2002, p1) adalah sekumpulan instruksi langkah per langkah yang memberitahukan mengenai yang harus dilakukan komputer secara tepat. Pemrograman adalah segala kegiatan pembuatan program
komputer. Kemudian terdapat pula istilah bahasa pemrograman yang berarti bahasa yang digunakan dalam pembuatan program komputer. Berdasarkan pengertian algoritma dan pemrograman, maka dapat dikatakan bahwa program merupakan hasil penerapan dari algoritma-algoritma. Akan tetapi, dalam buku ini tidak dibahas materi mengenai pembuatan program komputer. Buku ini memfokuskan teknik-teknik pembuatan algoritma itu sendiri. Nama mata kuliah Algoritma dan Pemrograman dalam hal ini berarti mempelajari pembuatan algoritma-algoritma yang dapat diterapkan dalam pemrograman.

C. Produk yang dihasilkan pemrogram

- Program dengan rancangan yang baik (metodologis, sistematis)
- Dapat dieksekusi oleh mesin
- Berfungsi dengan benar
- Sanggup melayani segala kemungkinan masukan
- Disertai dokumentasi
- Belajar memprogram, titik berat : designer program



D. Aturan Penulisan Algoritma

Setiap Algoritma akan selalu terdiri dari tiga bagian yaitu :
1. Judul (Header)
Bagian teks algoritma yang digunakan sebagai tempat mendefinisikan nama dengan menentukan apakah teks tersebut adalah program, prosedur, fungsi
2. Kamus
bagian teks algoritma sebagai tempat untuk mendefinisikan :
            • Nama type
            • Nama konstanta
            • Nama variabel
            • Nama fungsi
            • Nama prosedur

è Algoritma
Bagian inti dari suatu algoritma yang berisi instruksi atau pemanggilan aksi yang telah didefinisikan. Komponen teks algoritma dalam pemrograman procedural dapat berupa :
            • Instruksi dasar seperti input/output, assignment
            • Sequence (runtutan)
            • Analisa kasus
            • Perulangan
è Urutan dasar pemecahan suatu masalah:
ˇ START, berisi pernyataan untuk persiapan peralatan yang diperlukan sebelum menangani
pemecahan persoalan.
ˇ READ, berisi pernyataan kegiatan untuk membaca data dari suatu peralatan input.
ˇ PROSES, berisi kegiatan yang berkaitan dengan pemecahan persoalan sesuai dengan data yang
dibaca.
ˇ WRITE, berisi pernyataan untuk merekam hasil kegiatan ke peralatan output.
ˇ END, mengakhiri kegiatan pengolahan.

è Untuk Menyelesaikan persoalan Programmer haruslah
1. Dapat mendesain algoritma yang menjelaskan bagaimana persoalan tersebut diselesaikan
2. Menulis/merubah algoritma menjadi suatu program dengan menggunakan suatu Bahasa
pemrograman yang sesuai.
3. Menggunakan komputer untuk menjalankan program.
Beda Algoritma dan Program
Program adalah kumpulan pernyataan komputer, sedangkan metode dan tahapan sistematis dalam program adalah algoritma. Program ditulis dengan menggunakan bahasa pemrograman. Jadi bisa disebut bahwa program adalah suatu implementasi dari bahasa pemrograman. Beberapa pakar
memberi formula bahwa:
Program = Algoritma + Bahasa (Struktur Data)
Bagaimanapun juga struktur data dan algoritma berhubungan sangat erat pada sebuah program.
Algoritma yang baik tanpa pemilihan struktur data yang tepat akan membuat program menjadi
kurang baik, demikian juga sebaliknya.
Ada beberapa hal yang harus diperhatikanpada translasi tersebut, yaitu:
a.Pendeklarasian variable

Untuk mengetahui dibutuhkannya pendeklarasian variabel dalam penggunaan bahasa pemrograman apabila tidak semua bahasa pemrograman membutuhkannya.



b. Pemilihan tipe data

Apabila bahasa pemrograman yang akan digunakan membutuhkan pendeklarasian variabel maka perlu hal ini dipertimbangkan pada saat pemilihan tipe data.

c. Pemakaian instruksi-instruksi

Beberapa instruksi mempunyai kegunaan yang sama tetapi masing masing memiliki kelebihan dan
kekurangan yang berbeda.

d. Aturan sintaksis

Pada saat menuliskan program kita terikat dengan aturan sintaksis dalam bahasa pemrograman
yang akan digunakan.

e. Tampilan hasil

Pada saat membuat algoritma kita tidak memikirkan tampilan hasil yang akan disajikan. Hal-hal
teknis ini diperhatikan ketika mengkonversikannya menjadi program.

E. PENYAJIAN ALGORITMA
Beberapa persyaratan untuk menjadi algoritma yang baik adalah:
Tingkat kepercayaannya tinggi (realibility). Hasil yang diperoleh dari proses harus berakurasi
tinggi dan benar.
Pemrosesan yang efisien (cost rendah). Proses harus diselesaikan secepat mungkin dan
frekuensi kalkulasi yang sependek mungkin.
Sifatnya general. Bukan sesuatu yang hanya untuk menyelesaikan satu kasus saja, tapi juga
untuk kasus lain yang lebih general.
Bisa dikembangkan (expandable). Haruslah sesuatu yang dapat kita kembangkan lebih jauh
berdasarkan perubahan requirement yang ada.
Mudah dimengerti. Siapapun yang melihat, dia akan bisa memahami algoritma Anda. Susah
dimengertinya suatu program akan membuat susah di-maintenance (kelola).
Portabilitas yang tinggi (portability). Bisa dengan mudah diimplementasikan di berbagai
platform komputer.
Precise (tepat, betul, teliti). Setiap instruksi harus ditulis dengan seksama dan tidak ada keraguraguan, dengan demikian setiap instruksi harus dinyatakan secara eksplisit dan tidak ada bagian yang dihilangkan karena pemroses dianggap sudah mengerti. Setiap langkah harus jelas dan
pasti.

Contoh: Tambahkan 1 atau 2 pada x.
Instruksi di atas terdapat keraguan.
• Jumlah langkah atau instruksi berhingga dan tertentu. Artinya, untuk kasus yang sama banyaknya, langkah harus tetap dan tertentu meskipun datanya berbeda.
• Efektif. Tidak boleh ada instruksi yang tidak mungkin dikerjakan oleh pemroses yang akan
menjalankannya.
Contoh: Hitung akar 2 dengan presisi sempurna.
Instruksi di atas tidak efektif, agar efektif instruksi tersebut diubah.
Misal: Hitung akar 2 sampai lima digit di belakang koma.
• Harus terminate. Jalannya algoritma harus ada kriteria berhenti. Pertanyaannya adalah apakah
bila jumlah instruksinya berhingga maka pasti terminate?
Output yang dihasilkan tepat. Jika langkah-langkah algoritmanya logis dan diikuti dengan seksama
maka dihasilkan output yang diinginkan.
-Standar penyusunan program
- Kebenaran logika dan penulisan.
- Waktu minimum untuk penulisan program.
- Kecepatan maksimum eksekusi program.
- Ekspresi penggunaan memori.
- Kemudahan merawat dan mengembangkan program.
- User Friendly.
- Portability.
- Pemrograman modular.
F. Struktur dan komponen dasar PASCAL

Struktur dari suatu program pascal terdiri dari sebuah judul program dan suatu blok program atau badan program. Blok program dibagi lagi menjadi dua bagian, yaitu : bagian deklarasi dan bagian pernyataan. Secara ringkas, struktur suatu program pascal dapat terdiri dari :
            - Judul program
- Blok program
- Bagian deklarasi
                        - deklarasi label
                        - deklarasi konstanta
                        - deklarasi tipe
                        - deklarasi variable
                        - deklarasi prosedur
                        - deklarasi fungsi
- Bagian pernyataan

G. Unit-unit PASCAL
- kumpulan dari konstanta, tipe-tipe data, variable, prosedur dan fungsi-fungsi
- Unit System
- pustaka dari runtime Turbo Pascal yang mendukung semua proses yang dibutuhkan pada waktu runtime. Unit system berisi semua prosedur dan fungsi standar turbo pascal. Unit system ini akan secara otomatis digunakan didalam program, sehingga boleh tidak disebutkan didalam anak kalimat Uses
- Unit Crt
- Digunakan untuk memanipulasi layer teks ( windowing, peletakkan cursor dilayar, color untuk teks, kode extanded keyboard dan lainnya).
- Unit Printer
- Merupakan unit yang sangat kecil dirancang untuk penggunaan printer didalam program
- Unit Dos
è Digunakan bila akan menggunakan prosedur-prosedur dan fungsi-fungsi standar yang berhubungan dengan DOS call, semacam DetTime, SetTime, DiskSize, èDiskFree dan lainnya.
-  Unit Graph
- menyediakan suatu kumpulan rutin grafik yang canggih, sehingga dapat memanfaatkannya untuk keperluan-keperluan pembuatan grafik.

H. Pemrograman Prosedural

Algoritma berisi urutan langkah-langkah penyelesaian masalah. Ini berarti algoritma adalah proses yang prosedural. Pada program prosedural, program dibedakan antara bagian data dengan bagian instruksi. Bagian instruksi terdiri dari atas runtunan (sequence) instruksi yang dilaksanakan satu per satu secara berurutan oleh sebuah pemroses. Alur pelaksanaan instruksi dapat berubah karena adanya pencabangan kondisional. Data yang disimpan di dalam memori dimanipulasi oleh instruksi secara beruntun. Kita katakan bahwa tahapan pelaksanaan program mengikuti pola beruntun atau prosedural.
Paradigma pemrograman seperti ini dinamakan pemrograman prosedural. Bahasa-bahasa tingkat tinggi seperti Cobol, Basic, Pascal, Fortran, dan C/C++ mendukung kegiatan pemrograman prosedural, karena itu mereka dinamakan juga bahasa prosedural. Selain paradigma pemrograman prosedural, ada lagi paradigma yang lain yaitu pemrograman berorientasi objek (Object Oriented Programming atau
OOP). Paradigma pemrograman ini merupakan trend baru dan sangat popular akhir-akhir ini. Pada paradigma OOP, data dan instruksi dibungkus (encapsulation) menjadi satu. Kesatuan ini disebut kelas (class) dan instansiasi kelas pada saat run-time disebut objek (object). Data di dalam objek hanya dapat diakses oleh instruksi yang ada di dalam objek itu saja.

I. Tipe-tipe Algoritma Berdasarkan Format Penulisan

Algoritma adalah independen terhadap bahasa pemrograman tertentu, artinya algoritma yang telah dibuat tidak boleh hanya dapat diterapkan pada bahasa pemrograman tertentu. Penulisan algoritma tidak terikat pada suatu aturan tertentu, tetapi harus jelas maksudnya untuk tiap langkah algoritmanya. Namun pada dasarnya algoritma dibagi menjadi beberapa macam berdasarkan format
penulisannya, yaitu:

1.      Deskriptif

Algoritma bertipe deskriptif maksudnya adalah algoritma yang ditulis dalam bahasa manusia seharihari (misalnya bahasa Indonesia atau bahasa Inggris) dan dalam bentuk kalimat. Setiap langkah algoritmanya diterangkan dalam satu atau beberapa kalimat.
2.      Flow Chart (Diagram Alir)

Selain dalam bentuk tulisan, algoritma juga dapat ditulis dalam bentuk diagram diagram dengan anak panah sebagai penunjuk urutan langkah algoritmanya. Algoritma yang ditulis dengan simbol-simbol demikian yang dinamakan flow chart. Mengenai lambang-lambang yang digunakan akan dibahas pada bagian selanjutnya. Sekarang diberikan suatu contoh algoritma menentukan bilangan terbesardari 3 bilangan seperti yang dicontohkan sebelumnya, tetapi ditulis dalam bentuk flow

3.      Pseudocode

Pseudo berarti imitasi dan code berarti kode yang dihubungkan dengan instruksi yang ditulis dalam bahasa komputer (kode bahasa pemrograman). Apabila diterjemahkan secara bebas, maka pseudocode berarti tiruan atau imitasi dari kode bahasa pemrograman. Pada dasarnya, pseudocode
merupakan suatu bahasa yang memungkinkan programmer untuk berpikir terhadap permasalahan yang harus dipecahkan tanpa harus memikirkan syntax dari bahasa pemrograman yang tertentu. Tidak ada aturan penulisan syntax di dalam pseudocode. Jadi pseudocode digunakan untuk menggambarkan logika urut-urutan dari program tanpa memandang bagaimana bahasa pemrogramannya. Walaupun pseudocode tidak ada aturan penulisan syntax, di dalam buku ini akan diberikan suatu aturan-aturan penulisan syntax yang cukup sederhana agar pembaca dapat lebih mudah dalam mempelajari
algoritma-algoritma yang ada di dalam buku ini. Pseudocode yang ditulis di dalam buku ini akan menyerupai (meniru) syntax-syntax dalam bahasa Pascal. Namun dibuat sesederhana mungkin sehingga tidak akan ada kesulitan bagi pembaca untuk memahami algoritma-algoritma dalam buku ini
walaupun pembaca belum pernah mempelajari bahasa Pascal. Contoh algoritma menentukan bilangan terbesar dari tiga bilangan yang ditulis dalam bentuk pseudocode bergaya buku ini.

J. Flow Char t (Diagram Al ir )
1. Pengertian
Diagram alir atau flow chart adalah suatu bagan yang menggambarkan arus logika dari data yang akan diproses dalam suatu program dari awal sampai akhir. Diagram alir terdiri dari simbol-simbol yang mewakili fungsi-fungsi langkah program dan garis alir (flow lines) menunjukkan urutan dari simbolsimbol
yang akan dikerjakan.
2. Simbol-simbol Flow Chart
Simbol terminal (terminator) digunakan untuk menunjukkan awal dan akhir algoritma Simbol persiapan (preparation)digunakan untuk memberikan nilai awal suatu variabel atau suatu counter Simbol proses (process)digunakan untuk proses perhitungan aritmatika atau proses pemindahan data Simbol Data (data) digunakan untuk menunjukkan proses input maupun output data. Simbol Keputusan (decision) digunakan untuk pengambilan keputusan dua jalur atau lebih dalam flow chart. Simbol Penghubung (on-page reference) digunakan untuk menunjukkan hubungan arus flow chart yang terputus, tetapi masih dalam halaman yang sama. Simbol Penghubung Halaman Lain (off-page reference)digunakan untuk menunjukkan hubungan arus flow chart yang terputusyang berada di halaman lain.

H. Tipe Data
Secara umum, tipe data dalam pemrograman Pascal adalah:
– Tipe data sederhana
– Tipe data standard (standard data type)
è Integer, Real, Boolean, Char, dan String

Derajat Operator
Sudah kita mengenal beberapa tipe data di dalam Pascal dan operatornya. Di dalam Pascal, operator
– operator tersebut memiliki derajat atau tingakatan. Adapun kegunaandari derajat ini adalah Pascal
dapat menentukan operator mana yang akan di jalankan terlebih dahulu.
urutan operator berdasarkan derajatnya: @, not, *, /, div, mod, as, and, shl, shr, +, -, or, xor, :=, <>, <, >, <=, >=,
– Char
Char adalah semua tombol yang terdapat pada keyboard atau lebih lengkapnya semua karakter yang terdapat pada kode ASCII.
Catatan : Apabila char ingin dijadikan sebagai konstanta maka karakter yang dimasukkan harus diapit dengan tanda kutip satu. Dan apabila karakter itu berupa tanda kutip satu maka harus diapit dengan dua tanda kutip satu
– Subrange
Tipe data subrange adalah suatu range yang menunjukkan nilai terkecil dan nilai terbesar yang dapat dipergunakan. Deklarasi tipe data subrange mempunyai bentuk: Type pengenal = konstanta1 .. konstanta2;
dimana: pengenal : nama tipe data yang dideklarasikan
konstanta1 : batas bawah nilai data
konstanta2 : batas atas nilai data Kedua konstanta di dalam subrange harus bertipe ordinal yang sama, di mana nilai konstanta pertama lebih kecil atau sama dengan nilai konstanta kedua. Tipe data
real tidak dapat digunakan sebagai nilai subrange, karena buka tipe ordinal.

Enumerated
Tipe data enumerated (skalar) menunjukkan kumpulan dari nilai yang urutannya
sudah pasti. Nilai dari tipe yang dideklarasikan ini akan diwakili dengan pengenal – pengenal (identifiers) yang akan menjadi nilai suatu konstanta.



– Tipe data terstruktur
è Array, record, set, file merupakan suatu data yang menyimpan array (larik), sebagai contoh 'ABCDEF' merupakan sebuah konstanta string yang berisikan 6 byte karakter. Ukuran Tempat untuk tipe data ini adalah 2 s/d 256 byte, dengan jumlah elemen 1 s/d 255. String dideklarasikan dengan string [ konstanta ] atau string. Bila ukuran string tidak didefinisikan maka akan banyak memakan ruang, karena ukuran string menyesuaikan dengan defaultnya. Misalkan var kata: string [20]; atau var kata: string; karena string
merupakan array dari karakter.

– Tipe data penunjuk
è Pointer
routines pada Pascal untuk manipulasi string :
-Length : menghasilkan panjang string.

-Tipe Data Pointer

Pointer merupakan variabel khusus yang berisi suatu address (alamat) di lokasi lain didalam memory. Suatu variabel yang points(menunjuk) ke sesuatu sehingga disebut pointer. Ada dua macam pointer:
-typed(tertentu): merupakan pointer yang menunjuk pada tipe data tertentu pada variable.
-generic(umum): merupakan pointer yang tidak menunjuk pada tipe data tertentu pada variable.






1.2. Dasar – Dasar Algoritma
A. Dasar – Dasar Algoritma

1. Proses
Dikerjakan oleh pemroses (CPU)
2. Aksi
Mengerjakan suatu tindakan (Aksi), maka sejumlah Operasi sesuai dengan Aksi yang dikerjakan
oleh Pemroses
3. Instruksi
Algoritma disusun oleh sederatan Langkah Instruksi yang Logis

B. Struktur Penulisan Algoritma

Penulisan algoritma hendaknya menggunakan format pseudocode
agar nantinya mudah diterjemahkan ke dalam bahasa pemrograman Pascal  Pemrograman pada semester berikutnya. Penulisan algoritma dalam format pseudocode ini mengikuti aturan-aturan yang dipakai dalam buku tulisan Rinaldi Munir yang berjudul “Algoritma dan Pemrograman”. Dalam buku tersebut, struktur penulisan algoritma dibagi menjadi 3 bagian yaitu bagian kepala, bagian deklarasi, dan bagian deskripsi.


1. Kepala Algoritma
Kepala algoritma adalah bagian yang terdiri dari nama algoritma dan penjelasan algoritma. Aturan pemberian nama algoritma mengacu pada aturan pemberian nama pengenal yang akan dibahas pada bagian berikutnya. Nama algoritma hendaknya singkat, namun mencerminkan isi algoritma secara
keseluruhan. Bagian penjelasan algoritma berisi penjelasan mengenai hal-hal yang dilakukan oleh algoritma secara singkat.

2. Deklarasi
Bagian deklarasi berisikan semua nama pengenal yang dipakai di dalam algoritma. Nama tersebut dapat berupa nama tetapan (konstanta), nama peubah (variabel), nama tipe, nama prosedur, dan nama fungsi.

3. Deskripsi
Bagian deskripsi merupakan inti dari algoritma. Bagian ini berisi uraian langkah-langkah penyelesaian masalah. Langkah-langkah ini dituliskan dengan notasi-notasi.

C. Komentar (Comment) Algoritma
D. Penamaan/Pengenal (Identifier)

Pemberian nama harus mengikuti aturan-aturan sebagai berikut:
1. hanya boleh terdiri dari huruf, angka, atau garis bawah
2. tidak boleh dimulai dengan angka
3. tidak membedakan huruf kapital maupun huruf kecil (non case-sensitive)
4. panjang tidak dibatasi
5. harus unik, artinya tidak boleh ada nama pengenal yang sama untuk hal yang berbeda
6. hendaknya mencerminkan kegunaannya.

E. Struktur dasar algoritma dan pemograman
1. Runtunan (Sequence)
Terdiri dari satu atau lebih instruksi. Tiap instruksi dikerjakan urut sesuai urutan penulisan
2. Pemilihan (Selection)
Instruksi dikerjakan bila telah memenuhi kondisi tertentu
If kondisi Then aksi1 (kondisi=true) else aksi2 (kondisi=False)
3. Perulangan (Repetition)
Mengerjakan instruksi yang berulang.
Repet aksi until kondisi (true=selesai; false=ulang)

F. Variabel
Variabel merupakan sesuatu yang digunakan sebagai tempat penyimpanan nilai dalam memori yang isinya dapat diubah.

G. Ekspresi
Ekspresi adalah serangkaian perhitungan nilai yang menghasilkan suatu nilai yang diinginkan. Ekspresi terdiri dari operand dan operator. Operand adalah nilai-nilai yang akan dihitung. Operator adalah lambang operasi yang dipakai dalam perhitungan.

H. Penugasan (Assigment)
Penugasan atau Assignment merupakan pemberian nilai ke variabel secara langsung. Notasi yang digunakan adalah . Nilai yang dapat diberikan adalah tetapan, peubah, ekspresi, maupun nilai yang dihasilkan oleh fungsi. Syarat penugasan adalah nilai yang diberikan harus sesuai dengan tipe variabel. Apabila tipenya tidak sama, maka berlaku tipe yang lebih luas dapat menampung tipe yang lebih sempit. Tipe integer dapat ditampung oleh tipe real, sebaliknya tipe real tidak dapat ditampung oleh tipe integer. Begitu pula dengan string dan char, char dapat diberikan ke string, namun tidak sebaliknya.

I. Input dan Output
Menurut Donald E. Knuth (1973, p4-6), algoritma memiliki 5 ciri pokok, yaitu:
1. Finiteness Algoritma harus selalu berakhir setelah melakukan sejumlah langkah berhingga.
2. Definiteness Setiap langkah dari suatu algoritma harus terdefinisi secara tepat (logis).
3. Input Suatu algoritma dapat tidak memiliki input, ataupun memiliki satu atau lebih dari satu input.
4. Output Suatu algoritma harus memiliki paling sedikit satu output.
5. Effectiveness Algoritma yang dibuat diharapkan efektif, artinya setiap langkah yang hendak dilaksanakan dalam algoritma haruslah sederhana sehingga dapat secara prinsip dilakukan dengan tepat dan dalam waktu yang masuk akal apabila dilakukan secara manual oleh manusia dengan menggunakan pensil dan kertas.

1. Input
Input artinya meminta data yang diperlukan dari user. Pembuat algoritma juga tidak perlu memikirkan masalah tampilan saat penginputan berlangsung.

2. Output
Output artinya mencetak informasi yang dihasilkan oleh algoritma.














BAB II
PROGRAM
A. PROGRAM

Program Kasir;
uses wincrt;
var
nama_barang : array[1..20] of string;
harga : array[1..20] of real;
banyak : array[1..20] of byte;
kata,grs :string;
x,y,i,j :byte;
Jum_Harga,Total_Harga,disc,Total_Bayar,uang :real;
begin
clrscr;
GOTOXY (1,01); Write('UNIVERSITAS PUTERA BATAM');
GOTOXY (1,02); write('PUTERA BATAM MALL');
grs:='====================================================================';
kata:='KASIR 1';
x:=round((78-length(kata))/2);
gotoxy(x,2);writeln(kata);
x:=round((78-length(grs))/2);
gotoxy(x,3);write(grs);
{-----------------------------}
gotoxy(x,4);write('SHOPPING ITEMS');
gotoxy(x,5);write(grs);
gotoxy(x,6);writeln('| No |     ITEMS         |       @PCS    |  TOTAL |TOTAL AMOUNTS |');
gotoxy(x,7);write(grs);                                                                 
{-------------------------------------------------------------------------}
i:=0;
Total_Harga:=0;
repeat
i:=i+1;
gotoxy(x,7+i);write('| ',i);
gotoxy(x+5,7+i);write('|');
gotoxy(x+7,7+i);readln(Nama_barang[i]);
if Nama_Barang[i] <>'' then begin
gotoxy(x+25,7+i);write('|');
gotoxy(x+28,7+i);readln(Harga[i]);
gotoxy(x+28,7+i);writeln(Harga[i]:10:2);
gotoxy(x+41,7+i);write('|');
gotoxy(x+44,7+i);readln(Banyak[i]);
gotoxy(x+50,7+i);write('|');
Jum_Harga:=Harga[i]*Banyak[i];
gotoxy(x+53,7+i);writeln(Jum_Harga:10:2);
gotoxy(x+65,7+i);writeln('|');
Total_Harga:=Total_Harga+Jum_Harga ; end;
until nama_barang[i]='';
{-------------------------------------------------------------------------}
disc:=5;                                                             
if (total_harga > 1000) and (total_harga <9000) then
disc:=0.01 * Total_Harga
else
disc:=10;
if (Total_Harga > 10000) and (Total_Harga <100000) then
disc:=0.05 * Total_Harga
else
disc:=15;
if (total_harga > 100000) and (total_harga <1000000) then
disc:=0.1 * total_harga
else
if (Total_Harga >= 1500000 ) then
disc:=0.15 *Total_Harga;

{-------------------------------------------------------------------------}

kata:='BUYING FAKTUR';
y:=round((78-length(kata))/2);
gotoxy(y,2);writeln(kata);
j:=i-1;
gotoxy(x,8+j);write(grs);
gotoxy(x,8+j+1);write('Total Plan :');
gotoxy(x+53,8+j+1);write(Total_Harga:10:2);
gotoxy(x,8+j+2);write('Discount :');
gotoxy(x+53,8+j+2);write(disc:10:2);
gotoxy(x,8+j+3);write(grs);
gotoxy(x,8+j+4);write('Total amounts after discount :');
Total_Bayar:=Total_Harga-disc;
gotoxy(x+53,8+j+4);write(Total_Bayar:10:2);
gotoxy(x,8+j+5);write('Payment');
gotoxy(x+53,8+j+5);readln(Uang);
gotoxy(x+53,8+j+5);writeln(Uang:10:2);
gotoxy(x,8+j+6);Write(grs);
gotoxy(x,8+j+7);write('Back Payments');
gotoxy(x+53,8+j+7);write(Uang-Total_Bayar:10:2);

gotoxy(X+15,9+j+8);write('**** COUNTER:');write('MUHAMAD FAJRI         ****');
gotoxy(X+15,9+j+9);write('**** CHECKER:');write('Mr HOTMA              ****');
gotoxy(X+15,9+j+10);write('**** DATE    :TUESDAY, JUNE-2012 ****');
gotoxy(x+1,10+j+11);write('Please check Your Items & Back Payments');
gotoxy(x+1,10+j+12);write('Thanks to your Attemps');
gotoxy(x+1,10+j+13);write('Please Welcome Again');                         
writeln
end.






















B. PENGUJIAN DENGAN F9



C. INPUT DATA
D. HASIL PROGRAM

E. ALGORITMA

1:Algoritma Kasir;
2:var
3:nama_barang : array[1..20] of string;
4:harga : array[1..20] of real;
5:banyak : array[1..20] of byte;
6:kata,grs :string;
7:x,y,i,j :byte;
8:Jum_Harga,Total_Harga,disc,Total_Bayar,uang :real;
9:begin
10:clrscr;
11:GOTOXY (1,01); Write('UNIVERSITAS PUTERA BATAM');
12:GOTOXY (1,02); write('PUTERA BATAM MALL');
13:grs:='====================================================================';
14:kata:='KASIR 1';
15:x:=round((78-length(kata))/2);
16:gotoxy(x,2);writeln(kata);
17:x:=round((78-length(grs))/2);
18:gotoxy(x,3);write(grs);
{-----------------------------}
19:gotoxy(x,4);write('SHOPPING ITEMS');
20:gotoxy(x,5);write(grs);
21:gotoxy(x,6);writeln('| No |     ITEMS         |       @PCS    |  TOTAL |TOTAL AMOUNTS |');
22:gotoxy(x,7);write(grs);                                                                
{-------------------------------------------------------------------------}
23:i:=0;
24:Total_Harga:=0;
25:repeat
26:i:=i+1;
27:gotoxy(x,7+i);write('| ',i);
28:gotoxy(x+5,7+i);write('|');
29:gotoxy(x+7,7+i);readln(Nama_barang[i]);
30:if Nama_Barang[i] <>'' then begin
31:gotoxy(x+25,7+i);write('|');
32:gotoxy(x+28,7+i);readln(Harga[i]);
33:gotoxy(x+28,7+i);writeln(Harga[i]:10:2);
34:gotoxy(x+41,7+i);write('|');
35:gotoxy(x+44,7+i);readln(Banyak[i]);
36:gotoxy(x+50,7+i);write('|');
37:Jum_Harga:=Harga[i]*Banyak[i];
38:gotoxy(x+53,7+i);writeln(Jum_Harga:10:2);
39:gotoxy(x+65,7+i);writeln('|');
40:Total_Harga:=Total_Harga+Jum_Harga ; end;
41:until nama_barang[i]='';
{-------------------------------------------------------------------------}
42:disc:=5;                                                            
43:if (total_harga > 1000) and (total_harga <9000) then-
disc:=0.01 * Total_Harga
44:else
45:disc:=10;
46:if (Total_Harga > 10000) and (Total_Harga <100000) then-
disc:=0.05 * Total_Harga
47:else
48:disc:=15;
49:if (total_harga > 100000) and (total_harga <1000000) then-
disc:=0.1 * total_harga
50:else
51:if (Total_Harga >= 1500000 ) then-
disc:=0.15 *Total_Harga;

{-------------------------------------------------------------------------}

52:kata:='BUYING FAKTUR';
53:y:=round((78-length(kata))/2);
54:gotoxy(y,2);writeln(kata);
55:j:=i-1;
56:gotoxy(x,8+j);write(grs);
57:gotoxy(x,8+j+1);write('Total Plan :');
58:gotoxy(x+53,8+j+1);write(Total_Harga:10:2);
59:gotoxy(x,8+j+2);write('Discount :');
60:gotoxy(x+53,8+j+2);write(disc:10:2);
61:gotoxy(x,8+j+3);write(grs);
62:gotoxy(x,8+j+4);write('Total amounts after discount :');
63:Total_Bayar:=Total_Harga-disc;
64:gotoxy(x+53,8+j+4);write(Total_Bayar:10:2);
65:gotoxy(x,8+j+5);write('Payment');
66:gotoxy(x+53,8+j+5);readln(Uang);
67:gotoxy(x+53,8+j+5);writeln(Uang:10:2);
68:gotoxy(x,8+j+6);Write(grs);
69:gotoxy(x,8+j+7);write('Back Payments');
70:gotoxy(x+53,8+j+7);write(Uang-Total_Bayar:10:2);
71:gotoxy(X+15,9+j+8);write('**** COUNTER:');write('MUHAMAD FAJRI         ****');
72:gotoxy(X+15,9+j+9);write('**** CHECKER:');write('Mr HERJUN             ****');
73:gotoxy(X+15,9+j+10);write('**** DATE    :TUESDAY, 31-JAN-2012 ****');
74:gotoxy(x+1,10+j+11);write('Please check Your Items & Back Payments');
75:gotoxy(x+1,10+j+12);write('Thanks to your Attemps');
76:gotoxy(x+1,10+j+13);write('Please Welcome Again');
77:writeln
78:end.


























Oval: STARTF. FLOW CHART

 




                       
Parallelogram: Total Harga >1000, <9000                       


Parallelogram: Jumlah Barang
 
                       


 




Diamond: DISC 10 %

                       
Baca
 
Parallelogram: Total Harga >1jt, <1,5 jt                                                                                                  
                                                                                               
Diamond: DISC 15 %                                                                                                                                   
Baca
 
                                                                                   
Parallelogram: Cetak StrukParallelogram: Total Harga >=1500000Diamond: >=1500000                       
                                                                                        
 





  
    Yes
                           
Oval: END

                        No


No comments:

Post a Comment