Laporan Pratikum 9 algoritma pemograman



LAPORAN PRAKTEK 9 ( PERTEMUAN KE-12)
TUGAS 9
ALGORITMA PEMOGRAMAN

Disusun Oleh : Syafri Wardian
18214046

Mata Kuliah Praktek :
FUNGSI
Dosen Pembimbing :
Sri Nofri Wihandri ,S.Pd,M.Pd.T

Program Studi :
Teknik Elektronika


Akademi Komunitas Negeri Padang Pariaman
PDDF Universitas Negeri Padang
Tahun 2018

FUNGSI
Terdapat dua metode atau cara yang digunakan untuk melewatkan parameter ke dalam sebuah fungsi, yaitu berdasarkan fungsi, yaitu berdasarkan nilai (disebut pass-by-value) dan berdasarkan referensi atau alamatnya (disebut pass-by-reference). Pada bagian ini kita akan membahas mengenai perbedaan cara kerja antara kedua metode tersebut serta cara melakukannya di dalam C++.

1.      Fungsi tanpa return value
Dalam bahasa lain disebut prosedur. Proseduràfungsi yang mempunyai nilai balik.
Ada 2 jenis:
a.       Tanpa passing parameter
Passing parameteràsesuatu nilai yang mungkin saja berupa tipe data dasar atau tipe data bentukan. Parameter à sesuatu yang harus ada untuk melakukan suatu pekerjaan.
Bentuk:
void namaFungsi()

{

     aksi-aksi;

}

Contoh program:
Membuat Program untu mengelola nilai (mid, uas, tugas, akhir, huruf), maka fungsi-fungsi yang dibutuhkan adalah:

Fungsi yang dibutuhkan:
void judul();

void bacaData();

void hitungNilai();

void hitungAkhir(int i, double a, double b, double c);

void konversi(int i, double k);

void info();

–> Pass By Value
Bila parameter dikirim secara value (nilai) , parameter formal di prosedur akan berisi nilai yang akan dikirimkan yang kemudian bersifat lokal di prosedur. Bila nilai parameter formal di prosedur tersebut berubah, tidak akan mempengaruhi nilai parameter nyata (nilai parameter nyata tetap, tidak berubah). Pengiriman secara nilai ini merupakan pengiriman searah, yaitu dari parameter nyata ke parameter formal, yang tidak dikirim balik dari parameter formal ke parameter nyata. Pengiriman parameter secara nilai ini juga dapat dikatakan dengan menyalin (copy) nilai variabel dan nilai itu diberikan ke variabel parameter. Prosedur bekerja pada salinan variabel, sehingga tidak mengubah parameter aktualnya.
Karakteristik dari  Pass by Value:
  1. Data yang dikirim dari parameter aktual di blok program utama ke parameter formal  di prosedur adalah nilai dari datanya bukan alamat memori letak dari datanya.
  2. Prosedur/Fungsi yang menerima nilai ini akan menyimpan data tersebut di alamat memori yang berbeda dari nilai aslinya yang digunakan oleh bagian program yang memanggil fungsi/prosedur tersebut di blok program utama.
  3. Karena terdapat alamat memori yang berbeda, maka perubahan nilai di fungsi tidak akan merubah nilai asli di bagian program yang memanggil prosedur/fungsi tersebut.
Contoh Program Pass By Value:

Listing program C:
/*

      Program Mengelula Nilai Algoritma

*/

#include <stdio.h>

#include <stdlib.h>



#define N 5



//deklarasi fungsi

void judul();

void bacaData();

void hitungNilai();

void hitungAkhir(int i, double a, double b, double c);

void konversi(int i, double k);

void info();



//deklarasi array

double mid[N];

double uas[N];

double tugas[N];

double akhir[N];

char huruf[N];



main()

{

      judul();

      bacaData();

      hitungNilai();

      info();

}



//definisi fungsi

void judul()

{

      printf("Program Mengolah Nilai Algoritma\n");

      printf("Programmer: Antu\n");

      printf("Nama Pacar: Balau\n");

      printf("Created 1-1-2001\n\n");

}



