Struktur dasar & Perintah dasar Prima Dewi P, AAP Ratna, Dodi Sudiana
Outline Introduction User friendly program Algoritma, pseudocode Basic program structure User friendly program Basic selection structure using IF Repetition structure using while using for and do..while Selection structure using switch Break and continue statement
Introduction
Pendahuluan Sebelum membuat program: Harus memahami masalah yang dihadapi definisi dan deskripsi masalah Membuat perencanaan yang baik (Algoritma) untuk menyelesaikannya.
Algoritma Permasalahan komputasi Dapat diselesaikan dengan mejalankan sekumpulan kegiatan dalam urutan tertentu. Dengan cara Pengendalian Program
Pseudocode Pseudocode Bahasa buatan yang tidak formal dimana dapat membantu untuk mengembangkan algoritma Dapat menggunakan bahasa sehari-hari Tidak dapat dijalankan dengan komputer Membantu ‘membuat’ program sebelum membuat codingnya. Mudah untuk diterjemahkan ke dalam bentuk bahasa pemrograman
Perintah Dasar Menyatakan algoritma Alur pemecahan masalah Mudah diimplementasi dengan bahasa pemrograman Singkat, jelas, terstruktur, fleksibel Konsep pengolahan data berbasis Komputer
Perintah Dasar dalam pseudocode Perintah-perintah dasar yang dapat digunakan pada pseudocode Perintah Lambang penulisan tulis/printf/write pembacaan baca/scanf/read pemuatan (assignment) = pengulangan while…(do)-ewhile pencabangan if…(then)-else-eif
Struktur Dasar Struktur berurut (sequence structure) Bohm dan Jacopini Seluruh program dapat ditulis dalam 3 struktur pengendali: Struktur berurut (sequence structure) Struktur seleksi/percabangan (selection structure): if, if…else, and switch Struktur pengulangan (repetition structure): while, do…while and for
User friendly program
Program yang akrab (User friendly) Komunikatif Mudah digunakan (memberikan Fasilitas Kemudahan bagi pemakai) Petunjuk singkat penggunaan program Pernyataan error Cara mengatasi kesalahan Fasilitas Help Singkat, jelas, terstruktur dan fleksibel
Hal-hal penting yang dapat membuat program User friendly Tujuan/Judul program Petunjuk pengoperasian program Pesan kesalahan Keterangan Siap Panggil Tataletak peragaan Hemat kegiatan Fleksibel
Contoh program yang user friendly /*Peragakan petunjuk pengoperasian*/ Write (‘Menghitung rata-rata bilangan positif \n ======================================= \n - Masukkan sembarang bil. Positif atau \n negatif diakhiri dengan <enter> \n - Masukkan nol untuk menandakan bilangan\n terakhir \n ----------------------------------------\n’) /*Inisialisasi*/ n = 0 jumlah = 0
/*Penjumlahan bilangan positif*/ read (bil) while (bil<> 0) do if (bil > 0) then jumlah = jumlah + bil n = n + 1 eif Ewhile /*Penulisan hasil perhitungan*/ If (n <>) 0 then write (n, jumlah, jumlah/n)
Basic selection structure
Struktur berurut (sequence structure) Eksekusi urutan/pernyataan tidak bersyarat Proses A Proses B Proses C
Struktur seleksi/percabangan (selection structure) Tidak setiap baris program akan dikerjakan Hanya yang memenuhi syarat (kondisi) Syarat/kondisi terdiri dari operand-operand yang dihubungkan dengan operator relasi dan operator logika Pengalihan pengendalian Bila perintah yang dijalankan adalah bukan perintah berikutnya dalam urutan program Hindari perintah ‘goto’ menimbulkan banyak masalah
Struktur seleksi/percabangan (selection structure) Kondisi/syarat berisi pernyataan Boolean, yang dapat bernilai benar (true) atau salah (false) Menggunakan perintah: if If else switch
Pernyataan Seleksi if Digunakan untuk memilih alur alternatif Contoh Pseudocode: If nilai mahasiswa lebih besar atau sama dengan 60 Print “lulus” Jika kondisi true (benar) Pernyataan Print dijalankan dan program akan meneruskan ke perintah berikutnya. Jika false, pernyataan print diabaikan dan menjalankan perintah berikutnya.
Mengubah pseudocode if menjadi program C If nilai mahasiswa lebih besar atau sama dengan 60 Print “lulus” Bahasa C: if ( grade >= 60 ) printf( "Passed\n" ); Kondisi yang diseleksi
Flowchart if Simbol Berlian (decision symbol) Digunakan untuk seleksi Apakah Nilai >= 60 ? Digunakan untuk seleksi Hasilnya: benar atau salah Menguji kondisi dan mengikuti jalur yang tepat. Cetak ‘LULUS’ YA TIDAK
Seleksi dengan if…else Hanya melaksanakan aksi bila kondisinya adalah benar/true if…else Melaksanakan suatu aksi untuk kedua kondisi, baik benar/true atau salah/false
Mengubah pseudocode if..else menjadi program C If nilai siswa lebih besar atau sama dengan 60 Print “Lulus” else Print “Gagal” Code C: if ( nilai >= 60 ) printf( “Lulus\n“ ); else printf( “Gagal\n“ );
Flowchart if..else Apakah Nilai >= 60 ? Cetak ‘Gagal’ Cetak ‘LULUS’ TIDAK YA Cetak ‘LULUS’
Pernyataan if…else bersarang Pernyataan if…else di dalam pernyataan if…else Struktur ini digunakan apabila ada banyak kemungkinan kondisi yang diseleksi Satu kondisi terpenuhi, yang lain di-skip
Pernyataan if…else bersarang Pseudocode If student’s grade is greater than or equal to 90 Print “A” else If student’s grade is greater than or equal to 80 Print “B” else If student’s grade is greater than or equal to 70 Print “C” else If student’s grade is greater than or equal to 60 Print “D” else Print “F”
Jenis kesalahan Syntax errors Logic errors: Caught by compiler Have their effect at execution time Non-fatal: program runs, but has incorrect output Fatal: program exits prematurely
What we have learned so far.. Selection Structure using if if Only performs an action if the condition is true if…else Specifies an action to be performed both when the condition is true and when it is false Nested if..else Test for multiple cases by placing if…else selection statements inside if…else selection statement Once condition is met, rest of statements skipped What we have learned so far..
Repetition structure using while
Struktur perulangan (Repetition structure) Sejumlah aksi harus dilaksanakan berulang kali selama kondisi bernilai benar (true) Dapat dibuat dengan while for do…while (equal to repeat…until)
Repetition Essentials Counter-controlled repetition Definite repetition: jumlah perulangan diketahui Control variable digunakan untuk menghitung jumlah perulangan Sentinel-controlled repetition Indefinite repetition: jumlah perulangan tidak diketahui Sentinel value digunakan untuk menyatakan akhir data
Counter-Controlled Repetition Counter-controlled repetition requires The name of a control variable (or loop counter) The initial value of the control variable An increment (or decrement) by which the control variable is modified each time through the loop A condition that tests for the final value of the control variable (i.e., whether looping should continue)
Contoh Sepuluh orang mahasiswa mengikuti kuis. Range nilai yang diberikan adalah 0-100. User (dosen) akan diminta memasukkan nilai yang didapat oleh seluruh mahasiswa. Program akan menentukan rata-rata nilai kuis yang diperoleh
Fig. 3.5 | Pseudocode algorithm that uses counter-controlled repetition to solve the class average problem.
Counter-Controlled Repetition using While Format for while repetition initialization; while ( loopContinuationTest ) { statement; increment; } Example: int counter = 1; // control variable & initialization while ( counter <= 10 ) { // repetition condition printf( "%d\n", counter ); ++counter; // increment }
Outline (1 of 2 ) Counter to control while loop fig03_06.c (1 of 2 ) Counter to control while loop Initialize counter to 1 while loop iterates as long as counter <= 10 Increment the counter
Outline Calculate the average fig03_06.c (2 of 2 )
Sentinel-controlled repetition Contoh: User (dosen) akan diminta memasukkan nilai yang didapat oleh seluruh mahasiswa. Range nilai yang diberikan adalah 0-100. Jumlah mahasiswa belum diketahuti (tidak terbatas). Program akan menentukan rata-rata nilai kuis yang diperoleh. Soal ini mirip dengan contoh sebelumnya. Bedanya hanyalah perulangan tidak diketahui (indefinite loop). Oleh karena itu dibutuhkan sentinel value
Fig. 3.7 | Pseudocode algorithm that uses sentinel-controlled repetition to solve the class average problem.
Bagaimana cara menentukan Sentinel? Nilai sentinel yang ditentukan harus memiliki tipe yang sama dengan input yang dimasukkan, namun berada diluar range nilai yang benar Nilai input yang dimasukkan berupa angka integer 0-100. Sehingga dapat dipilih nilai -1 yang berada diluar range nilai mahasiswa
Outline (1 of 3 ) float type indicates variable can be a non-integer fig03_08.c (1 of 3 ) float type indicates variable can be a non-integer
Outline while loop repeats until user enters a value of -1 (2 of 3 ) fig03_08.c (2 of 3 ) Ensures the user entered at least one grade Converts total to float type Prints result with 2 digits after decimal point
Outline fig03_08.c (3 of 3 )
More repetition structure
Counter-Controlled Repetition using For Hanya bisa digunakan untuk jumlah perulangan yang diketahui (definite repetition) Format: for ( initialization; loopContinuationTest; increment or decrement ) statement Example: for( int counter = 1; counter <= 10; counter++ ) printf( "%d\n", counter ); Prints the integers from one to ten
Counter-Controlled Repetition using For Fig. 4.3 | for statement header components.
Outline fig04_02.c for loop begins by setting counter to 1 and repeats while counter <= 10. Each time the end of the loop is reached, counter is incremented by 1.
Fig. 4.4 | Flowcharting a typical for repetition statement.
Outline fig04_05.c Note that number has a different value each time this statement is executed
do…while Repetition Statement The do…while repetition statement Similar to the while structure Condition for repetition only tested after the body of the loop is performed All actions are performed at least once Format: do { statement; } while ( condition );
do…while Repetition Statement Example (letting counter = 1): do { printf( "%d ", counter ); } while (++counter <= 10); Prints the integers from 1 to 10
Outline fig04_09.c increments counter then checks if it is less than or equal to 10
Fig. 4.10 | Flowcharting the do...while repetition statement.
For vs Do..while vs While For hanya dapat digunakan untuk proses pengulangan berdasarkan harga satu variabel. Do…while Pengulangan ditempatkan diakhir simpai. Perintah didalam simpai pasti dikerjakan 1X kondisi awal pengulangan harus benar Penggunaan simpai while lebih ‘aman’ karena penyeleksian kondisi dilakukan diawal
Selection statement using switch
Selection statement using switch Useful when a variable or expression is tested for all the values it can assume and different actions are taken Format Series of case labels and an optional default case switch ( value ){ case '1': actions break; case '2': default: } break; exits from statement
Fig. 4.8 | switch multiple-selection statement with breaks.
Switch vs If prinsip sama dengan if (lebih umum) hanya digunakan untuk pemeriksaan berdasarkan 1 variabel (if sembarang) digunakan untuk memeriksa harga variabel terhadap sekumpulan nilai (kalau sedikit if)
Break and continue statement
break and continue Statements Causes immediate exit from a while, for, do…while or switch statement Program execution continues with the first statement after the structure Common uses of the break statement Escape early from a loop Skip the remainder of a switch statement
Outline fig04_11.c break immediately ends for loop
continue Statements continue Skips the remaining statements in the body of a while, for or do…while statement Proceeds with the next iteration of the loop while and do…while Loop-continuation test is evaluated immediately after the continue statement is executed for Increment expression is executed, then the loop- continuation test is evaluated
Outline continue skips to end of for loop and performs next iteration fig04_12.c continue skips to end of for loop and performs next iteration
Summary
Summary Structured programming Easier than unstructured programs to understand, test, debug and, modify programs All programs can be broken down into 3 controls Sequence – handled automatically by compiler Selection – if, if…else or switch Repetition – while, do…while or for Can only be combined in two ways Nesting Stacking Any selection can be rewritten as an if statement, and any repetition can be rewritten as a while statement
Latihan Buatlah pseudocode untuk mengkonversi suhu dengan pengulangan dan pencabangan Pengulangan sampai 5 kali Pencabangan untuk input dalam C, R, K, F Pseudocode harus sudah memasukkan unsur user friendly
Assignment 1 Dikerjakan berkelompok 1 kelompok terdiri dari 3 orang Menggunakan DevC++ Didemokan pekan depan
Soal 1 “Harga Mutlak Bilangan“ Tujuan : menentukan harga mutlak setiap bilangan yang dimasukkan lewat keyboard (akhirdata = 0)
tidak bil > 0 ya mutlak = - bil mutlak = bil
Algoritmanya tulis (mutlak) {peragakan harga mutlak tersebut} baca(bil) if bil > 0 then mutlak = bil else mutlak = -bil eif tulis (mutlak) {peragakan harga mutlak tersebut}
Soal 2 “Bilangan genap dan ganjil” Tujuan : membuat algoritma yang dapat menyatakan suatu bilangan adalah genap atau ganjil Akhir data dinyatakan dengan nilai “0”
Sisa pembagian nol bilangan genap jika tidak nol bilangan ganjil Langkah-langkahnya menentukan suatu bilangan genap atau ganjil dengan membagi bilangan dengan bilangan 2 (mod) Sisa pembagian nol bilangan genap jika tidak nol bilangan ganjil
Algoritmanya akhirData = 0 Baca (bil) while bil <> akhirData do sisa =bil mod 2 if sisa == 0 then write (‘genap’) else write (‘ganjil’) eif baca (bil) ewhile
Soal 3 “Persamaan Kuadrat” Tujuan : membuat algoritma program menghitung akar-akar persamaan kuadrat yang koefisiennya dimasukkan melalui keyboard
Langkah-langkahnya menyeleksi kondisi salah dengan memeriksa nilai koefisien menentukan jenis akar persamaan berdasarkan koefisien
Algoritma: baca (a) while a<>0 do baca (b,c) d=b^2-4*a*c continue
if d<0 then {hitung akar kompleks} p= -b/(2*a) q = abs (sqr(-d)/((2*a)) tulis (‘x1=‘, p, ‘+’, q, ‘i’) tulis (‘x2=‘, p, ‘-’, q, ‘i’) else continue
if d=0 then {hitung akar kembar} x1 = -b/(2*a) x2 = x1 {akar komplek atau tidak} if d=0 then {hitung akar kembar} x1 = -b/(2*a) x2 = x1
else {hitung akar tidak kembar} x1 = (-b+sqr(d))/(2*a) x2 = (-b-sqr(d))/(2*a) eif tulis (‘x1=‘, x1) tulis (‘x2=‘,x2) Baca (a)
Soal 4 “Relasi bilangan” Tujuan: Menentukan apakah kedua buah bilangan yang diinput sama, lebih kecil atau lebih besar
Tugas Kelompok C program (DevC++) Kel 1 – 4 soal 1 Kel 5 – 8 soal 2 Kel 8 – 13 soal 3 Kel 14 - 17 soal 4
Dev C++ Jangan lupa save program dalam .C Supaya window bisa freeze dan terlihat hasilnya sebelum tertutup otomatis, tambahkan: System(“pause”); Sebelum Return 0; }