Senin, 29 April 2013

Laporan ASD Modul 1 Struct Array dan Pointer




LAPORAN PRAKTIKUM
ALGORITMA DAN STRUKTUR DATA
Disusun untuk Memenuhi Mata kuliah Praktikum Algoritma dan Struktur Data
Yang Dibimbing oleh Bapak I Made Wirawan, S.T.,M.T.




 


Oleh :
Ike Sella Kusumalasari
110533430631
S1 PTI off  E


UNIVERSITAS NEGERI MALANG
FAKULTAS TEKNIK
JURUSAN TEKNIK ELEKTRO
S1 PENDIDIKAN TEKNIK INFORMATIKA
September 2012


 MODUL 1
ARRAY,STRUCT,POINTER
 
A.    TUJUAN
a.       Mahasiswa memahami apakah yang dimaksud dengan struktur data
b.      Mahasiswa memahami apakah yang dimaksud dengan algoritma.
c.       Mahasiswa mampu Mengingat kembali array, struktur, pointer dalam bahasa C.


B.     DASAR TEORI
            Struktur data adalah sebuah skema organisasi, seperti struktur dan array, yang diterapkan pada data sehingga data dapat diinterprestasikan dan sehingga operasioperasi spesifik dapat dilaksanakan pada data tersebut.
1. Array
            Array adalah organisasi kumpulan data homogen yang ukuran atau jumlah elemen maksimumnya telah diketahui dari awal. Array umumnya disimpan di memori komputer secara kontigu (berurutan). Deklarasi dari array adalah sebagai berikut: int A[5]; artinya variabel A adalah kumpulan data sebanyak 5 bilangan bertipe integer. Operasi terhadap elemen di array dilakukan dengan pengaksesan langsung. Nilai di masing-masing posisi elemen dapat diambil dan nilai dapat disimpan tanpa melewati posisi-posisi lain.
                                    Terdapat dua tipe operasi, yaitu:
                        1. Operasi terhadap satu elemen/posisi dari array
                        2. Operasi terhadap array sebagai keseluruhan
                                    

                        Dua operasi paling dasar terhadap satu elemen/posisi adalah
                        1. Penyimpanan nilai elemen ke posisi tertentu di array
                        2. Pengambilan nilai elemen dari posisi tertentu di array
                        Biasanya bahasa pemrograman menyediakan sintaks tertentu untuk                                                    penyimpanan dan pengambilan nilai elemen pada posisi tertentu di array
                                    Contoh:
                                    A[10] = 78, berarti penyimpanan nilai 78 ke posisi ke-10 dari array A
                                    C = A[10], berarti pengambilan nilai elemen posisi ke-10 dari array A
                        2. Pointer
                         Variabel pointer juga harus didelarasikan terlebih dahulu sebelum mulai digunakan     
                         bentuk umum cara mendeklarasikan variabel pointer adalah:
Tipe *nama_var_pointer
                     Tipe variabel sama dengan tipe yang dikenal oleh variabel biasa, misalnya                       
                      int, float, char dan sebagainya. Nama variabel pointer juga mengikuti                              
                    ketentuan nama variabel biasa. Yang membedakan variabel pointer dengan variabel biasa                     dengan menggunakan tanda asterisk (*) didepan nama varibe pada waktu deklarasi.
                        3. Struct
                         Struktur adalah koleksi dari variabel yang dinyatakan dengan sebuah nama, dengan   
                         sifat setiap variabel dapat memiliki tipe yang berlainan. Struktur  biasa dipakai untuk 
                         mengelompokkan beberapa informasi yang berkaitan menjadi sebuah satu kesatuan.
                                    Contoh pendefinisian tipe struktur adalah sebagai berikut:
                                    struct data_tanggal {
                                    int tanggal;
                                    int bulan;
                                    int tahun;
                                    };


C.    LATIHAN PRAKTIKUM
Latihan Praktikum 1
a.      Script
#include <stdio.h>
#define MAX 10

int fibo[MAX];

int main()
{
            int i;
            fibo[1] = 1;
            fibo[2] = 1;
            for (i=3;i<=MAX;i++)
                        fibo[i]=fibo[i-2]+fibo[i-1];
            printf("%d Bilangan Fibonaci Pertama adalah : \n", MAX);
            for (i=1;i<MAX;i++)
                        printf("%d-",fibo[i]);
};                                
b.      Printscreen Hasil
           

