2012 | Error Code | be a true student

Pages

Subscribe:
No.ProdukBeli
1. Beli... klik di sini

Minggu, 30 September 2012

Manipulation Sinyal


Lanjutan dari Manipulation signal yang kemarin yaitu signal addition (penambahan sinyal) untuk selanjutnya adalah sebagai berikut :
1.      Signal multiplication
Meruakan fungsi untuk memanipulasi sinyal diskrit, fungsinya adalah untuk mengalikan sinyal menjadi sinyal yang baru. Fungsinya seperti penambahan sinyal kemarin. Berikut ini adalah fungsinya :
function [y,n] = sigmult(x1,n1,x2,n2)
n=min(min(n1),min(n2)):max(max(n1),max(n2));
y1 = zeros(1,length(n)); y2 = y1;
y1(find((n>=min(n1))&(n<=max(n1))==1))=x1;
y2(find((n>=min(n2))&(n<=max(n2))==1))=x2;
y=y1 .* y2;
figure;subplot(3,1,1);stem(n,y1);subplot(3,1,2);stem(n,y2);subplot(3,1,3);stem(n,y);
           
source code diatas dapat disimpan dengan nama sgmult. Untuk memanggil fungsi ini tinggal kita panggil nama fungsinya kemudian kita kasih paramater yang ada di dalam kurung
contoh :
a=[1:13]
b=[2:14]
c=ones(1,9)
d=[-3:5]
kemudian kita panggil fungsinya caranya :
sigmult(a,b,c,d)    -> lalu [enter]


2.      Shiftiing (pergeseran)
Yang dimaksud pergeseran disini adalah indeksnya yang bisa digeser namu memiliki nilai y yang sama sebelum terjad pergeseran. Pergeseran dapat dilakukan kekanan (+) dan kekiri (-). Fungsi yang digunakan adalah sebagai berikut :
function [y,n] = sigshift(x,m,k)
n=m+k; y= x;
figure;subplot(2,1,1);stem(m,x);subplot(2,1,2);stem(n,y);
penjelasan :
x adalah tinggi sinyal, m adalah panjang indeksnya, k adalah besar pergeseran + jika kekanan – jika kekiri
source code diatas disimpan dengan nama sigshift. Kemudian untuk menggunakannya kita panggil kembali
contoh      :
kita punya x=[1:9]
kemudian kita punya indeks n=[-3:5]
kemudian kita geser kekiri sebanyak 5 atau ditulis -5, penggunaan fungsinya adalah
sigshift(x,n,-5)

tambahan :
dengan menggunakan fungsi di atas pergeseren tidak terlihat karena gambarnya sama seperti sebelumnya. Yang berbeda adalah angka yang ada pada indeksnya.
Nah agar terlihat sama kita tambahkan fungsi yang kita buat tadi sama seperti yang kita lakukan pada multiplication dan addition yang itu menjadi seperti berikut :

function [y,n] = sigshift(x,m,k)
n=m+k; y= x;
n2=min(min(m),min(n)):max(max(m),max(n));
y1=zeros(1,length(n2));
y2=y1;
y1(find((n2>=min(m))&(n2<=max(m))==1))= x;
y2(find((n2>=min(n))&(n2<=max(n))==1))= y;
figure;subplot(2,1,1);stem(n2,y1);subplot(2,1,2);stem(n2,y2);

penjelasan :
n2=min(min(m),min(n)):max(max(m),max(n));
artinya nilai n2 adalah nilai minimal dari minimal indeks m dan n sampai nilai maximal dari maksimal indeks m dan n
y1=zeros(1,length(n2));
y1 bernilai 0 sepanjang n2
y1(find((n2>=min(m))&(n2<=max(m))==1))= x;
y2(find((n2>=min(n))&(n2<=max(n))==1))= y;
kemudian digunakan fungsi find untuk menempatkan kembali indeks dari x yang berisi elemen m (elemen yang pertaman) disimpan di y1. Dan menempatkan kembali nlai dari n disimpan ke y2.

Lanjut baca - Manipulation Sinyal

Tipe Deret Diskrit


Setelah kita mengetahui tipe deret diskrit yaitu unit sample squence, dan step squence. Pada kali ini kita melanjutkan membahas tipe deret diskrit. Berikut adalah beberapa tipe deret yang telah dibahas pada praktikum ini.

1. Deretan real value eksponensial (Real Value Exponential Squence)
Merupakan sebuah deret yang terbentuk dari bilangan real
Contoh: 
X(n)=a^n

