Anda di halaman 1dari 14

Modul 07 Praktikum Teknik Komputasi | D-III Metrologi dan Instrumentasi ITB Kemendag

Modul 7 Teknik Komputasi

Modul ini berisi contoh program, latihan dengan topik review bahan kuliah sebelumnya.

1. rataratasimpel.c
/** Praktikum Teknik Komputasi 2012 Program rataratasimpel.c Nama : ... NIM : ... */ #include <stdio.h> int main(){ int n = 7; int data[n], i, jml; double ratarata; for(i=0;i<n;i++){ printf("Masukkan data ke-%d: ", i+1); scanf("%d", &data[i]); } printf("\nInput selesai.\n\n"); jml = 0; for(i=0;i<n;i++){ jml = jml + data[i]; } ratarata = (double)jml/n; printf("Rata-rata : %.2lf\n", ratarata); return 0; } // akhir program

Modul 07 Praktikum Teknik Komputasi | D-III Metrologi dan Instrumentasi ITB Kemendag

2. rataratafungsi.c
/** Praktikum Teknik Komputasi 2012 Program rataratafungsi.c Nama : ... NIM : ... */ #include <stdio.h> void rataptr(int inp[], int n, double *hasil); double rataret(int inp[], int n); int main(){ int i, n; printf("Masukkan jumlah data (>1) : "); scanf("%d", &n); int data[n]; int data2[4] = {92, 73, 23, 18}; int data3[5]; data3[0] data3[1] data3[2] data3[3] data3[4] = = = = = 22; 42; 1; 45; -59; // inisiasi array bisa seperti ini // atau seperti ini

double hslrataret, hslrataptr, hslratadata2; for(i=0;i<n;i++){ printf("Masukkan data ke-%d: ", i+1); scanf("%d", &data[i]); } printf("\nInput selesai.\n\n"); hslrataret = rataret(data, n); rataptr(data, n, &hslrataptr); // fungsi yang memberikan return value // output fungsi masuk di argumen

printf("Rata-rata dengan pointer : %.2lf\n", hslrataptr); printf("Rata-rata dengan return : %.2lf\n\n", hslrataret); // Mudah jika ingin menghitung rata-rata lagi, cukup panggil fungsi // lalu hasilnya disimpan ke variabel hslratadata2 = rataret(data2, 4); printf("Rata-rata data2 adalah: %.2lf\n", hslratadata2); // Fungsi bisa dipanggil langsung di fungsi lain tanpa disimpan ke variabel printf("Rata-rata data3 adalah: %.2lf\n", rataret(data3, 5)); return 0; } /**

Modul 07 Praktikum Teknik Komputasi | D-III Metrologi dan Instrumentasi ITB Kemendag
Fungsi mencari rata-rata dengan output menggunakan pointer */ void rataptr(int inp[], int n, double *hasil){ int i; int jml = 0; for(i=0;i<n;i++){ jml = jml + inp[i]; } *hasil = (double)jml/n; } /** Fungsi mencari rata-rata menggunakan fungsi biasa dengan return value */ double rataret(int inp[], int n){ int i; int jml = 0; for(i=0;i<n;i++){ jml = jml + inp[i]; } return (double)jml/n; } // akhir program

Modul 07 Praktikum Teknik Komputasi | D-III Metrologi dan Instrumentasi ITB Kemendag

3. standardeviasi.c
/** Praktikum Teknik Komputasi 2012 Program standardeviasi.c Nama : ... NIM : ... */ #include <stdio.h> #include <math.h> void rataptr(int inp[], int n, double *hasil); double rataret(int inp[], int n); double stddev(int a[], int n); double variance(int a[], int n); void maxmin(int a[], int n, int *max, int *min); void sort(int input[], int n); void tukar(int *x, int *y); double median(int a[], int n); int main(){ int n; printf("Masukkan jumlah data (>1) : "); scanf("%d", &n); int data[n], i; for(i=0;i<n;i++){ printf("Masukkan data ke-%d: ", i+1); scanf("%d", &data[i]); } printf("\nInput selesai.\n\n"); printf("Standar Deviasi: %.2lf\n", stddev(data, n)); return 0; } /** Fungsi mencari rata-rata menggunakan fungsi biasa dengan return value */ double rataret(int inp[], int n){ int i; int jml = 0; for(i=0;i<n;i++){ jml = jml + inp[i]; } return (double)jml/n; } /** Fungsi mencari Standar Deviasi.

Modul 07 Praktikum Teknik Komputasi | D-III Metrologi dan Instrumentasi ITB Kemendag
Karena outputnya hanya satu parameter, maka cukup gunakan fungsi dengan return value. */ double stddev(int a[], int n){ int i, sum; double mean; mean = rataret(a, n); sum = 0; for(i=0;i<n;i++){ sum += pow((a[i] - mean), 2); } return sqrt(sum/(n-1)); } // akhir program

Modul 07 Praktikum Teknik Komputasi | D-III Metrologi dan Instrumentasi ITB Kemendag