void bacaData()

{

      int i;

     

      printf("\nMengentri Nilai\n");

      for(i=0;i<N;i++)

      {

            printf("Mahasiswa ke-%d: \n",(i+1));

            printf("Nilai MID   : ", (i+1));

            scanf("%lf", &mid[i]); fflush(stdin);

            printf("Nilai UAS   : ", (i+1));

            scanf("%lf", &uas[i]); fflush(stdin);

            printf("Nilai TUGAS : ", (i+1));

            scanf("%lf", &tugas[i]); fflush(stdin);

      }    

}



void hitungNilai()

{

      int i;

     

      printf("\nMenghitung Nilai\n");

      for(i=0;i<N;i++) 

      {

            hitungAkhir(i, mid[i], uas[i], tugas[i]);

           

            konversi(i, akhir[i]);

      }

}



void hitungAkhir(int i, double a, double b, double c)

{

      akhir[i] = a*0.3 + b*0.3 + c*0.4;

}



void konversi(int i, double k)

{

      if((k>=81.0) && (k<=100.0))

            huruf[i] = 'A';

      else if((k>=66.0) && (k<81.0))

            huruf[i] = 'B';

      else if((k>=55.0) && (k<66.0))

            huruf[i] = 'C';

      else if((k>=45.0) && (k<55.0))

            huruf[i] = 'D';

      else huruf[i] = 'E';

}



void info()

{

      int i;

     

      printf("\nMenampilkan Nilai\n");

      for(i=0;i<N;i++)

      {

            printf("Nilai Makasiswa ke-%d: \n", (i+1));

            printf("     MID    : %0.2lf\n", mid[i]);

            printf("     UAS    : %0.2lf\n", uas[i]);

            printf("     TUGAS  : %0.2lf\n", tugas[i]);

            printf("     N AKHIR: %0.2lf\n", akhir[i]);

            printf("     N HURUF: %c\n", huruf[i]);

      }

}

Ini hasilnya setelah dijalanin:

Dapat dilihat pada gambar diatas,
walaupun didalam procedure telah dilaukan perubahan nilai, namun perubahan nilai tidak bisa dipanggil ke program utama, karena pass by value hanya dapat mengcopy nilai sehingga saat di panggil nilainya tetap memakai nilai diprogram utama.
Pass By Value sebagai parameter masukkan dimana tidak bisa membawa nilai yang telah diubah didalam menuju keluar prosedure, dia hanya berfungsi untuk memasukkan nilai dari program utama ke dalam procedure.
Dari hasil di atas dapat disimpulkan bahwa fungsi tersebut tidak dapat mengubah (dalam hal ini menukarkan ) bilangan-bilangan yang dimaksud karena nilai yang terdapat di dalam fungsi tidak mempengaruhi nilai luar. Untuk menangani kasus semacam ini kita perlu menggunakan metode pass-by reference untuk melewatkan parameter ke dalam fungsi "TukarBilangan()" .

–> Pass By Reference
Sedangkan bila pengiriman parameter secara reference (acuan), maka perubahan-perubahan yang terjadi pada nilai parameter formal di prosedur akan memperngaruhi nilai parameter nyata. Parameter-parameter ini disebut dengan variabel parameter serta dideklarasikan di deklarasi prosedur dengan menggunakan kata cadangan Var, Berikut format penulisannya:
Procedure nama_procedure (VAR  identifier1, identifier2,  …., identifier3: tipe data)
Identifier konstanta dan literal tidak dapat digunakan dalam parameter, karena kedua identifier tersebut tidak dapat berubah nilainya.
Karakteristik dari Pass by Reference :
  1. Pada saat pengiriman nilai, yang dikirim dari parameter aktual di blok program utama ke parameter formal  di prosedur adalah alamat letak dari nilai datanya bukan.
  2. Prosedur/Fungsi yang menerima nilai ini akan menggunakan alamat memori yang sama dengan nilai aslinya yang digunakan oleh bagian  program yang memanggil fungsi/prosedur tersebut di blok program utama. Karena menggunakan alamat memori yang sama, maka perubahan nilai di prosedur/fungsi akan merubah nilai asli di bagian program yang memanggil prosedur/fungsi tersebut.
