Tags

, , , ,


Ada sahabat kita yang bertanya….. bantuin donk kak….buat progam mencari banyaknya bilangan ganjil sesuai angka yang diinputkan dari keyboard.. misal :  input masukkan n : 3  output 3 bilangan ganjil : 1 3 5

untuk menjawabnya mari kita pecahkan dulu permasalahannya dengan pengandaian terlebih dahulu,,, disini yang sahabat kita butuhkan hanyalah output dari bilangan ganjil saja dimana output tersebut harus di beri batas atau tempat berhenti,,,nah mungkin yang menjadi masalah bagi sahabat kita ini saat menentukan batasan output tersebut kan biasanya dalam perulangan ada yang di sebut pembatas atau dalam rumus misal ;i <=n; maka jika tidak ada penambahan increment (n++) mungkin tidak akan bisa…

contoh tidak pake increment n++

input  n=3

for (i=1;i<=3;i++ )

write (“i”)

i++;

maka hasilnya akan 1  3

tetapi jika kita menggunakan increment n++ hasilnya akan berbeda

input  n=3

for (i=1;i<=3;i++ ) {

write (“i”)

i++;

n++; jadi yang menentukan dalam permasalahan ini adalah n++

maka hasilnya akan 1  3 5

itu algoritma untuk menentukan batas perulangannya, sekarang kita akan menentukan bilangan ganjilnya. langkahnya seperti ini..

karena 1 adalah bilangan ganjil dan ke bilangan seterusnya harus di tambah dua dari suku tersebut bila ingin mendapat nilai bilangan ganjil. disini kita akan mengasumsikan bahwa bilangan ganjil pertama adalah 1 sehingga kita bisa membuat perulangan for (diketahui nilainya ) seperti ini

for (i=1;i<=n;i++)  jadi nilai pertama i adalah 1 dan dia akan terus di ulang apabila nilai i<=n. jadi cara kerja syntak ini kurang lebih seperti ini

misal pembatas atau n=3

1. nilai i=1 jadi nilai pertama adalah 1 : apakah 1 <=3 ? jika ya maka akan di ulang sampai i=3 atau seperti ini 1 2 3 .kenapa hasilnya 1 2 3 bukan 1 1 1 karena di dalam for ada yang di sebut counter (i++) dengan demikian dia akan bertambah satu dari nilai semula contohnya seperti di bawah ini

i=1 karena ada counter i++ sehingga i/1+1=2 nah sekarang i=2 sehingga i/2+1=3 karena pemberhentian dlm for tadi adalah <=3 sehingga dia akan berhenti dan proses akan sampai di sana sehingga hasilnya akan menjadi

1 2 3

nah sekarang gimana jika kita hanya ingin menampilkan bilangan ganjilnya saja (menghilangkan nilai 2) ?. caranya kurang lebih seperti ini

1. kita harus menambahkan increment i++ dalam badan perulangan contoh

for (i=1;i<=n;i++ ) {

write (“i”)

i++;  ini dia increment i++ dalam badan perulangan

}

jadi nanti prosesnya akan bertambah kurang lebih seperti ini

i=1 karena ada counter i++ sehingga i/1+1=2 karena di bawah counter ada badan perulangan sehingga dia harus melewati badan perulangan tersebut dan seteleh menempuh jalan itu ternyata dia menemukan increment lagi sehingga nilai i tersebut akan berproses lagi. tadi kan i=2 karena ada increment di badan perulangan sehingga akan menempuh proses i++ ( i/2+1=3 ) sehingga proses akan berhenti karena batas perulangan <=3; dan hasilnya akan menjadi

1 (nilai awal ) dan 3.

* note : nilai awal akan tetap tampil sebagaimana yang kita inginkan jadi nilai awal itu adalah awal dari proses perulangan tersebut sehingga dia tidak menjalani proses…….

nah pengandaian dan teorinya sudah kita bahas sekarang ayo kita membuat pseudocodenya bersama-sama. mungkin kurang lebih seperti ini

start

integer i,suku;
write  (“Masukan Banyak suku   : “)
for (i=1;i<=suku;i++ )
write  (“i”);
i++ atau bisa dengan i+=1
suku++

end for

end

Atau dengan source code kurang lebih seperti ini

#include “stdio.h”
/* program dengan output 1 3 5 7 dst */
main () {
int i,sel,suku;
printf (“Masukan Banyak suku   : “);scanf (“%d”,&suku);
for (i=1;i<=suku;i++ ) {
printf (” %d “,i);
i++; /* atau bisa dengan i+=1   */
suku++;}
getch ();
}

cukup sekian

semoga bermanfaat