Di matlab dapat di gunakan tanda “.^” untuk menentukan deret ini. Contohnya adalah deret exponensial yang di peroleh dari 0,9 pangkat n. n sendiri bernilai dari 0 s/d 10.  Berikut ini adalah scriptnya.

n=[0:10];
>> x=(0.9).^n;
>> figure();stem(n,x);

2. Deretan complex value eksponensial (complex value exponential squence)

Yaitu deret yang terbentuk dari bilangan kompleks (bilangan yang terdiri dari bilangan real dan imajiner).
Contoh :
Berikut ini adalah script untuk contoh deret kompleks eksponensial : 

n=[0:100];
x=(0.9*exp(j*pi/10)).^n;
>> real(x);
>> imag(x);
>> figure;subplot(2,1,1);stem(n,real(x));subplot(2,1,2);stem(n,imag(x))
>> abs(x);
>> angle(x);
>>figure;subplot(2,1,1);stem(n,abs(x));subplot(2,1,2);stem(n,angle(x))
>>figure;subplot(2,2,1);stem(n,real(x));subplot(2,2,2);stem(n,imag(x));subplot(2,2,3);stem(n,abs(x));subplot(2,2,4);stem(n,angle(x))

Penjelasan fungsi-fungsi yang digunakan :
Real = untuk mengambil figure dari realnya
Imag     = untuk mengambil figur yang bilangan imaginer
Abs  = untuk memperlihatkan magnitudenya
Angle          = untuk memperlihatkan sudutnya (fasa)
Subplot   = fungsi untuk menentukan tata letaknya contoh subplot(2,1,1) angka 2 menunjukkan baris, 1 (pertama) menunjukkan kolom, 1 (kedua) menunjukkan urutan gambarnya.

3. Deret  Sinusoidal (sinusoidal squence)
Deret  yang menggunakan bilangan kompleks menggunakan sudut. Dengan matlab sudut yang dihasilkan dalam bentuk radian. Untuk itu kita harus merubah dalam bentuk drajat. Ada dua cara untuk membuatnya menjadi drajat yang pertama kita menggunakan rumus (x=a/360*2pi) atau menggunakan fungsi convang untuk mengkonversi dari radian ke degree atau sebalinya. Fungsi cos atau sin digunakan untuk menghasilkan deret sinusoidal.  Berikut ini adalah contoh implementasinya dalam matlab.
Contoh :

Konversi sudut
>>A=convang([pi/2, 3*pi/2, 2*pi],’rad’,’deg’)

Contoh sudut :
>> n=[0:500];
>>a=3*cos(0,1*pi*n+pi/3);
>>sudut_rad=convang(a,'deg','rad')
Untuk menampilkan kedalam grafik kita menggunakan fungsi 
>>figure;stem(n,sudut_rad);

4. Random deret (random squence)
Untuk membentuk deret ini kita membutuhkan dua fungsi yaitu rand untuk membentuk angka random antar 0 s/d 1 secara seragam, dan randn untuk membentuk nilai random antara 1 s/d N.
Contoh :
>> b=randn(1,80)
>> a=rand(1,80)
>> figure;subplot(2,1,1);stem(0:79,a);subplot(2,1,2);stem(0:79,b);
5. Periodic squence
Deret periodik adalah deret yang memiliki periode periode tertentu dengan syarat jika x(n)=x(n+N).
Contoh implementasinya menggunakan matlab adalah seperti berikut :

x=[1:5]
>> xtilde=[x,x,x,x]
>> xtilde2=x'*ones(1,4)
>> xtilde2=xtilde2(:)
>> xtilde2=xtilde2'
>> figure; subplot(2,1,1);stem(0:length(xtilde)-1,xtilde);subplot(2,1,2);stem(0:length(xtilde2)-1,xtilde2)

Setelah kita mengetahui tipe deretean diskrit kita belajar tenteng bagaimana manipulasi pada deret diskrit tersebut.

1. Signal addition (penambahan sinyal)
Contoh penambahan berikut {x1(n)}+{x2(n)}={x1(n)+x2(n)}. Pada matlab penjumlahan disebut dengan operasi aritmatika dengan menggunakan simbol “+”. Namun deretan sinyal yang dijumlahkan harus memiliki panjang yang sama yakni x1 dan x2.
Berikut adalah script yang digunakan untuk implementasi dalam matlab : 
Pertama kita buat fungsi penjumlahannya
Berikut source code-nya:
function [y,n] = sigadd(x1,n1,x2,n2)
n=min(min(n1),min(n2)):max(max(n1),max(n2)); 
y1=zeros(1,length(n));
y2=y1;
y1(find((n>=min(n1))&(n<=max(n1))==1))= x1
y2(find((n>=min(n2))&(n<=max(n2))==1))=x2; 
y=y1+y2;
figure;subplot(3,1,1);stem(n,y1);subplot(3,1,2);stem(n,y2);subplot(3,1,3);stem(n,y);