3.      akan upaya untuk melewatkan alamat dari suatu variabel ke dalam fungsi. Cara ini digunakan untuk mengubah isi dari suatu variabel di luar fungsi dengan pelaksaaan pengubahan dilakukan di dalam fungsi. Sebagai contoh perhatikan program fungsi tukar() dibawah ini yang telah di modifikasi dari fungsi tukar sebelumnya untuk melihat perbedaannya :
4.       
int tukarreference(int *px, int *py)
{
int z;
z = *px;
*px = *py;
*py = z;
printf("\nNilai di akhir fungsi tukar()\n");
printf("x = %d y = %d\n", *px,*py);
}
5.      Adapun perubahan dalam parameter aktualnya menjadi :
tukarreference(&a,&b);
6.      Dalam deklarasi parameter :
int *px, int *py
Menyatakan bahwa px dan py adalah suatu variabel pointer. Yang dimaksudkan sebagai variabel pointer adalah suatu variabel yang menunjuk ke variabel lain. Lebih jelasnya, variabel pointer berisi alamat dari variabel lain. Pemanggilan fungsi &a dan &b masing-masing berarti alamat a dan alamat b. Dengan pemanggilan seperti ini hubungan antara variabel pointer px dan py dengan variabel a dan b adalah seperti ditunjukan gambar dibawah ini. Dalam hal ini px dikatakan menunjuk variabel a dan py menunjuk variabel b.
Contoh Program Pass By Reference:

a.       Menggunakan passing parameter (argumen)
Contoh:
/*

      Program Menghitung Volume benda geometris

*/



#include <stdio.h>

#include <stdlib.h>

#include <math.h>



#define PHI 3.14



//deklarasi fungsi

void judul();

void menu();

void volTabung(double j, double t);

void volKotak(double r);

void volBalok(double p, double l, double t);



main()

{

      judul();

      menu();

}



void judul()

{

      printf("Program Menghitung Volume Benda Geometris\n");

      printf("Programmer: Antu\n");

      printf("Nama Pacar: Balau\n");

      printf("Created 1-1-2001\n\n");

}



void menu()

{

      int pilih;

      double a, b, c;

     

      printf("MENU\n");

      printf("1. Menghitung volume tabung\n");

      printf("2. Menghitung volume kotak\n");

      printf("3. Menghitung volume balok\n\n");

      printf("Pilih nomor yg diinginkan: ");

      scanf("%d", &pilih); fflush(stdin);

     

      switch(pilih)

      {

            case 1:

                        printf("Menghitung Volume Tabung\n");

                        printf("Ketikkan nilai jari-jari:");

                        scanf("%lf", &a); fflush(stdin);

                        printf("Ketikkan nilai tinggi   : ");

                        scanf("%lf", &b); fflush(stdin);

                        volTabung(a,b); break;

           

            case 2:

                        printf("Menghitung Volume Kotak\n");

                        printf("Ketikkan nilai rusuk:");

                        scanf("%lf", &a); fflush(stdin);

                        volKotak(a); break;

            case 3:

                        printf("Menghitung Volume Balok\n");

                        printf("Ketikkan nilai panjang:");

                        scanf("%lf", &a); fflush(stdin);

                        printf("Ketikkan nilai lebar:");

                        scanf("%lf", &b); fflush(stdin);

                        printf("Ketikkan nilai tinggi:");

                        scanf("%lf", &c); fflush(stdin);

                        volBalok(a, b, c); break;

            default: printf("Nomor pilihan tidak ada!!!\n");

      }

}



void volTabung(double j, double t)

{

      double vol;

      vol = PHI * pow(j, 2) * t;

      printf("Volume Tabung tersebut = %0.2lf kubik\n", vol);

}



