Selasa, 03 April 2018

Contoh Laporan Algoritma dan Struktur Data Tentang Fungsi dan Tipe Data

Assalamu'alaikum ...
Disini saya akan membagikan sedikit ilmu tentang laporan algoritma dan struktur data.
Langsung saja ya kita mulai hehe ..





LAPORAN PRAKTIKUM
ALGORITMA DAN STRUKTUR DATA
Diajukan untuk memenuhi salah satu tugas Mata Kuliah Algoritma dan Struktur Data yang diampu oleh :
Heni Sulastri, S.T., M.T.





Oleh,
Fadilah Salsabila
177006006


JURUSAN TEKNIK INFORMATIKA
FAKULTAS TEKNIK UNIVERSITAS SILIWANGI
Jl. Siiwangi No.24 Tasikmalaya Kotak Pos 164 Tlp. (0265) 323537
2018


PERTEMUAN 2
FUNGSI DAN TIPE DATA
1.1    Tujuan Praktikum
 Praktikan diharapkan dapat :
a.       Mengetahui dan memahami konsep fungsi dan tipe data.
b.      Mengimplementasikan fungsi dan tipe data ke dalam suatu program dengan menggunakan bahasa C/C++.
1.2    Dasar Teori
                 Fungsi dalam bahasa C adalah sekumpulan kode yang ditaruh dalam sebuah blok dan dibuat untuk menjalankan tugas khusus. Salah satu tujuan dari penggunaan fungsi dalam pemrograman seperti pada bahasa C adalah untuk membuat program lebih terstruktur dan efisien sehingga program tersebut mudah dipahami atau dibaca alur programnya.

Penggunaan fungsi membuat program jadi lebih efisien karena mengurangi pengulangan penulisan kode yang sama. Hal ini karena jika sekelompok kode sudah dibuat fungsi maka selanjutnya kita tinggal memanggil nama fungsinya saja beserta parameter yang menyertainya jika ada. Sebuah fungsi tidak dijalankan secara otomatis saat program dijalankan karena fungsi berada diluar rutin program utama yang berjalan dan hanya dijalankan jika fungsi dipanggil saja.
                 Tipe data atau kadang disingkat dengan ‘tipe’ saja adalah sebuah pengelompokan data untuk memberitahu compiler atau interpreter bagaimana programmer ingin mengolah data tersebut.
Jenis-jenis Tipe Data dalam Bahasa C
1. Tipe Data Dasar
Sesuai dengan namanya, tipe data dasar adalah tipe data paling dasar yang tersedia di dalam bahasa pemrograman C. Terdapat 3 jenis tipe data dasar:
  • Char: tipe data yang berisi 1 huruf atau 1 karakter.
  • Integer: tipe data untuk menampung angka bulat.
  • Float: tipe data untuk menampung angka pecahan.
Tipe data dasar dasar disebut juga sebagai Primary Data Type, Fundamental Data Types atau Basic Data Type.
2. Tipe Data Turunan
Tipe data turunan berasal dari tipe data dasar yang dikelompokkan atau di modifikasi. Terdapat 3 tipe data turunan di dalam bahasa pemrograman C:
  • Array: Tipe data yang terdiri dari kumpulan tipe data dasar. Tipe data tersebut harus 1 jenis.
  • Structure: Tipe data yang terdiri dari kumpulan tipe data dasar. Tipe data tersebut bisa lebih dari 1 jenis.
  • Pointer: Tipe data untuk mengakses alamat memory secara langsung.
3. Tipe Data Bentukan (enum)
Sesuai dengan namanya, tipe data bentukan adalah tipe data yang dibuat sendiri oleh kita (programmer). Isinya berupa data-data yang sudah ditentukan. Tipe data bentukan ini dikenal juga sebagai Enumerated Data Type atau disingkat sebagai enum.
4. Tipe Data Void
Tipe data void adalah tipe data khusus yang menyatakan tidak ada data. Penggunaannya khusus untuk beberapa situasi seperti function yang tidak mengembalikan nilai (return void), atau mengisi argumen function dengan nilai kosong.
Tanpa pengelompokan, berikut ke-8 tipe data dalam bahasa pemrograman C:
  1. Char
  2. Integer
  3. Float
  4. Array
  5. Structure
  6. Pointer
  7. Enum
  8. Void