kemudian kita simpan pada file editor dengan nama sigadd
setelah itu kita panggil fungsi yang telah kita simpan tadi dan memberikan inputan sebagai berikut :
>> x1=[3:9]
>> x2=ones(1,8)
>>n1=[-2:4];
>>n2=[-6:1];
Kemudian kita panggil fungsinya
>> sigadd(x1,n1,x2,n2)
Lanjut baca - Tipe Deret Diskrit

Sinyal Waktu Diskrit


Pada praktikum kedua kali ini kita mendapatkan ilmu baru lagi yang terdapat pada MATLAB yaitu bagaimana cara merepresentasikan bentk gelombang melalui deretan angka.

Pertama digunakan fungsi plot(), fungsi ini digunakan untuk menghasilkan gambar yang menghubungkan titik-titik dimana titik tersebut disetiap x memiliki nilai y sehingga menghasilkan gambar yang continue. Hal ini disebut dengan sinyal analog

Yang kedua adalah digunakan fungsi stem(), fungsi ini digunakan untuk merepresentasikan sebuah gambar sinyal digital dimana setiap indeks memiliki nilai tertentu.
Contoh penggunannya sebagai berikut

t=0:0.01:2;
x=sin(2*pi*t);
plot(t,x,’b’);
xlabel(’t in sec’);ylabel(’x(t)’);
title(’Plot of sin(2\pit)’);
figure;stem(t,x)

t=0:0.01:2; adalah mendeklarasikan waktu ini berart t= 0 sampai dengan 2
x= sin(2*pi*t) adalah untuk menentukan batas y
plot(t,x,’b’); adalah untuk merepresentasikan deretan x terhadap waktu menjadi sebuah grafik sinyal analog
xlabel(’t in sec’);ylabel(’x(t)’); untuk memberi label pada sumbu x dan sumbu y
title(’Plot of sin(2\pit)’); untuk memberi nama pada grafik yang terbentuk
figure;stem(t,x); untuk merepresentasikan deretan tersebut menjadi sebuah grafik digital yakni indeks tertentu memiliki nilai tertentu.

Contoh, terdapat deret x(n)= {2, 1,−1, 0, 1, 4, 3, 7} dari deret tersebut ingin kita representasikan grafiknya, cara yang pertama adalah karena sampel tersebut belum memiliki indeks n maka kita dapat mencarinya secara manual, carnya dengan membuat permulaan deret dari deret di atas. Misalnya deret n = 0 dimulai dari posisi angka 0 maka deret n dimulai dari n+3=0, n=-3 untuk batas awal sedangkan untuk batas akhirnya adalah n-4=0, n=4. Jadi deret dimulai dari angka -3 s/d 4 atau dapat ditulis n={-3,-2,-1,0,1,2,3,4}. Setelah kita tahu sampel n nya kita dapat memasukkannya ke MATLAB dengan formula

x(n)= [2, 1,−1, 0, 1, 4, 3, 7]

x=[-3:4]
[ketika di enter akan muncul seperti berikut]

x =
    -3    -2    -1     0     1     2     3     4

y= [2, 1,−1, 0, 1, 4, 3, 7]
[ketika di enter akan muncul seperti berikut]

y =
     2     1    -1     0     1     4     3     7
figure;stem(x,y);
[ketika di enter akan muncul grafiknya]

maka ketika dienter akan menghasilkan grafik yang indeks n=0 memiliki x[n]=0.

Kita juga dapat merubah nilai awal dari n tersebut, Misalnya deret n = 0 dimulai dari posisi angka 1 (x(n)= [2, 1,−1, 0, 1, 4, 3, 7]) maka deret n dimulai dari n+4=0, n=-4 untuk batas awal sedangkan untuk batas akhirnya adalah n-3=0, n=3. Jadi deret dimulai dari angka -4 s/d 3 atau dapat ditulis n={-4,-3,-2,-1,0,1,2,3}.

x(n)= [2, 1,−1, 0, 1, 4, 3, 7]

x=[-4:3]
[ketika di enter akan muncul seperti berikut]