Latihan Praktikum 2
a.      Script
#include <stdio.h>
#include <iostream.h>

 main () {
       
       int y;
       int x = 87;
       int *px;
       
       px = &x;
       y = *px;
       
       printf("Alamat x = %p \n", &x);
       printf("Isi px = %p \n", px);
       printf("Isi x = %d \n", x);
       printf("Nilai yang ditunjuk oleh px = %d \n", *px);
       printf("Nilai y = %d \n", y);

     
}

b.      Printscreen Hasil
      

Latihan praktikum 3
a.      Script
#include <stdio.h>

 main () {
       
       float d = 54.5f, *pd;
       
       printf("Isi d mula-mula = %g \n", d);
       
      pd = &d;
      *pd += 10;
     
      printf("Isi d sekarang = %g \n", d);
           
};
b.      Printscreen Hasil
      

Latihan praktikum 4
a.      Script
#include <stdio.h>
#include <stdlib.h>
#define MAX 10

int *fibo;

int main() {
     
      int i;
     
      fibo = (int *) malloc (MAX * sizeof(int));
     
      *(fibo + 1) = 1;
      *(fibo + 2) = 1;
     
      for (i = 3; i<=MAX; i++)
            *(fibo + i) = (*(fibo + i - 2) + *(fibo + i - 1));
     
      printf("%d Bilangan Fibonaci Pertama adalah : \n" ,MAX);
     
      for (i = 1; i < MAX; i++)
            printf("%d-", *(fibo+i));
};
b.      Printscreen Hasil
      

Latihan praktikum 5
a.      Script
#include <stdio.h>
#include <math.h>

struct polar {
      double r;
      double alpha;
};

struct kartesian {
      double x;
      double y;
};


int main()
{
      struct polar p1;
      struct kartesian k1;

      printf("Masukkan nilai r untuk koordinat polar : ");
      scanf("%lf",&p1.r);
     
      printf("Masukkan nilai alpha untuk koordinat polar :");
      scanf("%lf",&p1.alpha);

      k1.x = p1.r * cos(p1.alpha);
      k1.y = p1.r * sin(p1.alpha);

      printf("Nilai koordinat kartesian untuk koordinat polar r= %2.21f alpha= %2.2lf adalah: \n",p1.r,p1.alpha);
      printf("x = %2.2lf   y = %2.2lf", k1.x,k1.y);


};
b.      Printscreen Hasil
 
Latihan praktikum 6
a.      Script
#include <stdio.h>
#include <string.h>

struct dtnilai
{
      char nrp[10];
      char nama[20];
      double nilai;
};

struct dtnilai data[10];
int j=0;

int tambah_data()
{
      char jawab[2];
      while(1)
      {
      fflush(stdin);
      printf("NRP :");
      scanf("%s",&data[j].nrp);
      printf("Nama      :");
      scanf("%s",&data[j].nama);
      printf("Nilai test :");
      scanf("%lf",&data[j].nilai);
     
      printf("Ada data lagi (y/t):"); scanf("%s",&jawab);
      if((strcmp(jawab,"Y")==0)||(strcmp(jawab,"y")==0))
      {
            j++;continue;
      }    
            else if((strcmp(jawab,"T")==0)||(strcmp(jawab,"t")==0))
                  break;
      }
}

int tampil()
{
      int i;
      printf("Data Mahasiswa yang telah diinputkan : \n");
      printf("NRP\tNama\tNilai\n");
     
      for(i=0;i<=j;i++)
      {
            printf("%s\t%s\t%6.2f\n", data[i].nrp, data[i].nama, data[i].nilai);
      }
}

int main()
{
      tambah_data();
      tampil();
}

b.      Printscreen Hasil
 

D.     TUGAS RUMAH
Tugas Rumah 1
a.      Script
#include<iostream.h>

typedef struct node {
      int coef;
      char var;
      char exp;
      int power;
      struct node *next;
} list_node;

typedef list_node *list;
list cons(int a, char b, char c, int d, list L) {
      list_node *insert;     
      insert=new(struct node);
    insert->coef=a;
      insert->var=b;
      insert->exp=c;
      insert->power=d;
      insert->next=L;
      return(insert);
}