4. matriks.c
/** Praktikum Teknik Komputasi 2012 Program matriks.c Nama : ... NIM : ... */ #include <stdio.h> int main(){ int A[2][2] = {{1, 2}, {3, 4}}; int B[2][2]; int C[2][2]; int i, j; // Matriks B tanya dari user: for(i=0;i<2;i++){ printf("Masukkan matriks B baris ke-%d: ", i+1); for(j=0;j<2;j++){ scanf("%d", &B[i][j]); } } // Jumlahkan A dan B, masukkan ke C for(i=0;i<2;i++){ for(j=0;j<2;j++){ C[i][j] = A[i][j] + B[i][j]; } } // Tampilkan C printf("\n\nHasilnya:\n"); for(i=0;i<2;i++){ for(j=0;j<2;j++){ printf("%d ", C[i][j]); } printf("\n"); } return 0; } // akhir program

Modul 07 Praktikum Teknik Komputasi | D-III Metrologi dan Instrumentasi ITB Kemendag

5. bubblesort.c
/** Praktikum Teknik Komputasi 2012 Program bubblesort.c Nama : ... NIM : ... */ #include <stdio.h> void bubblesort(int input[], int n); void bubblesort2(int input[], int n); void tukar(int *, int *); int main(){ int data[40], jml, i; int sorted[40]; printf("Masukkan deretan angka, akhiri dengan 0:\n"); for(jml=0; data[jml-1] != 0; jml++){ printf("data ke-%d: ", jml); scanf("%d", &data[jml]); } jml--; printf("\nHasil sorting:\n\n"); bubblesort(data, jml); for(i=0; i<jml; i++){ printf("\nisi ke-%d: %d", i, data[i]); } return 0; } void bubblesort(int input[], int n){ int i,j,tmp; for(i=0;i<n;i++){ for(j=n-1;j>i;j--){ if(input[j-1]>input[j]){ tukar(&input[j-1],&input[j]); } } } } void tukar(int *x, int *y){ int tmp; tmp = *x; *x = *y; *y = tmp; }// akhir program

Modul 07 Praktikum Teknik Komputasi | D-III Metrologi dan Instrumentasi ITB Kemendag

6. contohpointer.c
/** Praktikum Teknik Komputasi 2012 Program contohpointer.c Nama : ... NIM : ... */ #include <stdio.h> int main(){ // pointer adalah variabel untuk menyimpan data berupa alamat // deklarasi pointer harus pakai '*' sebelum nama int a; int *ptr_a; // deklarasi juga bisa digabung dengan tipe data serupa char b, *ptr_b; // pointer HARUS diinisiasi sebelum dipakai // kalau variabel biasa diinisiasi dengan nilai angka/huruf, // untuk pointer diinisiasi dengan alamat ptr_a = &a; // variabel ptr_a diisi dengan alamat variabel a ptr_b = &b; // begitu pula dengan ptr_b a = 23; printf("\n"); printf("isi a dengan pemanggilan langsung = %d\n", a); printf("alamat a dengan operator & : %p\n", &a); // menampilkan alamat harus pakai %p printf("alamat a dengan pointer : %p\n", ptr_a); printf("isi a melalui dereferensi pointer = %d\n\n\n", *ptr_a); // *ptr_a adalah SAMA dengan a, // sehingga kita dapat mengubah variabel melalui pointernya: *ptr_a = 18; printf("isi a setelah *ptr_a diubah = %d\n\n", a); printf("isi b = %c\n", b); // variabel b belum diinisiasi, tapi sudah diberi pointer // melalui pointer, kita bisa juga menginisiasi variabel *ptr_b = 'F'; printf("isi b = %c\n", b); return 0; } // akhir program

Modul 07 Praktikum Teknik Komputasi | D-III Metrologi dan Instrumentasi ITB Kemendag

7. pisahdesimal.c
/** Praktikum Teknik Komputasi 2012 Program pisahdesimal.c Nama : ... NIM : ... */ #include <stdio.h> void pisah(float x, int *bul, float *des); int main(){ float input, bag_desimal; int bag_bulat; printf("Masukkan bilangan desimal (float): "); scanf("%f", &input); pisah(input, &bag_bulat, &bag_desimal); printf("\nBagian bulat dari %f adalah : %d\n", input, bag_bulat); printf("Bagian desimal dari %f adalah : %f\n", input, bag_desimal); return 0; } void pisah(float x, int *bul, float *des){ *bul = (int) x; *des = x - *bul; } // akhir program

Modul 07 Praktikum Teknik Komputasi | D-III Metrologi dan Instrumentasi ITB Kemendag

8. arraymaxmin.c
/** Praktikum Teknik Komputasi 2012 Program arraymaxmin.c Nama : ... NIM : ... */ #include <stdio.h> void maxmin(int a[], int n, int *max, int *min); int main(){ int n; printf("Masukkan jumlah data (>1) : "); scanf("%d", &n); int data[n], i; int max, min; for(i=0;i<n;i++){ printf("Masukkan data ke-%d: ", i+1); scanf("%d", &data[i]); } printf("\nInput selesai.\n\n"); maxmin(data, n, &max, &min); printf("max : %d\nmin : %d\n", max, min); return 0; } /** Fungsi mencari Maksimum dan Minimum. Menggunakan pointer sehingga variabel hasil/output dapat dimasukkan ke argumen function call. Dengan pointer (pass by address), satu fungsi bisa memberikan lebih dari satu hasil/output. */ void maxmin(int a[], int n, int *max, int *min){ int i; *max = *min = a[0]; for(i=0;i<n;i++){ // if untuk satu baris perintah bisa disingkat spt ini: if(a[i] > *max) *max = a[i]; if(a[i] < *min) *min = a[i]; } } // akhir program