x =
    -4 -3    -2    -1     0     1     2     3 
   
y= [2, 1,−1, 0, 1, 4, 3, 7]
[ketika di enter akan muncul seperti berikut]

y =
     2     1    -1     0     1     4     3     7
figure;stem(x,y);

maka ketika dienter akan menghasilkan grafik yang indeks n=0 memiliki x[n]=1.

Tipe deret 

1. Deret unti sampel (Unit Sample Sequence)
Kalau saya yang mengatakan deret ini terbentuk dari matrix 0. Yakni dengan menggunakan fungsi zeros(1,N) digunakan untuk membuat sebuah vektor baris dengan data 0 sebanyak N.
Untuk membuat deret ini kita buat batasnya dari -7 s/d 7 adalah sebagai berikut
>> c=zeros(1,15)
c =
     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0
>> c(1,8)=1
c =
     0     0     0     0     0     0     0     1     0     0     0     0     0     0     0
>> figure;stem(-7,7,d)

Atau kita membuat fungsi dengan formula sebagai berikut 

function [x,n]=impseq(n0,n1,n2);
n=[n1:n2]; x=[(n-n0)==0];
figure;stem(n,x);

cara memanggil fungsi ini adalah [x,n]= impseq (n0,n1,n2); jika fungsi ini digunakan kembali alangkah baiknya disimpan dengan nama fungsinya sendiri, agar lebih mudah untuk melakukan pemanggilan fungsi, yang perlu di ingat adalah kita harus merubah workspace atau current folder kita menjadi dimana tempat kita menyimpan fungsi yang telah kita buat tadi

2. Deret unit step (Unit Step Sequence)
Deret ini terbentuk dari kombinas dari matrix 0 dan matrix 1, yakni dengan menggunakan fungsi zeros(1,N) dan ones(1,N). Untuk membentuk deret dengan baris 0 sebanyak N dan baris bernilai 1 sebanyak N. Misalnya sebagai berikut

f=[zeros(1,6),ones(1,7)]
stem(-6:6,f)
f =
     0     0     0     0     0     0     1     1     1     1     1     1     1

Atau kita dapat membuat fungsi sebagai berikut

function [x,n] = stepseq(n0,n1,n2)
n=[n1:n2]; x = [(n-n0) >= 0];
figure;stem(n,x);

untuk menggunakan fungsi ini adalah [x,n] = stepseq(n0,n1,n2), jika fungsi ini digunakan kembali alangkah baiknya disimpan dengan nama fungsinya sendiri, agar lebih mudah untuk melakukan pemanggilan fungsi, yang perlu di ingat adalah kita harus merubah workspace atau current folder kita menjadi dimana tempat kita menyimpan fungsi yang telah kita buat tadi
Lanjut baca - Sinyal Waktu Diskrit

Pengenalan MATLAB

Pada hari pertama kita praktikum kita mengenal lebih dekat dengan software MATLAB, dengan software ini kita dapat melakukan komputasi maupun membuat sebuah program untuk memecahkan masalah matematika. Dengan menggunakan MATLAB dengan catatan tahu cara menggunakannya untuk melakukan tugas-tugas komputasi akan lebih cepat dibandingkan dengan menggunakan bahasa pemrograman seperti C, C++ dan fortran. Pada pengenalan pertama kita mengenal tampilan pertama pada saat program MATLAB terbuka yaitu ada command window adalah kolom untuk menuliskan code perintah yang dimengerti oleh MATLAB, current folder yaitu untuk mengetahui di folder mana kita bekerja, command history adalah untuk mengetahui perintah apa saja yang telah kita ketikkan di command window.
Setelah mengetahui tampilannya kita mencoba untuk membuat variabel dan melakukan beberapa operasi aritmatika, misalnya penjumalahan. Kita membuat sebuah variabel misalnya adalah variabel A dan B.
A= 1
B= 3
Kita menjumlah isi variabel A dan B dan di simpan di C command-nya sebagai berikut
C=A+B
Hasilnya adalah seperti di bawah ini
C=A+B
C =
4

Jika kita tidak membuat sebuah variabel untuk menyimpan dari hasil penjumlahan tersebut maka akan terdapat tulisan ans kependekan dari answer.
>> A+B
ans =
     4
