Sabtu, 07 September 2013

contoh laprak program bahasa C tentang koding membuat menu, faktorial, dan membuat persegi panjang bintang



Hai readers... ini adalah laprak ke IV dari matakuliah Algoritma Pemograman saat saya kuliah di semester 2 jurusan Teknik Informatika di Undip. 
Semoga bermanfaat ya bagi yang ingin mencari referensi. Tapi ingat, JANGAN COPAS!!!. Sebab hasil terbaik ialah jika kita mengerjakan sendiri. Khususnya bagi kamu yg merasa adik tingkat saya dan ada laprak ttg ini...  Oya, maaf jika gambarnya tidak bisa muncul, karena saya hanya copas laprak saya ke blog ini...

BAB I
PENDAHULUAN

1.1  PERMASALAHAN

1.1.1        Buatlah program – program sebagai berikut:
1.      Program yang dapat menghasilkan program "menu.exe" (terlampir), dengan asumsi rentang nilai :
85-100 = A
71-84 = B
61-70 = C
51-60 = D
0-50 = E
Selain itu = X
Petunjuk :
a. Gunakan struktur pengulangan dan percabangan untuk membuat menu
b. Gunakan fungsi agar dapat menghasilkan grade A-X
c. Perhatikan apabila program belum diisi nama dan nilai, lalu langsung memilih (3)
d. Format source code : Courier New (10) spasi 1 dan beri border.
e. Screenshot yang disertakan : dalam keadaan belum diberi nilai dan nama, menu utama, proses penginputan nama, proses penginputan nilai, dan tampilan hasil akhirnya.
2. Buatlah program yang dapat menghasilkan program "persegipanjang.exe" (terlampir). Petunjuk : Gunakan struktur percabangan dan pengulangan.
Screenshot yang disertakan : Keseluruhan program dengan inputan panjang 5 dan lebar 3, lalu panjang 3 dan lebar 10.
3  Buatlah program yang dapat menghitung proses faktorial dari suatu bilangan n.
Contoh : n=5 => 5x4x3x2x1 = 120.
       Gunakan compiler berbasis Windows (TDM-GCC, MinGW, Code::Blocks, atau DevC++) 
1.1.2        Analisa dan buatlah laporan mengenai ketiga program diatas


1.1      DASAR TEORI

Pengulangan data atau yang biasa disebut dengan looping adalah proses yang dilakukan berulang-ulang sampai batas yang ditentukan. Dengan kata lain pengulangan adalah eksekusi statement selama kondisi yang diberikan masih terpenuhi.  Biasanya jika dalam bentuk pengulangan tersebut tidak disertakan batasnya maka syntax akan error karena proses itu akan berulang hingga tak terhingga sementara variabel dalam komputer masih terbatas. Dalam bahasa C tersedia suatu fasilitas yang digunakan untuk melakukan proses pengulangan sebanyak keinginan kita. Ada beberapa jenis pengulangan  dalam bahasa C yaitu.

1.      Struktur pengulangan For
Struktur pengulangan For biasa digunakan untuk mengulang suatu proses yang telah diketahui jumlah pengulangannya. Dari segi penulisannya, srtukutr pengulangan ini tampak lebih efisien karena susunannya lebih simple dari struktur pengulangan yang lainnya. Bentuk umum pengulangan for adalah sebagai berikut.


For (inisialisasi ; syarat; penambahan)
Pernyataan/aksi;
 
 




Keterangan:
Inisialisasi        : pernyataan untuk menyatakan awal dari variabel control.
Syarat              : ekspresi relasi yang menyatakan kondisi untuk keluar dari pengulangan.
Penambahan: pengatur perubahan nilai variabel control.

2.      Struktur pengulangan While
Pengulangan while banyak digunakan pada program terstruktur. Pengulangan ini banyak digunakan bila jumlah pengulangannya belum diketahui. Proses pengulangan akan terus berlanjut selama kondisinya bernilai benar dan akan berhenti ketika kondisinya bernilai salah. Test terhadap kondisi pengulangan akan dilakukan setiap kali sebelum aksi dilaksanakan. Pengulangan ini memungkinkan menimbulkan aksi kosong karena pada test pertama kondisi pengulangan tidak terpenuhi atau bernilai false.
Capture1
Alur pengulangan While