10

Modul 07 Praktikum Teknik Komputasi | D-III Metrologi dan Instrumentasi ITB Kemendag

9. median.c
/** Praktikum Teknik Komputasi 2012 Program median.c Nama : ... NIM : ... */ #include <stdio.h> void sort(int input[], int n); void tukar(int *x, int *y); double median(int a[], int n); int main(){ int n; printf("Masukkan jumlah data (>1) : "); scanf("%d", &n); int data[n], i; double hasil; for(i=0;i<n;i++){ printf("Masukkan data ke-%d: ", i+1); scanf("%d", &data[i]); } printf("\nInput selesai.\n\n"); hasil = median(data, n); printf("Median melalui variabel : %.2lf\n", hasil); printf("Median langsung dari fungsi : %.2lf\n", median(data, n)); return 0; } /** Fungsi untuk mengurutkan data Implementasi Algoritma Bubble Sort */ void sort(int input[], int n){ int i,j,tmp; for(i=0;i<n;i++){ for(j=n-1;j>i;j--){ if(input[j-1]>input[j]){ tukar(&input[j-1], &input[j]); } } } } /** Fungsi menukar isi dua variabel

11

Modul 07 Praktikum Teknik Komputasi | D-III Metrologi dan Instrumentasi ITB Kemendag
inputnya adalah alamat dari kedua variabel (pointer) */ void tukar(int *x, int *y){ // tanda bintang sbg. deklarasi pointer // Pass by address int tmp = *x; *x = *y; *y = tmp; // tanda bintang sebagai operator dereferensi (isi dari alamat) } /** Fungsi mencari median (nilai tengah) */ double median(int a[], int n){ double hasil; sort(a, n); // jika n genap, median adalah rata-rata if(n%2 == 0){ // jangan lupa, array dengan N elemen mulai dari 0 hingga N-1 hasil = (double) a[n/2] + a[(n/2)-1]; hasil = hasil / 2; }else{ // untuk n ganjil // nomor elemen akan selalu bilangan bulat hasil = a[n/2]; } return hasil; } // akhir program

12

Modul 07 Praktikum Teknik Komputasi | D-III Metrologi dan Instrumentasi ITB Kemendag

10. sortberatbadan.c
/** Deskripsi: Diberikan sejumlah nama mahasiswa, ditanyakan berat badan, lalu sort berdasarkan berat badan. (c) 2010 ariandy@tf.itb.ac.id */ #include <stdio.h> #include <string.h> // Prototipe/deklarasi fungsi void sort(int input1[], char input2[][15], int n); void tukarint(int *x, int *y); void tukarnama(char x[], char y[]); int main(){ int i, j, jml; printf("Ada berapa orang? scanf("%d", &jml); int berat[jml]; char nama[jml][15]; ");

// array satu dimensi // array multidimensi: array dari string (array char)

// Masukan data ke array printf("\nMasukkan nama spasi berat\n"); for(i=0;i<jml;i++){ printf("Orang ke-%d: ", i+1); scanf("%s %d", nama[i], &berat[i]); // Harap diingat: // scanf hanya menerima alamat variabel // khusus untuk array dari string: nama[i] == &nama[i][0] } // Panggil fungsi mengurutkan sort(berat, nama, jml); printf("\n\nData Anda setelah diurutkan:\n\n"); printf("Nama\tBerat\n"); // tampilkan isi array for(j=0;j<jml;j++){ printf("%s\t%d\n",nama[j],berat[j]); } return 0; } // akhir fungsi main /** Fungsi untuk mengurutkan data Implementasi Algoritma Bubble Sort */

13

Modul 07 Praktikum Teknik Komputasi | D-III Metrologi dan Instrumentasi ITB Kemendag
void sort(int input1[], char input2[][15], int n){ int i,j; for(i=0;i<n;i++){ for(j=n-1;j>i;j--){ if(input1[j-1]>input1[j]){ tukarint(&input1[j-1], &input1[j]); tukarnama(input2[j-1], input2[j]); } } } } /** Fungsi menukar isi dua variabel inputnya adalah alamat dari kedua variabel (pointer) */ void tukarint(int *x, int *y){ // tanda bintang sbg. deklarasi pointer // Pass by address int tmp = *x; *x = *y; *y = tmp; // tanda bintang sebagai operator dereferensi (isi dari alamat) } void tukarnama(char x[], char y[]){ char tmp[15]; // Gunakan fungsi dari string.h strcpy(tmp, x); strcpy(x, y); strcpy(y, tmp); } // akhir program

14

Anda mungkin juga menyukai