MATLAB itu singkatan dari matrix laboratory. Untuk membuat array atau matrix adalah sebagai berikut:
Sama seperti sebelumnya kita membuat variabel kemudian kita beri nilai
A = [1 2 3 4] atau A = [1,2,3,4]
Di atas adalah code untuk membentuk matrix berordo 1 x 3, 1 menunjukkan baris dan 3 menunjukkan kolom. Untuk menambahkan baris kita hanya perlu menambahkan semicolon atau tanda (;) contohnya seperti berikut
A = [1 2 3 4;5 6 7 8] atau A = [1,2,3,4;5,6,7,8]
Jadinya akan seperti berikut
>> A=[1,2,3,4;5,6,7,8]

A =

     1     2     3     4
     5     6     7     8

Di MATLAB juga terdapat beberapa fungsi dasar untuk matrix misalnya, sum untuk menjumlah, transpose, diag, magic, ones, zeros dll
Fungsi magic digunakan untuk membuat matrix persegi ajaib dimana jika baris dijumlahkan akan sama dengan hasil penjumlahan kolom serta sama dengan hasil penjumlahan diagonalnya. Contohnya seperti berikut

>> B = magic(4)

B =

    16     2     3    13
     5    11    10     8
     9     7      6     12
     4    14    15     1

Diatas merupakan contoh yang matrix 4x4, untuk membuat kolom dan barisnya lebih banyak kita tinggal mengubah parameter fungsi yang semula magic (4) menjadi magic (n) dengan n bilangan bulat. Contoh
>> Z = magic (5)

Z =

    17    24     1     8    15
    23     5     7    14    16
     4     6    13    20    22
    10    12    19    21     3
    11    18    25     2     9
Setelah fungsi magic ada juga fungsi zeros dan ones, zeros digunakan untuk membuat matrix yang bernilai 0 semua. Sedangkan ones digunakan untuk membuat matrix yang bernilai 1 semua. Untuk lebih jelasnya di bawah ini adalah contoh code command-nya dan hasilnya.
>> c = ones(3,4)

c =

     1     1     1     1
     1     1     1     1
     1     1     1     1
Ones (3,4) berarti matrix yang akan dihasilkan adalah berordo 3x4 3 (baris dan 4 kolom).
>> C= zeros (3,4)

C =

     0     0     0     0
     0     0     0     0
     0     0     0     0
Caranya untuk yang zeros sama dengan fungsi ones contohnya di atas.
Selain fungsi di atas juga masih ada sum, sum digunakan untuk menjumlah kolom, baris ataupun diagonal matrix. Caranya juga sama dengan mengetikkan sum(parameternya) contohnya adalah sebagai berikut
Misalnya kita mempunyai matrix A dengan ordo 2x4 seperti berikut
>> A = [1 2 3 4; 5 6 7 8]

A =

     1     2     3     4
     5     6     7     8
Kemudian kita mencoba menggunakan fungsi sum dengan cara sum(A) hasilnya adalah dibawah ini
>> B=sum(A)

B =

     6     8    10    12
kita juga dapat membuat transpose matrix dengan cara memberi tanda ( ‘ ) pada variabel centohnya.
>> b = A'

b =

     1     5
     2     6
     3     7
     4     8
Ada fungsi diag untuk mengetahui diagonal dari sebuah matrix seperti contoh berikut. Kita punya matrix persegi berikut
>> A=[1:4;5:8;9:12;13:16]

A =

     1        2      3     4
     5        6      7     8
     9     10     11    12
    13    14    15    16
Kita cari diagonalnya dengan cara menggunakan fungsi diag(A) hasilnya seperti berikut
>> diag(A)

ans =
     1
     6
    11
    16