Bentuk umumnya adalah sebagai berikut.
while(kondisi)
pernyataan;
Sebagai contoh untuk pengulangan ini kita bisa lihat potongan program berikut ini :
while((kar = getchar()) != '\n')
jumkar++;
Pernyataan di atas berarti jika tombol ENTER ditekan maka jumkar akan bertambah 1.

3.      Pengulangan dengan Do--while
Pada dasarnya struktur pengulangan ini sama saja dengan struktur while, hanya saja pada proses pengulangan dengan while., seleksi berada di while yang letaknya di atas sedangkan pada pengulangan Do--while, seleksi while berada dibawah batas pengulangan. Jadi dengan menggunakan struktur Do--while sekurang-kurangnya akan terjadi satu pengulangan. Eksekusi pada pengulangan yang pertama tidak dilakukan test terhadap kondisi berhenti sehingga memumngkinkan menimbulkan kebocoran pada program jika ada kemungkinan bahwa seharusnya aksi tidak pernah boleh dilakukan untuk kasusu yang tertentu.
Capture4
Alur pengulangan Do—while

Pernyataan do-while ini memiliki bentuk umum sebagai berikut.
 do
      pernyataan;
while (kondisi)
Sebagai contoh sederhana dapat kita lihat seperti di bawah ini :
 i=0; 
do
{
 printf("aku senang belajar bahasa C");
            i++;
      }
While  (i<=10);
Pernyataan di atas akan menghasilkan output berupa "aku senang belajar bahasa C" sebanyak sampai i bernilai kurang dari atau sama dengan 10. Jadi selama i kurang dari sama dengan 10 maka pernyataan "aku senang belajar bahasa C" akan dijalankan sampai nilai i kurang dari sama dengan 10.

4.      Pengulangan For bersarang (Nested For)
Dalam pemrograman, sering kali programmer dituntut untuk melakukan  proses pengulangan di dalam sruktur pengulangan yang sedang dilakukan. Begitupun dalam bahasa C kita dapat melakukannnya dengan menggunakan struktur for dan biasanya disebut dengan for bersarang (nested for). Bentuk umum struktur pengulangan Nested for adalah sebagai berikut.
for (inisialisasi; syarat pengulangan; pengubah nilai pecacah )
{
    for (inisialisasi; syarat pengulangan; pengubah nilai pecacah )
    {
            pernyataan / perintah;
     }
}

Didalam penggunaan nested-for, pengulangan yang di dalam terlebih dahulu dihitung hingga selesai, kemudin pengulangan yang di luar diselesaikan.
  1. Pengulangan for (;;)
Dalam notasi algoritmik, bentuk pengulangan ini disebut dengan iterasi. Mekanisme pengulangan ini adalah dengan melakukan secara otomatis aksi-1 pada ekseskusi yang pertama kemudian melakukan test terhadap kondisi berhenti. Tergantung pada kondisi berhenti yang ditest:
·         Aksi 2 akan diaktifkan dan kemudian aksi 1 yang berikutnya akan diulang, atau
·         Pengulangan dihentikan karena efek neto dari aksi 1 menghasilkan kondisi berhenti.
Pengulangan jenis ini berguna untuk kasus-kasus dimana aksi 2 bergantung pada hasil dari aksi 1. Aksi sekuensial yang dilakukan  adalah:
Aksi 1, test kondisi berhenti, [aksi 2, test kondisi berhenti], diakhiri test kondisi berhenti yang bernilai true, yang menyebabkan pengulangan berhenti.


For (;;)
{
      Aksi 1
      if (kondisi-STOP)
            exit;
      else
            Aksi 2;
}
 
 





BAB II
PEMBAHASAN

2.1 CODING
2.1.1 enum.c
/*
Nama            : Weny Ariska Yulianty / 24010312120019
Nama Program    : enum.c
Deskripsi       : Deklarasi dan pemakaian type enumerasi
Tanggal         : 17 Mei 2013
*/   


/***HEADER***/
#include<stdio.h>