list sort(list L) {
      struct node *p=NULL, *q=NULL;
      list R=NULL, K=NULL;
      p=L->next;
      R=cons(L->coef,L->var,L->exp,L->power,NULL);
      while(p!=NULL) {
           
            if(p->power>=R->power) {
                  R=cons(p->coef,p->var,p->exp,p->power,R);
            } else {
                  q=R;
                  start:
                        if(q->next==NULL)
                              goto second;
                      else if(q->next->power>p->power) {
                              q=q->next;
                              goto start;
                        } else {
                              goto second;
                        }
                  second:
                        if(q->next==NULL) {
                              K=cons(p->coef,p->var,p->exp,p->power,NULL);
                              q->next=K;
                              K->next=NULL;
                        } else {
                              K=cons(p->coef,p->var,p->exp,p->power,NULL);
                              K->next=q->next;
                              q->next=K;
                        }
            }
            p=p->next;
      }
      return R;
}

list search(list L) {
      struct node *p=NULL,*q=NULL;
      p=L;
      while(p!=NULL) {
            q=p->next;
            while(q!=NULL) {
                  if(q->power==p->power) {
                        p->coef=p->coef+q->coef;
                        p->next=p->next->next;
                  }
                  q=q->next;
            }
            p=p->next;
      }
      L=sort(L);
      return L;
}

list read() {
      list L=NULL; int a; char b; char c; int d;
      cin>>a>>b>>c>>d;
      L = cons(a,b,c,d,L);
      L->next=NULL;
      while(cin.peek()!='\n') {
            cin>>a>>b>>c>>d;
            L = cons(a,b,c,d,L);
      }
      return L;
}

list add(list A, list B, int c) {
      list p, q, R=NULL;
      p=A;
      q=B;
      int x=c;
      if(x==1 || x==2) {
            while((p!=NULL) || (q!=NULL)) {
                  if(p==NULL) {
                        if(x==1)
                              R=cons(q->coef,q->var,q->exp,q->power,R);
                        if(x==2)
                              R=cons(q->coef-2*q->coef,q->var,q->exp,q->power,R);
                        q=q->next;
                  } else if(q==NULL) {
                        R=cons(p->coef,p->var,p->exp,p->power,R);
                        p=p->next;
                  } else if(q->power>p->power) {
                        if(x==1)
                              R=cons(q->coef,q->var,q->exp,q->power,R);
                        if(x==2)
                              R=cons(q->coef-2*q->coef,q->var,q->exp,q->power,R);
                        q=q->next;
                  } else if(p->power>q->power) {
                        R=cons(p->coef,p->var,p->exp,p->power,R);
                        p=p->next;
                  } else {
                        if(p->power==q->power) {
                              if(x==1)
                                    R=cons(p->coef+q->coef,q->var,q->exp,q->power,R);
                              if(x==2)
                                    R=cons(p->coef-q->coef,q->var,q->exp,q->power,R);
                              q=q->next;p=p->next;
                        }
                  }
            }
      } else if(x==3) {
            while(q!=NULL) {
                  p=A;
                  while(p!=NULL) {
                        R=cons(p->coef*q->coef,q->var,q->exp,q->power+p->power,R);
                        p=p->next;
                  }
                  q=q->next;
            }
      } else if(x==4) {
            while(p!=NULL) {
                  R=cons(p->coef*p->power,p->var,p->exp,p->power-1,R);
                  p=p->next;
            }
      }
      return R;
}

void print(list P) {
      list L = P;
      if (L==NULL)
            cout<<"0";
      else {
            if(L) {
                  if(L->coef!=0)
                        cout<<L->coef<<L->var<<L->exp<<L->power<<" ";
                  L=L->next;
            }
            while(L!=NULL) {
                  if(L->coef>0)
                        cout<<'+'<<L->coef<<L->var<<L->exp<<L->power<<" ";
                  else if(L->coef<0)
                        cout<<L->coef<<L->var<<L->exp<<L->power<<" ";
                  L=L->next;
            }
      }
}