void volKotak(double r)

{

      double vol;

      vol = pow(r, 3);

      printf("Volume Tabung tersebut = %0.2lf kubik\n", vol);

}



void volBalok(double p, double l, double t)

{

      double vol;

      vol = p * l * t;

      printf("Volume Tabung tersebut = %0.2lf kubik\n", vol);

}

Hasilnya setelah dijalankan:

Dapat dilihat perbedaannya dengan pass by value, pada pass by reference, nilai variabel dikirim berdasarkan alamat
sehingga perubahan nilai yang terjadi pada prosecedure dapat berpengaruh
sebagai parameter keluaran, dimana nilai yang berubaha didalam procesure dapat dipanggiil keluar dari perocedure dengan catatan varibel harus dideklarasikan sendiri-sendiri.

Pengertian Parameter

Parameter adalah tempat penyimpanan (variabel) di dalam function, yang digunakan untuk melakukan pemeberian data dari pemanggil ke dalam function. Parameter terletak di antara tanda kurung ( dan ) setelah identitas dari function, dan sebuah function dapat memiliki beberapa parameter yang dipisahkan dengan tanda koma ,.

Function biasanya membutuhkan data untuk beroperasi, Yang biasa kita lalukan dalam mendapatkan data adalah dengan memanggil variabel, tapi kita harus ingat dengan peraturan variabel lokal dalam ruang lingkup. Kita tidak bisa dengan mudah mendapatkan data dari scope lain.

Hal tersebut merupakan satu alasan kenapa parameter itu ada dalam Bahasa pemrograman. Jika kita tidak bisa mendapatkan data dari scope lain secara langsung, kita bisa memberikan data tersebut saat pemanggilan function dengan perantara yaitu parameter.

Jika kita mempunyai variabel int a dalam function utama dan function kustom dengan satu parameter int b, ketika kita memberikan nilai dari variabel int a ke dalam function kustom. Kita dapat menggunakan parameter int b untuk perantara sekaligus tempat yang akan menjadi variabel local dalam function kustom. apa yang terjadi adalah Data dari int a akan di salin ke variabel int b. dengan hal itu function kustom kita akan memiliki data dari scope luar (scope pemanggil). Dan juga data tersebut akan sampai ke tujuan dengan aman.

Parameter dalam Bahasa pemrograman biasanya memiliki 2 jenis, yaitu :

    Function Parameter / Parameter Formal
    Argument / Actual Parameter

Jenis-jenis Parameter
Function Parameter
Function Parameter atau juga disebut sebagai Parameter Formal, adalah variabel lokal yang didirikan di dalam deklarasi function (bukan definisi), Yang merupakan tempat penyimpanan nilai dari argument yang diberikan saat pemanggilan function.
Function parameter berada di dalam deklarasi function, di antara tanda ( dan ) setelah identitas dari function. di dalam tanda kurung tersebut anda bisa membuat banyak parameter, dan masing-masing dipisahkan dengan tanda koma (,).

Argument
Argument adalah parameter yang menyertai pemanggilan function. merupakan tempat dimana anda bisa memberikan data untuk digunakan di dalam function yang dipanggil dan diberikan saat pemanggilan function tersebut.
Pemberian data ke dalam function kustom dapat berupa data langsung, data dari suatu variabel, data dari konstanta, data dari pengembalian function atau merupakan hasil dari operasi. Pemberian data ke dalam function harus mengikuti aturan yang telah ditetapkan oleh function parameter.
jika lebih dari 1 argument, masing-masing argument akan dipisahkan dengan tanda koma. Pemberian arguments harus sesuai dengan parameter.

Komentar

Meta Data

Laporan pratikum 2 algoritma pemograman

Jobsheet 1 PBO SMT2

Laporan Pratikum 3 algoritma pemograman

Laporan Pratikum 4 algoritma pemograman

Laporan Pratikum 5 algoritma pemograman

Jobsheet 3 PBO SMT2

Laporan Pratikum 7 algoritma pemograman