/***MAIN***/
int main () {

     /* KAMUS */
     enum hari /* type */
     {
        senin, selasa, rabu, kamus, jumat, sabtu
     } hariku; //hariku : variabel
     enum
     {
        satu, dua, tiga
     } angka; //variabel
     enum
     {
        KEYWORD = 01, EXTERNAL = 03, STATIC = 04
     }; /*Sekedar enumerasi konstanta bernama, mengelompokkan*/
     typedef enum
     {
        merah, putih, kuning
     } warna; //nama tipe

     unsigned int  flags;
     warna w = kuning;

     /* ALGORITMA*/
     angka = tiga;
     printf("Angka %d \n ", angka);

     hariku = 0;
     printf("Hari %d \n ", hariku);
 
     printf("Masukkan sebuah angka [0..2] ");
     scanf("%d", &angka);
     printf("Angka %d \n", angka);

     flags = EXTERNAL;
     printf("flags %d \n", flags);
    
     printf("Warna = %d \n", w);

    getch ();
     return 0;
}

2.1.2   alay.c
/*
Nama            : Weny Ariska Yulianty / 24010312120019
Nama Program    : alay.c
Deskripsi       : Konversi string masukan jadi huruf alay
Tanggal         : 17 Mei 2013
*/   


/***HEADER***/
#include<stdio.h>

/***MAIN***/
int main () {
     /* KAMUS */
     int i, temp;
     char data[20];
     /* ALGORITMA*/
     printf("Masukkan string data = ");scanf("%s", data);
     i=0;
     while(data[i]!='\0'){
         switch (data[i]){
              case 'a' : {data[i]='@'; break; }
              case 'i' : {data[i]='1'; break; }
              case 'e' : {data[i]='3'; break; }
              case 'o' : {data[i]='0'; break; }
              case 'z' : {data[i]='2'; break; }
              case 's' : {data[i]='5'; break; }
              case 'b' : {data[i]='8'; break; }
              case 'g' : {data[i]='6'; break; }
              case ' ' : {data[i]='_'; break; }
         }
         //temp=data[i];
         if(data[i]>=97){
             data[i]-=32;
             //data[i]=temp
         }
         i++;
    }
    printf("Output : %s\n\n",data);

    getch ();
     return 0;
}

2.1.3 struk.c
/*
Nama            : Weny Ariska Yulianty / 24010312120019
Nama Program    : struk.c
Deskripsi       : Contoh pendefenisian dan pengisian struktur : Titik, mhs, meter
Tanggal         : 17 Mei 2013
*/   


/***HEADER***/
#include<stdio.h>
#include<stdlib.h>
#include<string.h>

/***MAIN***/
int main () {
     /* KAMUS */
     /* Cara 1 */
     struct {
        char nama[20];
        int nim;
        int nilai;
     } Mhs;
     /* Cara 2 */
     struct meter {
        int m;
        int cm;
     };
     struct meter M1;
     /* Cara 3 */
     typedef struct {
          float x;
          float y;
     } Point;
    
     Point P1;
     Point *P2;
     Point P3;
 
    /* ALGORITMA */
    printf("Coba Mengisi Struct\n");
    printf("===================\n");
    printf("Masukkan nilai dalam meter:");scanf("%d", &(M1.m));
    M1.cm=M1.m*100;
    printf("m=%d\ncm=%d\n", M1.m,M1.cm);

    printf("\nContoh mengisi struktur dengan assigment \n Titik P1, dengan P1.x dan P1.y:\n");
    P1.x=1.1;
    P1.y=2.5;
    printf("P1.x = %4.1f\nP1.y= %4.1f\n", P1.x,P1.y);

    /*Mengacu pointer ke struct, akan dibahas setelah pointer*/
    printf("\nTitik P2, dengan P2->x dan P2->y :\n");
    P2=(Point*) malloc(sizeof(Point));
    P2->x=9.12;
    P2->y=2.567;
    printf("P2.x = %4.1f\nP2.y = %4.1f\n", P2->x,P2->y);
   
    printf("\nMasukkan titik P3 (x,y)\n");
    scanf("%f %f",&P3.x, &P3.y);
    printf("P3.x = %4.1f\nP3.y = %4.1f\n", P3.x,P3.y);

    strcpy(Mhs.nama, "Juliette");
    Mhs.nim=7473;
    Mhs.nilai=80;
    printf("\nHasil assigment thd mhs\nNama = %s\nNim = %d\nNilai = %d\n", Mhs.nama, Mhs.nim, Mhs.nilai);
    getch ();
     return 0;
}