int main() {
      list L,M,Result;
      int x;
      cout<<"Pilih Operasi : "<<endl;
      cout<<"1. Penjumlahan"<<endl;
      cout<<"2. Pengurangan"<<endl;
      cout<<"3. Perkalian"<<endl;
      cout<<"4. Turunan"<<endl;
      cout<<"Pilihan : ";
      cin>>x;
      if(x==1 || x==2 || x==3) {
            cout<<"Polynomial Pertama : ";
            L=read();
            cout<<"Polynomial Kedua   : ";
            M=read();
            L = sort(L);
            cout<<"Polynomial Pertama Adalah : "<<'\t';
            print(L);
            cout<<endl;
            M = sort(M);
            cout<<"Polynomial Kedua Adalah   : "<<'\t';
            print(M);
            cout<<endl;
            if(x==1)
                  cout<<"Hasil Penjumlahan         : "<<'\t';
            else if(x==2)
                  cout<<"Hasil Pengurangan         : "<<'\t';
            else if(x==3)
                  cout<<"Hasil Perkalian           : "<<'\t';
      } else if(x==4) {
            cout<<"Polynomial : ";
            L=read();
            cout<<endl;
            L = sort(L);
            cout<<"Polynomial Yang Diturunkan : "<<'\t';
            print(L);
            cout<<endl;
            cout<<"Hasil Turunan              : "<<'\t';
      }
      Result=add(L,M,x);
      Result=sort(Result);
      Result=search(Result);
      print(Result);
      cout<<endl;
}
b.      Printscreen Hasil
 

Tugas Rumah 2
a.      Script
#include <iostream.h>

typedef struct bilangan {
      int riil;
      int imj;
} kmp;

typedef kmp *biil;
void proses(biil bil, int a) {
      int r,i;
      int x=a;
      if(x==1) {
            r=bil[0].riil+bil[1].riil;
            i=bil[0].imj+bil[1].imj;
            cout<<"Hasil Penjumlahan Dua Bilangan Komlpeks : "<<r<<" + "<<i<<"i";
      } else if(x==2) {
            r=bil[0].riil-bil[1].riil;
            i=bil[0].imj-bil[1].imj;
            cout<<"Hasil Pengurangan Dua Bilangan Komlpeks : "<<r<<" + "<<i<<"i";
      } else if(x==3) {
            r=bil[0].riil*bil[1].riil-bil[0].imj*bil[1].imj;
            i=bil[0].riil*bil[1].imj+bil[0].imj*bil[1].riil;
            cout<<"Hasil Perkalian Dua Bilangan Komlpeks : "<<r<<" + "<<i<<"i";
      } else if(x==4) {
            r=((bil[0].riil*bil[1].riil+bil[0].imj-bil[1].imj)/(bil[0].riil*2+bil[0].imj*2))+((bil[0].imj*bil[1].riil-bil[0].riil*bil[1].imj)/(bil[1].riil*2+bil[1].imj*2));
            i=bil[0].imj-bil[1].imj;
            cout<<"Hasil Pembagian Dua Bilangan Komlpeks : "<<r<<" + "<<i<<"i";
      }
}

int main() {
      bilangan bil[2];
      int x;
      cout<<"1. Penjumlahan"<<endl;
      cout<<"2. Pengurangan"<<endl;
      cout<<"3. Perkalian"<<endl;
      cout<<"4. Pembagian"<<endl;
      cout<<"----------------------------------------------------------------------------------------------------"<<endl;
      cout<<"Pilihan : ";
      cin>>x;
      cout<<"----------------------------------------------------------------------------------------------------"<<endl;
      for(int a=0;a<2;a++) {
            cout<<"Masukkan Bilangan Kompleks yamg ke "<<a+1<<endl;
            cout<<"Bilangan Riil     : ";
            cin>>bil[a].riil;
            cout<<"Bilangan Imajiner : ";
            cin>>bil[a].imj;
      }
      cout<<"----------------------------------------------------------------------------------------------------"<<endl;
      for(int a=0;a<2;a++) {
            cout<<"Bilangan Kompleks yang ke "<<a+1<<" : "<<bil[a].riil<<" + "<<bil[a].imj<<"i\n";
      }
      cout<<"----------------------------------------------------------------------------------------------------"<<endl;
      proses(bil,x);
}
b.      Printscreen Hasil
 

E.     KESIMPULAN
Struktur data adalah sebuah skema organisasi, seperti struktur dan array, yang diterapkan pada data sehingga data dapat diinterprestasikan dan sehingga operasioperasi spesifik dapat dilaksanakan pada data tersebut. Dalam modul ini menggunakan array, pointer dan struct.

F.     DAFTAR RUJUKAN
-  Modul BAB 1 Struct, Array, dan Pointer (Modul Praktikum Algoritma dan Struktur Data
-  Modul 6  Array(Modul Praktikum Bahasa Pemrograman Terstruktur(S1 PTI- UM)
-   Modul 8 Pointer(Modul Praktikum Bahasa Pemrograman Terstruktur(S1 PTI- UM)
- Modul 9 Struct (Modul Praktikum Bahasa Pemrograman Terstruktur(S1 PTI- UM)

Tidak ada komentar:

Posting Komentar