1.3    Latihan
/* File Luas Keliling.cpp *\
#Include <stdio.h>
int luas(int a, int b) {
     return (a*b);
}
int keliling(int a, int b) {
     return 2*(a+b);
}
int main () {
   int a, b ;
   printf("Masukkan Panjang = "); scanf("%d", &a);
   printf("Masukkan Lebar   = "); scanf("%d", &b);
   printf("\n");
   printf("Luas Persegi Panjang     = %d\n", luas (a, b));
   printf("Keliling Persegi Panjang = %d\n", keliling (a, b));
   return 0;
 }
Tampilan

Analisis :
Program di atas menggunakan 2 macam fungsi, yaitu fungsi untuk menghitung luas dan fungsi untuk menghitung keliling. Adapun perintah penginputan angka dan penampilan hasil tidak dibuatkan fungsi, melainkan langsung ditempatkan pada main programnya. Untuk menampilkan hasil perhitungannya, dilakukan pemanggilan fungsi yang bersangkutan. Luas(a, b) untuk memanggil fungsi perhitungan luas persegi panjang, dan keliling(a, b) untuk memanggil fungsi perhitungan keliling persegi panjang. Program tersebut mendeklarasikan a sebagai panjang, dan b sebagai lebarnya.

/* File Luas Keliling 2.cpp *\
#include <stdio.h>
typedef int bulat;

bulat luas(bulat a, bulat b){
            return (a*b);
}
bulat keliling(bulat a, bulat b) {
            return 2*(a+b);
}

bulat main()
{
bulat a, b;
     printf("Masukkan Panjang = "); scanf("%d", &a);
     printf("Masukkan Lebar   = "); scanf("%d", &b);
     printf("\n");
     printf("Luas Persegi Panjang     = %d\n", luas (a, b));
     printf("Keliling Persegi Panjang = %d\n", keliling (a, b));
     return 0;
 }
Tampilan

Analisis :
Program ini menggunakan perintah typedef, yaitu suatu tipe data bentukan yang merupakan alias dari tipe data primitif int. Tipe data bentukan dalam program inidiberi nama bulat. Selanjutnya, pendeklarasian variabel a dan b dapat secara langsung menggunakan aliasnya saja, bukan lagi menggunakan tipe data primitif int. Dapat dilihat pada program di atas, tipe data primitif int diubah dengan bulat.

/* File Luas Keliling 3.cpp *\
#Include <stdio.h>
typedef int bulat;
struct PersegiPanjang {
            bulat panjang;
            bulat lebar;
};
bulat luas(bulat a, bulat b){
            return (a*b);
}
bulat keliling(bulat a, bulat b) {
            return 2*(a+b);
}
bulat main() {
struct PersegiPanjang pp;
        printf("Masukkan Panjang = "); scanf("%d", &pp.panjang);
        printf("Masukkan Lebar   = "); scanf("%d", &pp.lebar);
        printf("\n");
 printf("Luas Persegi Panjang  = %d\n", luas (pp.panjang, pp.lebar));
        printf("Keliling Persegi Panjang = %d\n", keliling (pp.panjang, pp.lebar));
        return 0;
 }
#Include <stdio.h>
typedef int bulat;
typedef struct {
      bulat panjang;
      bulat lebar;
}     PersegiPanjang;
bulat luas(PersegiPanjang pp) {
      return (pp.panjang * pp.lebar);
}
bulat keliling(PersegiPanjang pp) {
       return 2*(pp.panjang + pp.lebar);
}
bulat main() {
       PersegiPanjang pp;
       printf("Masukkan Panjang = "); scanf("%d", &pp.panjang);
       printf("Masukkan Lebar   = "); scanf("%d", &pp.lebar);
       printf("\n");
       printf("Luas Persegi Panjang     = %d\n", luas (pp));
       printf("Keliling Persegi Panjang = %d\n", keliling (pp));
       return 0;
 }
Tampilan

Analisis :
Program keduan diatas sama-sama menggunakan perintah struct (struktur), namun bentuknya berbeda. Struct ini hampir sama prinsipnya dengan record. Berbeda dengan array yang hanya dapat menyimpan kumpulan data dengan tipe data yang sama. Struct memiliki bentuk khusus yang memungkinkan kita mengelompokkan beberapa data dengan berbagai tipe data ke dalam satu unit data. Struct disebut juga user-defined type karena untuk penentuan jenis data apa saja yang ingin disimpan dalam sebuahstruct, terserah sipemrogram yang membuatnya.
            Bentuk struct program 1 :
structPersegiPanjang {
      bulat a;
      bulat b;
};
Jika bentuknya seperti itu, maka di main program dideklarasikan :struct PersegiPanjangpp;
PersegiPanjang sebagai nama strukturnya, dan pp adalah nama variabelnya, supaya lebih singkat dalam pemanggilannya.
Untuk pemanggilan fungsi luas dan kelilingnya, karena sudah menggunakan struct, maka menjadi pp.a dan pp.b.
            Bentuk struct program 2 :
typedefstruct {
      bulat a;
      bulat b;
}PersegiPanjang;
Bentuk struktur program 2 ini sekaligus menjadi tipe data bentukan karena disertai perintah typedef. Perbedaannya, nama struct-nya diletakkan di akhir. Berbeda dengan program 3.1 yang diletakkan setelah perintah structnya sendiri.
Karena menggunakan typedef, pendeklarasian pada main programnya menjadi :PersegiPanjangpp; atau tanpa disertakan kata struct-nya. Program 3.2 juga sudah menggunakan fungsi input Persegi Panjangu ntuk proses penginputan bilangan. Fungsi tersebut dipanggil dengan perintah pp=inputPersegiPanjang();



/* File Waktu 1.cpp *\
#Include <stdio.h>
typedef struct {
            int HH, MM, SS;
} WAKTU;

WAKTU inputWaktu() {
            WAKTU w;
            printf("Masukkan Jam   = "); scanf("%d", &w.HH);
            printf("Masukkan Menit = "); scanf("%d", &w.MM);
            printf("Masukkan Detik = "); scanf("%d", &w.SS);
            printf("\n");
            return w;
}
void tampilkanWaktu(WAKTU w) {
            printf("WAKTU %d:%d:%d\n", w.HH, w.MM, w.SS);
}
int isWaktuValid(WAKTU w) {
            return w.HH >= 0 &&w.HH <= 23
                   &&w.MM >= 0 &&w.MM <= 59
                   &&w.SS >= 0 &&w.SS <= 59
  ;
}

int main () {
            WAKTU w;
            w=inputWaktu();
            if (isWaktuValid(w)){
            tampilkanWaktu(w);
            }
            else {
            printf("WAKTU tidak valid\n");
            }
            return 0;

}
Tampilan

/* File Waktu 2.cpp *\
#Include <stdio.h>
typedef struct {
            int HH, MM, SS;
} WAKTU;
void tampilkanWaktu(WAKTU w) {
            printf("WAKTU %d:%d:%d\n", w.HH, w.MM, w.SS);
}
int isWaktuValid(WAKTU w) {
            return w.HH >= 0 &&w.HH <= 23
                   &&w.MM >= 0 &&w.MM <= 59
                   &&w.SS >= 0 &&w.SS <= 59
  ;
}
WAKTU inputWaktu() {
            WAKTU w;
            do {
            printf("Masukkan Jam   = "); scanf("%d", &w.HH);
            printf("Masukkan Menit = "); scanf("%d", &w.MM);
            printf("Masukkan Detik = "); scanf("%d", &w.SS);
            printf("\n");
            } while(!isWaktuValid(w));
            return w;
}
int main () {
            WAKTU w;
            w=inputWaktu();
            tampilkanWaktu(w);
            return 0;
}
Tampilan

Analisis:
Program 1 dan 2 di atas menggunakan tipe data bentukan (typedef) berbentuk struct bernama jam yang elemen-elemennya terdiri dari HH (jam), MM (menit), dan SS (detik). Kedua program tersebut menggunakan prosedur untuk menginputkan jam, mengecek kevalidan jam, dan menampilkan jam yang sudah valid. Adapun syarat jam atau waktu yang valid ialah jam (0-23), menit (0-59), dan detik (0-59).
Perbedaan dari source code program tersebut terletak pada saat waktu dinyatakan tidak valid. Untuk program 1, jika waktu tidak valid akan muncul string “Jam tidak valid”. Terlihat pada source code di main programnya terdapat pemilihan if-then-else. Adapun program 2 menggunakan perintah pengulangan do-while padaintis JamValid, yang jika waktu tidak valid maka perintah input data waktu akan terus dilakukan hingga data waktu yang diinputkannya benar dan valid.


1.4    Tugas
1.      Buat tipe data mahasiswa menggunakan struct dengan anggota :
a.       NPM  <string/char>
b.      Nama <string>
c.       Tanggal Lahir <tanggal, bulan, tahun>
d.      Kelas <char>
e.       IPK  <float>
2.      Buat fungsi untuk menginputkan data mahasiswa.
3.      Buat fungsi untuk menampilkan data mahasiswa.

/* File mahasiswa.cpp *\
#Include <stdio.h>
#include <stdio.h>
#include <stdlib.h>

struct TanggalLahir{
            int Tanggal, Bulan, Tahun;
};

typedef struct mahasiswa{
            char NPM[10];
            char Nama[25];
            struct TanggalLahir born;
            char Kelas[2];
            float IPK;
} mahasiswa;

mahasiswa inputData() {
            mahasiswa mhs;
            printf("      --------------------\n");
            printf("      INPUT DATA MAHASISWA\n");
            printf("      --------------------\n");
            printf("Masukkan Nama   : "); scanf("%[^\n]",&mhs.Nama);
            printf("Masukkan NPM    : "); scanf("%s",&mhs.NPM);
            printf("\n");
            printf("Masukkan Tanggal Lahir\n");
            printf(">>Tanggal : "); scanf("%d",&mhs.born.Tanggal);
            printf(">>Bulan   : "); scanf("%d",&mhs.born.Bulan);
            printf(">>Tahun   : "); scanf("%d",&mhs.born.Tahun);
            printf("\n");
            printf("Masukkan Kelas  : "); scanf("%s",&mhs.Kelas);
            printf("Masukkan IPK    : "); scanf("%f",&mhs.IPK);
            return mhs;
}

mahasiswa tampilanData (mahasiswa mhs){
            printf("             ------\n");
            printf("             OUTPUT\n");
            printf("             ------\n");
            printf("Nama              : %s\n",mhs.Nama);
            printf("NPM               : %s\n",mhs.NPM);
            printf("Tanggal Lahir   : %d-%d-%d\n",mhs.born.Tanggal,mhs.born.Bulan,mhs.born.Tahun);
            printf("Kelas             : %s\n",mhs.Kelas);
            printf("IPK               : %.2f\n",mhs.IPK);
}

int main() {
            mahasiswa mhs;
            mhs = inputData();
            printf("\n");
            tampilanData(mhs);
            getchar();
            getchar();
            return 0;
}
Tampilan

Analisis :
Program di atas merupakan program untuk menginputkan dan menampilkan data mahasiswa dengan menggunakan nested struct atau dengan kata lain ‘ada struct di dalam struct’. Nested structure merupakan suatu structure yang dapat digunakan di dalam structure yang lainnya.
Pada program di atas, struct utamanya yaitu struct mahasiswa yang dijadikan sebagai tipe bentukan menggunakan perintah typedef. Struct mahasiswa ini memiliki elemen NPM, Nama, struct Tanggal Lahir bernama born, Kelas, dan IPK. Adapun struct bagiannya yaitu struct TanggalLahir yang dapat menyimpan Tanggal, Bulan, dan Tahun.


Mohon kritik dan saran yang membangun agar saya dapat memperbaiki laporan selanjutnya. Terima Kasih mohon maaf apabila ada kesalahan semoga bermanfaat :).

Tidak ada komentar:

Posting Komentar

Contoh Laporan Algoritma dan Struktur Data Tentang Fungsi dan Tipe Data

Assalamu'alaikum ... Disini saya akan membagikan sedikit ilmu tentang laporan algoritma dan struktur data. Langsung saja ya kita mulai...