2.1.4  struk2.c
/*
Nama            : Weny Ariska Yulianty / 24010312120019
Nama Program    : struk2.c
Deskripsi       : contoh pendefenisian dan pengisian struktur yang mengandung string
Tanggal         : 17 Mei 2013
*/   


/***HEADER***/
#include<stdio.h>

/***MAIN***/
int main ()
{
    struct
    {
        char *nama;
        int nim;
        int nilai;
    }Mhs;
    Mhs.nama = (char *) malloc (20 * sizeof(char));
    printf("\nNama = ");
    gets(Mhs.nama);
    printf("\nNim dan nilai = ");scanf("%d %d", &Mhs.nim, &Mhs.nilai);
    printf("Hasil assigment thd Mhs \n");
    printf("Nama = %s\nNim = %d\nNilai = %d\n", Mhs.nama, Mhs.nim, Mhs.nilai);

    getch ();
     return 0;
}

2.1.5  fungsigrade.h
/*
Nama       : Weny Ariska Yulianty  /  24010312120019
Nama P           : fungsigrade.h
Deskripsi  : header file untuk prosedur dan fungsigrade
Tanggal          : 17 Mei 2013
*/

#ifndef prodfun_H
#define prodfun_H

int grade (float rata2);

#endif

2.1.6  fungsigrade.c
/*
Nama            : Weny Ariska Yulianty / 24010312120019
Nama Program    : fungsigrade.c
Deskripsi       : body prototype file untuk prosedur dan fungsi
Tanggal         : 17 April 2013
*/   

#include "fungsigrade.h"

int grade (float rata2)
{
   /*Kamus lokal*/
    char nilai;
     /*Algoritma*/
   return ( ((rata2 >= 85)&&(rata2 <=100)) ? (nilai = 'A') : ((rata2 >= 71)&&(rata2 <=84)) ? (nilai = 'B') : ((rata2 >= 61)&&(rata2 <=70)) ? (nilai = 'C') : ((rata2 >= 51)&&(rata2 <=60)) ? (nilai = 'D') : ((rata2 > 0)&&(rata2 <=50)) ? (nilai = 'E') : (nilai = 'X') );
}

2.1.7 menu.c
/*
Nama            : Weny Ariska Yulianty / 24010312120019
Nama Program    : menu.c
Deskripsi       : membuat suatu program menu dengan mengunakan struktur pengulangan for & repeat dan percabangan if & switch-case
Tanggal         : 17 Mei 2013
*/   

/***HEADER***/
#include<stdio.h>
#include "fungsigrade.h"
#include "fungsigrade.c"

/***MAIN***/
int main ()
{
    /*KAMUS*/
    int a, i, n, sum, pil;
    char nama[20], nilai;
    float rata2;
    
    /*PROGRAM*/
    strcpy (nama, "NONAME");    sum = 0;
    menu :
    system("cls");
    printf("PROGRAM INPUTAN NILAI\n");
    printf("=====================\n");
    printf("Pilih salah satu :\n");
    printf("(1) Masukkan nama\n(2) Masukkan nilai\n(3) Tampilan hasil nilai akhir\n(9) Keluar program");
    printf("\n======================\n");
    printf("Pilihan Anda : ");    
    scanf("%d", &pil);
   
    switch(pil)
          {
          case 1:
             { 
              printf("Masukkan nama [NO SPASE] : ");
              scanf("%s", nama);
              printf("Nama terinput --> %s\n", nama);
              printf("press any key to continue...\n");
              getch (); goto menu;
             }

           case 2:
             {
              printf("Masukkan banyaknya nilai yang akan diinput : ");scanf("%d", &n);
              for (i = 1; i <= n; i++)                    
              {
                  printf ("Masukkan nilai ke-%d : ", i);
                  scanf("%d", &a);
                   sum = sum + a;
              }
              printf("Nilai total yang terinput --> %d\n", sum);
              printf("press any key to continue...\n");
              getch (); goto menu;
             }
                   
           case 3:
             {           
              printf("Nama                    : %s\n", nama);
              rata2 = sum / n;
              printf("Nilai total             : %d\n", sum);
               printf("Nilai akhir (rata-rata) :%4.1f (%c)\n", rata2, grade(rata2));
               printf("press any key to continue...\n");
              getch(); goto menu;
                    }
           case 9: 
             {
              printf("\n ~~~ THANK YOU ~~~\n\n ^_^ KAMSAHAMNIDA ^_^\n");
              printf("\npress any key to continue...\n");
              getch();
              return 0;}
           default:
             {
              printf("Masukkan salah, coba ulangi lagi . . .\n");
              printf("press any key to continue...\n");
              getch(); goto menu;
             };
            }
    getch ();
    return 0;
}