Untuk menjumlahkan diagonal tersebut dapat menggunakan sum, dengan cara sum(diag(A) hasilnya berikut ini
>> sum(diag(A))

ans =

    34
Selain fungsi-fungsi tersebut terdapat fungsi penjumlahan matrix, pembagian matrix, pengurangan, dan perkalian matrix.
Yang pertama yaitu penjumlahan matrix, syarat dari penjumlahan matrix itu sendiri adalah kedua matrix tersebut memiliki ordo yang sama contoh matrix berordo 2x3 dijumlahkan dengan ordo 2x3. Tanda operatornya adalah (+) contohnya seperti berikut
>> A = [1 2 3;4 5 6]

A =

     1     2     3
     4     5     6
Dijumlahkan dengan
>> B = ones(2,3)

B =

     1     1     1
     1     1     1
Hasilnya adalah seperti berikut
>> C= A+B

C =

     2     3     4
     5     6     7
Yang kedua adalah pengurangan, konsepnya sama dengan penjumlahan yang membedakan adalah tanda operatornya yakni menggunakan (-)
>> A = [1 2 3;4 5 6]

A =

     1     2     3
     4     5     6
Dikuranghkan dengan
>> B = ones(2,3)

B =

     1     1     1
     1     1     1
Hasilnya seperti berikut ini
>> C=A-B

C =

     0     1     2
     3     4     5
Yang ketiga adalah pembagian. Terdapat 2 tanda yakni slash (/) dan back slash (\) gunanya adalah sama yang mebedakan adalah jika menggunakan slash yang membagi adalah sebelah kanan sedangkan jika menggunakan back slash pembaginya sebelah kiri. Contoh :
C= A/2 dengan C=2\A hasilnya sama saja
>> C=A/2

C =

    0.5000    1.0000    1.5000
    2.0000    2.5000    3.0000
>> C=2\A

C =

    0.5000    1.0000    1.5000
    2.0000    2.5000    3.0000
Yang ke empat adalah perkalian. Syaratnya adalah berordo berbeda jika berordo sama tidak dapat dikalikan. Contoh :
>> A= [1 2 3; 4 5 6]

A =

     1     2     3
     4     5     6
Dijumlahkan dengan
>> B= ones (3,2)

B =
     1     1
     1     1
     1     1
Hasilnya :
>> A*B

ans =

     6     6
    15    15
Lanjut baca - Pengenalan MATLAB

Jumat, 28 September 2012

Pencarian Persamaan Kuadrat dengan Rumus abc


KOMPETENSI

Setelah melakukan praktik, mahasiswa mampu membuat program dengan bahasa C untuk mengimplementasikan rumus abc untuk mencari akar-akar daru suatu persamaan kuadrat

TEORI DASAR

Ada beberapa cara yang dapat digunakan untuk mencari suku/faktor nilai xpada persamaan kuadrat, misalnya pemfaktoran, melengkapkan bentuk kuadrat, maupun menggunakan rumus kuadrat atau bisa juga disebut rumus abc. Untuk persamaan kuadrat ax^2 + bx + c = 0 dengan nilai a > 1 ataupun bentuk persamaan kuadrat yang sulit difaktorkan, biasanya akan lebih mudah diselesaikan jika menggunakan rumus kuadrat. Untuk penyelesaiannya diberikan ketentuan sebagai berikut :

Carilah detriminan dari persamaan tersebut dengan rumus :

D=b^2 - 4ac
Setelah mendapatkan nilai determinan (D) kemudian carilan akar-akarnya dengan ketentuan :
Jika D=0 maka
x= - (b/2a)

Jika D>0 maka
x1=(-b+√(b^2-4ac))/2a
x2=(-b-√(b^2-4ac))/2a

ALAT dan BAHAN

  1. Perangkat komputer
  2. Sistem operasi windows xp/linux/mac
  3. Program turbo C/Borland C/C++ Builder/Code Block, dll.

TUGAS

Buatlh program untuk mengimplementasikan algoritama pencarian akar-akar persamaan kuadrat dengan rumus abc di atas

Jawaban dan SOURCE CODE Program

Berikut ini adalah source code program untuk menyelesaikan persamaan di atas

  1. #include <stdio.h>
  2. #include <conio.h>
  3. #include <math.h>
  4. void AkarKuadrat(int a, int b, int c){
  5. float x1,x2;
  6. int D;
  7. D=(b*b)-(4*a*c);
  8. if (D==0) x1=-1*(b/(2*a));
  9. else if(D>0){
  10. x1=(-b+(sqrt(D)))/(2*a);
  11. x2=(-b-(sqrt(D)))/(2*a);
  12. }
  13. printf("D = %d\n",D);
  14. printf("x1 = %.2f\n",x1);
  15. printf("x2 = %.2f",x2);
  16. }
  17. int main()
  18. {
  19. int a,b,c;
  20. printf("Masukkan nilai a : \n");scanf("%d",&a);
  21. printf("Masukkan nilai b : \n");scanf("%d",&b);
  22. printf("Masukkan nilai c : \n");scanf("%d",&c);
  23. AkarKuadrat(a,b,c);
  24. return 0;
  25. }
Lanjut baca - Pencarian Persamaan Kuadrat dengan Rumus abc

Sabtu, 04 Agustus 2012

Searching Array : Job Sheet 2

Setelah kita memahami apa itu array. Pada kali ini kita akan mempelajari bagaimana data dalam array itu dapat dimanipulasi, beberapa manipulasi array diantaranya adalah penambahan data, penghapusan data, pengeditan data, pencarian data, penampilan data.

Pada postingan ini kami akan menjelaskan beberapa metode searching beserta cara implementasinya, kelebihan dan kekurangan dari masing-masing metode. Pada dasarnya konsep dari searching itu sendiri adalah meminta inputan dari user data apa yang akan dicari, kemudian disimpan dalam variabel kemudian dibandingkan dengan data yang tersimpan dalam indeks array, apabila data pembanding itu sama maka akan data tersebut akan ditampilkan. Apabilwa data pembanding tidak sesuai dengan yang dicari maka akan muncul pemberitahuan kalo data yang dicari itu tida terdapat dalam indeks, not found, atau yang lainnya

Yang pertama kita akan membicarakan mengenai sequensial search. Sequensial search adalah suatu teknik pencarian data pada array satu dimensi yang dilakukan dengan menelusuri semua elemen-elemen array dari awal sampai akhir. Dimana data yang tersimpan tidak perlu diurutkan terlebih dahulu

Teknik ini memiliki kelebihan dalam pengimplementasiannya dalam code program dan kemungkinan yang terbaik jika data yang dicari terdapat di indeks-indeks awal maka data tersebut tidak terlalu lama dicari. Kekurangannya adalah jika data yang dicari terletak dibagian indeks yang akhir maka akan memakan waktu pencarian yang semakin lama jika dibandingkan dengan yang berada di indeks awal.

Contoh :
Misal terdapat array dan berisi data sebagai berikut :
int nilai[7]={2,3,6,10,1,5,43,44}; (Ingat indeks array dalam bahasa C dimulai dengan indeks ke 0)
Jika kita ingin mencari nilai 6 dalam array tersebut, maka priosesnya adalah seperti berikut : dengan menggunakan looping
  • Dimulai dari indeks ke 0, yaitu nilai 2 kemudian dicocokkan dengan nilai yang dicari, jika tidak sama maka akan mencari ke indeks selanjutnya
  • Pada indeks ke 1, juga dibandingkan dengan data yang dicari, namun pada indeks ke 1 juga tidak cocok maka akan dilanjutkan ke indeks selanjutnya
  • Pada indeks ke 2, ternyata data yang tersimpan ketika dicocokkan sama dengan nilai yang kita cari maka data tersebut di tampilkan dan keluar dari looping

Untuk lebih jelasnya kita implementasikan dalam program codingnya seperti berikut :

  1. #include <stdio.h>
  2. #include <conio.h>
  3. main(){
  4. int nilai[7]={2,3,6,10,1,5,43,44};
  5. int find,i,flag=0;
  6. printf("Nilai yang tersimpan adalah : \n");
  7. for (i=0;i<8;i++){
  8. printf("Data ke %d indeks ke %d adalah %d\n",i+1,i,nilai[i]);
  9. }
  10. printf("Masukkan nilai yang anda cari : ");scanf("%d",&find);
  11. for (i=0;i<8;i++){
  12. if (nilai[i]==cari){
  13. printf("Ketemu\n");
  14. printf("Data ke %d indeks ke %d adalah %d",i+1,i,nilai[i]);
  15. flag=1;break;
  16. }}
  17. if (flag==0)printf("Data tidak ada");
  18. }

Untuk download materinya silahkan klik di sini
Password : ptik2012
Download contoh program .rar di sini
Password MF dan .rar : imhere

Lanjut baca - Searching Array : Job Sheet 2

Kamis, 26 Juli 2012

Array of struct : Jobsheet 1

Kajian Sebelumnya
Lanjutan dari postingan sebelumnya tentang array, di sini kita akan membicarakan tentang modifikasi dari struktur data yaitu tentang struct dan kombinasinya dengan array. Jadi singkatnya kita disini akan belajar membuat sebuah kumpulan data (struct). 

Struct dapat menyimpan beberapa tipe data yang berbeda. array hanya dapat menyimpan data dengan bertipe data sama. Jika kita kombinasikan maka akan menghasilkan sebuah struktur data yang memiliki field data yang berbeda yang terkumpul dalam satu struct yang sama, dalam artian memiliki field yang sama dengan struct yang lain dan dapat di isi data yang berbeda. dan field-field tersebut memiliki kaitan satu sama yang lain.

bentuk umum dari struct :
typedef struct nama_struct{
tipe_data nama_variabel;
tipe_data nama_variabel;
....
};

Untuk mendeklarasikan sebuah struct ada beberapa cara yang sering saya gunakan adalah sebagai berikut, contoh:

  1. typedef struct siswa{
  2. int no_induk;
  3. char nama[30];
  4. }siswa;
atau dapat juga seperti di bawah ini :
  1. struct{
  2. int no_induk;
  3. char nama[30];
  4. }siswa;
PENGAKSESAN

Untuk mengakses data yang telah tersimpan dalam struct kita secara umum dapat ditulis

nama_struct.nama_field;
Contoh program struct yang memiliki field nama dan umur:
  1. #include <stdio.h>
  2. #include <conio.h>
  3. typedef struct orang{
  4. int umur;
  5. char nama[30];
  6. }orang;
  7. main(){
  8. printf("Masukkan nama orang : ");fflush(stdin);
  9. gets(orang.nama);
  10. printf("Berapa umurnya : ");scanf("%d",&orang.umur);
  11. getch();system("cls");
  12. printf("Nama\t: %s",orang.nama);
  13. printf("Umur\t: %d",orang.umur);
  14. return 0;
  15. }

Contoh program di atas merupakan program yang menggunakan sebuah struct yang memiliki field "nama" dan "umur" dan struct tersebut bernama "orang". karena hanya satu struct maka struct tersebut hanya dapat menyiman satu paket data, dimana paket data tersebut menyimpan data nama dan umur.

Setelah kita faham tentang struct kita lanjut ke modifikasi dengan array, yang kita namakan array of struct. Sehingga kita tidak hanya menyimpan satu paket data saja namun kita dapat menyimpan beberapa paket data pada struct orang lebih dari satu. karena dengan array maka data tersimpan dengan ditandai pada indeks seperti pada pembahasan array sebelumnya.

Ada beberapa cara untuk mendeklarasikan array of struct yang sering saya gunakan adalah syntaxnya seperti berikut :

  1. typedef struct nama_struct{
  2. tipe_data nama_field;
  3. tipe_data nama_field;
  4. tipe_data nama_field;
  5. . . .
  6. }nama_struct[indeks];

oke langsung saja kita keimplementasi pada programnya. Pada intinya array of struct ini sama dengan array seperti biasanya. Struct dianalogikan dengan sebuah tipe data dan diberi indeks.

Namun struktur data tipe ini memiliki kelemahan pada alokasi memori dan penghapusan data. Pengalokasian memori hanya terbatas pada banyaknya indeks yang kita definisikan pada saat pembentukan array-nya. Sedangkan untuk penghapusan tidak dapat dilakukan secara real karena masih ada alokasi memori yang sudah kita alokasikan pada saat pendeklarasian. Sehingga alokasi memori untuk array dapat dikatakan tidak dinamis. Misalnya kita mengalokasikan indeks dengan nilai 10 dan kita hanya menggunakan 5 alokasi memori, maka untuk sisanya akan mubazdir. Begitu pula pada saat kita membutuhkan lebih dari 10 alokasi memori maka alokasi memori kita kurang karena sejak awal pendeklarasian kita hanya mengalokasikan 10 tempat.

Berikut adalah contoh program sederhana untuk Array of struct :
  1. #include <stdio.h>
  2. #include <conio.h>
  3. typedef struct orang{
  4. int umur;
  5. char nama[30];
  6. }orang[1000];
  7. main(){
  8. int i,awal;
  9. printf("Berapa data yang akan anda masukkan?");
  10. scanf("%d",&awal);
  11. for (i=0;i<awal;i++){
  12. system("cls");
  13. printf("\n\t\tData ke %d",i+1);
  14. printf("Masukkan nama orang : ");fflush(stdin);
  15. gets(orang[i].nama);
  16. printf("Berapa umurnya : ");scanf("%d",&orang[i].umur);
  17. }
  18. printf("\n\nTekan sembarang tombol Untuk Melihat Data anda");
  19. getch();system("cls");
  20. for (i=0;i<awal;i++){
  21. printf("\n\t\tData Ke %d",i+1);
  22. printf("Nama\t: %s",orang[i].nama);
  23. printf("Umur\t: %d",orang[i].umur);
  24. }
  25. return 0;
  26. }
  1. Download materi Jobsheet 1 Free
  2. Download latihan 1 Jobsheet 1 Free
  3. Download latihan 2 Jobsheet 1 Free
  4. Password MF : imhere | Password .rar : imhere
  5. Download Tugas Jobsheet 1
  6. Password MF : imhere | Password .rar :Baca dulu
Kajian Sebelumnya
Lanjut baca - Array of struct : Jobsheet 1