Kamis, 17 Maret 2011

Materi Algoritma

contoh program algoritma

contoh-program-algoritma

    #include<stdio.h>
    #include<graphics.h>

    void ikan(int,int,int,int);
    void setPixel(int,int);

    void main()
    {
    int x1,y1,x2,y2;
    int gd=DETECT,gm=0;
    initgraph(&gd,&gm,0);
    printf(“Masukkan koordinat titik x1 : \n “);
    scanf(“%d”,&x1);
    printf(“Masukkan koordinat titik y1: \n “);
    scanf(“%d”,&y1);
    printf(“Masukkan koordinat titik x2: \n”);
    scanf(“%d”,&x2);
    printf(“Masukkan koordinat titik y2: \n “);
    scanf(“%d”,&y2);
    initgraph(&gd,&gm,0);
    ikan(x1,y1,x2,y2);
    getch();
    closegraph();
    }

    void ikan(int x1,int y1,int x2,int y2)
    {
    int x,y;
    int dx, dy;
    int d;
    dy=y2-y1;
    dx=x2-x1;
    d = dx – 2 * dy;
    y = y1;
    for (x = x1; x <= x2; x++)
    {
    putpixel(x,y,4);
    if (d < 0)
    {
    y = y +1;
    d = d + 2*dx – 2*dy;
    }
    else
    {
    d = d – 2*dy;
    }
    }

    }

    void setPixel(int x,int y)
    {
    putpixel(x,y,4);
    }

Pentingnya Algoritma dalam Bahasa Pemrograman

Meskipun sudah dikatakan, bahwa sewaktu kita menyusun algoritma kita tidak perlu tahu bahasa pemrograman apa yang akan digunakan kelak, namun, untuk penulisan algoritma yang lebih efisien dan efektif, maka penggunaan sebagian perintah yang ada di dalam bahasa pemrograman perlu dilakukan juga.

Adapun perintah bahasa pemrograman yang paling sering digunakan untuk menyusun algoritma adalah bahasa pemrogrman yang terstrukutur, seperti Pascal, C, SNOBOL, PL/1, dan sebagainya.

Misalkan saja, untuk contoh berikut ini :

Langkah 1 : Beri nilai 10 ke variabel S
Maka, akan lebih mudah jika ditulis sebagai :
Langkah 1 : S := 10;

Belum lagi jika algoritma yang ditulis harus melakukan perulangan langkah ke langkah-langkah sebelumnya (looping).

10 Mulai I:= 1;
11 Lakukan perbandingan data ke I dengan data ke I+1
12 Jika data ke I+1 lebih kecil, maka tukar tempat keduanya
13 Tambahkan I dengan 1
14 Lakukan langkah 11 hingga langkah 13 selama nilai I < 10 15 selesai Tentu akan lebih ringkas jika kita tulis (perintah BASIC) : 10 For I= 1 to 10 20 If A(i) > A(I+1) then SWAP A(i), A(j)
30 next
40 end

Jadi terlihat, jika algoritma tersebut sederhana, maka penyusunan algoritma akan sama dengan penyusunan sebuah program (karena semua perintahnya sudah sesuai dengan kaidah penulisan di bahasa pemrogramannya). Apakah semuanya akan demikian ?.

Tentu saja tidak, misalkan, kita diminta untuk menentukan bilangan terkecil dari seratus buah bilangan yang akan dimasukkan ke komputer, ini masih dapat langsung dibuatkan programnya.

Algoritma (program)nya bisa kita susun sebagai berikut :
1 DIM A(100)
2 FOR M = 1 TO 100
3 INPUT A(M) : NEXT : KECIL = A(1)
4 FOR M = 2 TO 100
5 IF KECIL > A(M) THEN X = KECIL: KECIL = A(M) : A(M) = X
6 NEXT : PRINT KECIL : END

Tetapi, misalkan jika kita diminta untuk mengalihkan notasi infix menjadi postfix melalui stack, hal itu sulit untuk dilakukan. Algoritmanya bisa menggunakan gabungan kalimat dengan bahasa pemrograman, berikut contoh penggalannya.

Contoh :

1. Asumsi : deretan notasi infix dimasukkan ke dalam sebuah variabel array bernilai string, nama variabelnya D
2. S adalah variabel string untuk menyimpan susunan data di dalam stack
3. H adalah variabel string untuk menyimpan hasil
4. P = banyaknya elemen array
5. For I = 1 to p

If top(s) = empty then {top(s) adalah posisi atas stack)
if D(i) = operand then
H = D(i)
Else
S = S + D(i)
Top(s) = D(i)
Endif
Else
If D(i) = operator then
If derajat D(i) > derajat Top(s) then

Tidak ada komentar:

Posting Komentar