2.1.8 persegipanjang.c
/*
Nama            : Weny Ariska Yulianty / 24010312120019
Nama Program    : persegipanjang.c
Deskripsi       : menggambar persegi panjang dengan menggunakan struktur perulangan for dan percabangan if
Tanggal         : 17 mei 2013
*/   

#include<stdio.h>

int
main ()
{
     /* Kamus */
     int i, j;
     int p;
     int l;
    
     /* Algoritma*/
     printf("Menggambar Persegi Panjang ^^v\n");
     printf("Masukan sisi panjang [integer & >=3] : "); scanf("%d", &p);
     printf("Masukan sisi lebar [integer & >=3] : "); scanf("%d", &l);
     for (i=1;i<=l;i++)
         {
            for (j=1;j<=p;j++)
            {
                if ((i == 1) || (i == l))
                     printf("* ");
                else if ((j == 1) || (j == p))
                     printf("* ");
                else
                     printf("  ");
            }
            printf("\n");
         }
     getch ();
     return 0;
}

2.1.9 faktorial.c
/*
Nama            : Weny Ariska Yulianty / 24010312120019
Nama Program    : faktorial.c
Deskripsi       : Menghitung proses faktorial dari suat bilangan n
Tanggal         : 17 mei 2013
*/   

#include<stdio.h>

int
main ()
{
     /* Kamus */
     int i;
     int N;
     int faktorial;
    
     /* Algoritma*/
     printf("masukan bilangan n faktorial= ");
     scanf("%d", &N);
     faktorial=1;
     for (i = N; i >= 1; i--)
     {
       faktorial = i * faktorial;
       if (i > 1)
           {printf ("%d X ", i);}
       else {printf ("%d", i);}
     }
     printf("= %d", faktorial);

     getch ();
     return 0;
}


2.2  PEMBAHASAN CODING
2.2.1 menu.c
        menu.c adalah sebuah program yang menampilkan sebuah menu

2.2.2 persegipanjang .c

2.2.3 faktorial.c


2.3  SCREENSHOT
2.3.1 enum.c
2.3.2 alay.c

2.3.3 struk.c
2.3.4 struk2.c

2.3.5 menu.c






2.3.6 persegipanjang.c

2.3.7faktorial.c



DAFTAR PUSTAKA

Anonim. 2012. “Pengulangan Pada Bahasa C”. Dalam http://ncuzalleen.blogspot.com/2012/11/pengulangan-pada-bahasa-c.html.

Jemz. 2013. “Pengulangan dalam Bahasa C”. Dalam http://zagaLarupa.blogspot.com/2013/02/pengulangan-dalam-bahasa-c.html

Junian, Aan. 2013. “Struktur Kontrol Pengulangan Bahasa C”. Dalam http://aanjunian.blogspot.com/2013/04/struktur-kontrol-pengulangan-bahasa-c.html.

Liem, Inggriani. 2003. “Contoh Program Kecil dalam Bahasa C”. Bandung: Teknik Informatika ITB.
Liem, Inggriani. 2003. “Draft Diktat Kuliah Dasar Pemrograman” (Bagian Pemrograman Prosedural).  Bandung: Teknik Informatika ITB.

Mashudi, Nur. 2013. “Operasi Penyeleksi Kondisi dan Operasi Pengulangan Bahasa C”. Dalam http://nurmashudi.wordpress.com/2013/01/01/operasi-penyeleksi-kondisi-dan-operasi-pengulangan-bahasa-c/..



Tidak ada komentar:

Posting Komentar