Wednesday, October 10, 2018

Programming Using C++

Repetition


Repetition adalah satu atau lebih intruksi yang diulang dalam waktu tertentu
Repetition dalam C++ ada 3 yaitu :

  • For
  • While
  • Do-while


For

syntax : 
for (inisiasi;kondisi;penambahan/pengurangan){
      statement ;
}
contoh :

#include<stdio.h>
int main(){
int i,a,b
for(a=0;a<i;a++){
     for(b=0;b<i;b++){
         prinf("*");
        } 
      printf("\n");
    }
  return 0;
}

Ada 2 jenis Loop yaitu :
  1. Infinitive loop yang dimana loop nya tidak akan pernah selesai
  2. nested loop yang dimana didalam loop akan ada looping lgi

While

syntax : while(exp){
  statement1;
  statement2;
   …..
}
contoh : 
#include<stdio.h>
void main() {
   int x = 1;
   while (x<=10) {
        printf( "%d\n", x );
        x++;
   }
}

Do-While

syntax :
do { <statement >;
}while ( kondisi);
contoh : do{
     printf(”%d\n”,counter);
} while(++counter <=10);


Contoh repetition yang lebih dari 1 :


#include <stdio.h>


int main()
{
    int i,a,b;
    
    for(a=0;a<i;a++){
        for(b=0;b<i;b++){
            if(i%2=0){
                printf("*");
            }
    else{printf("#");}
    }
        printf("\n");
        }
}





POINTERS DAN ARRAYS

Pointer

Pointer adalah variabel yang digunakan untuk menyimpan alamat variabel lain .
Syntax : 
 <type> *ptr_name;
Contoh :
int a  , *ptr;
ptr = &a;

//yang dimana artinya *ptr = a karena alamatnya sama

Pointer to Pointer 

syntax : 
<type> **ptr_ptr;
Contoh : 
int a,*ptr , **ptr_ptr;
ptr = &a;
ptr_ptr = &ptr;

Pointer konstan dan Pointer variabel
  • Pointer Konstan adalah  pointer yang tidak dapat ditugaskan dengan nilai baru pada saat run-time
  • Pointer Variabel adalah pointer yang dapat ditugaskan dengan nilai baru pada saat run-tim
Note : Arrays termasuk dalam Pointer Konstan tetapi dapat diisi Pointer variabel

Arrays

Arrays adalah data yang disimpan dalam struktur tertentu yang digunakan dalam bentuk grup atau individual .

Karakter Arrays:
-Homogenous
 Yang dimana semua tipe data nya sama
-Random Access
 Setiap elemen dapat diakses secara acak tanpa harus berurutan

Jenis-Jenis Arrays :
-Arrays Satu Dimensi
 Syntax :
 type array_name [value_dim];
 Contoh :
 int a [100];

-Arrays Dua Dimensi
 Syntax :
 type name_array[row][column];
 Contoh :
 int a[3][5]; // akan tercipta 3 baris dan 5 kolom

-Arrays Tiga Dimensi
Syntax :
type name_array[row][column][depth];
Contoh:
int a[3][4][2];

Inisisasi Arrays
Arrays dapat diinisialisasi secara eksplisit tanpa deklarasi nilai dimensi.
Contoh 1 :
int a[ ] = { 1 , 2 , 3 , 4 };
Contoh 2 :
int a[5] ={1,2,3,0,0};  //value dimensi nya harus diberi ekstra slot seperti kita hanya ingin                                                        //memasukkan 3 karakter tapi value dimensinya dapat diisi 4 atau 5 agar tidak                                      //error

Mengakses Arrays
Ada 2 cara yaitu : 
- *(a+2)    // untuk mengakses data ke-2
- a[2]        // untuk mengakses data ke-2

Menetapkan Nilai Arrays 
Contoh : 
int a[ ] = { 1 , 2 , 3 , 4 };
//terdapat 4 data dan dimulai dari data 0 yaitu 1 , maka jika kita ingin memunculkan data terakhir        //maka dapat dituliskan a[3]


String

String adalah array karakter yang diakhiri dengan karakter kosong

String konstan adalah beberapa karakter yang ditulis didalam 2 simbol kutipan ganda
Contoh : "Binus University"

Perbedaan String dan Char
- String ditulis didalam 2 simbol kutipan ganda sedangkan Char ditulis didalam 2 simbol kutipan           tunggal
 Contoh : char 'a' // character
                char "A" //string

Memanipulasi string menggunakan library include<string.h> yang menyediakan banyak pilihan untuk memanipulasi string seperti strlen , strcpy , strcmp , dll .


Function And Recursion



Function Structure 


return-value-type function-name (parameter-list){
statements;
}

return-value-type : tipe data dari nilai yang dikembalikan
Jika tidak diisi, maka tipe data default akan digunakan (bilangan bulat default)
Jika return-value-type batal maka fungsi tidak akan mengembalikan nilai

Contoh :
int maximum (int x, int y){
        int max = x;
        if ( y > max) max = y;
        return max
}
//cara memanggil function
void main(){
   int a,b;
   printf("Masukkan 2 bilangan genap : ");
   scanf("%d %d",&a,&b);
   printf("Nilai Terbesar adalah: %d\n",maximum(a,b));
}




Recursive




Recursive adalah sebuah function yang memanggil dirinya sendiri 

Recursive memiliki 2 komponen :
-Base Case :mengembalikan nilai (konstan) tanpa memanggil panggilan rekursif berikutnya.
-Reduction Step :urutan nilai input konvergen ke case dasar.
Contoh:
1.Faktorial-Recursive
long factor(int n){
if(n==0)return (1);
else return(n*factor(n-1));
}
2.Faktorial-Iterative
long factor(int n){
long i,fac=1;
for(i=1;i<=n;i++) fac*=1;
return (fac);
}

CLOUD

  • Cloud mengacu pada jaringan atau internet, yang hadir di tempat tertentu yang dapat diakses dari ruang mana pun melalui jaringan publik atau jaringan pribadi
  • Cloud computing mengacu pada pengelolaan, konfigurasi, dan mengakses aplikasi secara online yang menawarkan penyimpanan data online, komputasi, infrastruktur jaringan, dan aplikasi yang dikirim sebagai layanan jaringan
  • Cloud computing cenderung memisahkan infrastruktur dengan bisnis, sedangkan istilah "infrastruktur" merujuk pada perangkat keras, jaringan, dan perangkat lunak, yang dikelola sebagai satu kesatuan. Dan istilah "Bisnis" mengacu pada alur kerja prosedural, penegakan strategis, dll



CLOUD COMPUTING IDEA


  • Infrastruktur IT-terpisah dari sistem utama, dikelola secara terpisah oleh satu pihak, dapat diakses, di mana saja melalui internet dan dapat berbagi
  • Menggunakan cloud berarti mengalihdayakan "infrastruktur" manajemen dan risiko kepada pihak ketiga, dan perusahaan bisa lebih fokus pada "bisnis"
  • Efisiensi pada penyediaan infrastruktur, pemanfaatan dan manajemen, terkait dengan adopsi teknologi baru: pusat data yang ditentukan perangkat lunak, kerangka kerja aplikasi instan, otomatisasi, analisis, dll
 

Contoh Penerapan Cloud:

  • Jaringan sosial : Facebook , Instagram , dll
  • Pembagian data : email , dropbox,dll
  • Pendidikan : Smart Campus , E-library , E-learning, dll
  • Bisnis : Online Shop Portal , Google Doc, dll
  • HPC untuk durasi terbatas : efisiensi untuk beban kerja komputasi yang besar

Keuntungan Cloud:

  • Biaya sumber daya komputasi yang lebih rendah
  • Peningkatan kinerja yang fleksibel
  • Mengurangi biaya perangkat lunak / perangkat keras
  • Mengurangi batasan kapasitas penyimpanan
  • Peningkatan keandalan data
  • Akses data universal
  • Independensi perangkat

Kerugian Cloud: 

  • Membutuhkan koneksi internet yang konstan
  • Fitur mungkin terbatas
  • Keprihatinan mengenai kinerja / kecepatan 
  • Kekhawatiran mengenai keamanan data
  • Tidak berfungsi dengan koneksi berkecepatan rendah

File Processing:

  • File dan Streams
  • Definisi File
  • Membuka file
  • menututup File
  • Input file dan Output file
1.File dan streams
Stream adalah urutan karakter. Semua data input dan output adalah stream. C melihat file sebagai stream.
Ketika program C berjalan , ada 3 stream standar yang aktif , yaitu :
     1. Stream Input Standar  ( file pointer nya stdin)
     Mengontrol stream masukan dari keyboard
     2. Stream Output Standar (file pointer nya stdout)
     Mengontrol stream output ke monitor
     3. Stream Kesalahan Standar ( file pointernya stderr)
     Mengontrol error yang terjadi
Note : Setiap stream terhubung dengan sebuah file

2.Definisi File


  • File adalah kumpulan Record
  • Record adalah kumpulan Field
  • Field adalah blok dari byte
  • Byte adalah kumpulan bit

  • typedef struct  {
       int level; // isi/level kosong dari buffer
       unsigned flags; //Tanda status file
       char fd; // Deskripsi file
       unsigned char hold; // Abaikan char jika tidak ada buffer
       int bsize; // Ukuran Buffer
       unsigned char                      // Transfer Data buffer 
       unsigned char        //  Penunjuk aktif saat ini
       unsigned istemp; // Indikator file sementara   
       short token; //Digunakan untuk pengecekan validitas
    }  FILE;     
    Buffer Area

    Buffer area adalah bagian dari memori yang digunakan sebagai ruang sementara sebelum data dipindahkan ke file.
    • Sintaks:
    FILE * fp;
    Di mana fp adalah file pointer yang menunjuk ke awal area buffer.
    • Juga dikenal sebagai penghitung aliran.

    3.Open File
    Membuka file dengan menggunakan fopen():
    fopen() mengembalikan pointer ke awal area buffer. Null akan dikembalikan jika file tidak dapat dibuka.
    Membuka File menggunakan fopen():
    Nilai mode yang memungkinkan:
    Mode     Deskripsi
    "R"       membuka file untuk dibaca.
    "W"      membuat file yang akan ditulis.
    "A"       membuka File untuk menambahkan data.
    "R +"    membuka File untuk membaca / menulis.
    "W +"   membuat file untuk dibaca / ditulis.
    "A +"    membuka File untuk dibaca / ditambahkan
    "Rb"     membuka File (biner) untuk dibaca.
    "WB"    membuat file (biner) untuk operasi tulis.

    4.Close File
    Menutup File menggunakan fclose ():

    int fclose (FILE * stream);

    • fclose () didefinisikan pada <stdio.h>
    • fclose () akan mengembalikan 0 jika berhasil, dan EOF jika kesalahan
    • EOF (End Of File) setara dengan -1
    • fclose () akan merilis area buffer dan segera mengirim data yang tersisa ke file.


    Menutup File menggunakan fcloseall ():

    int fcloseall (void);

    • Close all mengaktifkan stream kecuali: stdin, stdout, stdprn, stderr, dan stdaux
    • Akan mengembalikan jumlah aliran yang ditutup jika berhasil, dan mengembalikan EOF sebagai gantinya.
    • Header file <stdio.h>
    5.Input dan Output file

    fgetc (INPUT)
    • Baca satu karakter dari file
    • fgetc (stdin) setara dengan getchar ()
    • Syntax: int fgetc (FILE * stream);
    • Kembalikan karakter ketika berhasil, dan EOF saat kesalahan
    fputc(OUTPUT)
    • Menulis satu karakter ke file
    • fputc ('a', stdout) mirip dengan putchar ('a')
    • Syntax: int fputc (int c, FILE * stream);
    • Kembalikan karakter ketika berhasil, dan EOF jika ada kesalahan
    fgets(INPUT)
    • Syntax: char * fgets (char * string, int n, FILE * stream);
    • Baca satu baris dari file yang diakhiri dengan baris baru, atau maksimum jumlah karakter n-1.
    • Kembalikan string jika berhasil dan NULL saat kesalahan
    fputs(OUTPUT)
    • Menulis baris ke file
    • Syntax: int fputs (const char * string, FILE * stream);
    • Kembalikan nilai non-negatif ketika berhasil dan EOF jika kesalahan.
    fscanf(INPUT)
    • Syntax : int fscanf (FILE * stream, const char * format [, argumen] ...);
    • Baca data dari file inline dengan pemformatan scanf.
    • Kembalikan jumlah bidang yang dibaca saat berhasil, dan EOF jika ada kesalahan
    fprintf(OUTPUT)
    • Syntax : int fprintf (FILE * stream, const char * format [, argumen] ...);
    • Menulis data ke file menggunakan format printf.
    • Kembalikan jumlah byte yang ditulis jika nilai berhasil dan negatif jika kesalahan.
    fwrite
    • Syntax: size_t fwrite (const void * buffer, ukuran size_t, penghitungan size_t, FILE * stream);
    • Menulis blok data di area buffer ke file
    • Kembalikan jumlah data byte yang ditulis, dan kesalahan sebaliknya.
    fread
    • Syntax: size_t fread (void * buffer, size_t size, count size_t, FILE * stream);
    • Baca ukuran blok data dari file
    feof
    • Syntax: int feof (FILE * stream);
    • Cari tahu apakah penunjuk telah mencapai akhir file
    • Kembalikan 0 jika bukan akhir file


    Sorting and Searching in C++

    Sorting                                                                                                                                                     

    Sorting digunakan untuk mengurutkan suatu daftar dengan ascending maupun descending
    Ada beberapa jenis sorting :
    1.Bubble Sort
      - Membandingkan dua nilai antara 2 pasangan 
      - Membandingkan dan menukarkan (Jika diperlukan)
      - Dikenal juga dengan Exchange Sort
      Contoh Codingannya : 
    void Bubble(int *DataArr, int n)
    {
        int i, j;
        for(i=1; i<n; i++)
        for(j=n-1; j>=i; j--)
        if(DataArr[j-1] > DataArr[j])
                   Swap(&DataArr[j-1],&DataArr[j]);
    }

    2.Selection Sort
    Algoritmanya : 
    for(i=0; i<N-1; i++){      /* N=number of data */
      Set idx_smallest equal to i
      for(j=i+1; j<N; j++){
      If array[ j ] < array [ idx_smallest ] then idx_smallest = j
        }
      Swap array[ i ] with array[ idx_smallest ]
    }
    3.Insertion Sort
    Algoritmanya :
    for(i=1; i<n; i++) {
         x = A[i], insert x to its suitable place between A[0] and A[i-1].
    }
    4.Quick Sort
    Algoritmanya : 
    void QuickSort(int left, int right)
    {
          if(left < right){
                //arrange elements  R[left],...,R[right] that
                //producing new sequence:
                R[left],...,R[J-1] < R[J] and R[J+1],...,R[right] > R[J].
                QuickSort(left, J-1);
                QuickSort(J+1, right);
           }
    }
    5.Merge Sort
      -Merge Sort adalah algoritma pengurutan berdasarkan algoritma divide-and-conquer
      -Divide-and-conquer adalah paradigma desain algoritma umum
         1.Divide: membagi input data dalam dua subset yang disatukan
         2.Recur: pecahkan masalah sub yang terkait dengan subhimpunan
         3.Conquer: menggabungkan solusi untuk setiap bagian menjadi solusi


    Searching


    Programer akan sering bekerja dengan sejumlah besar data yang disimpan dalam array 
    Sehingga kita perlu menentukan apakah array tersebut memiliki nilai yang kita cari dengan mencarinya dengan kata kunci 
    Proses pencarian inilah yang dinamakan Searching .

     Searching adalah tindakan untuk mengambil informasi berdasarkan Key(kunci) tertentu dari beberapa       informasi yang disimpan.

    Key digunakan untuk melakukan pencarian rekaman yang diinginkan dari satu set daftar data
    Key harus unik, artinya tidak boleh ada kunci yang sama dalam data
    Contoh:
    Data siswa terdiri dari nama, nim, jenis kelamin, alamat, tempat dan tanggal lahir
    nim digunakan sebagai Key dari data, karena itu unik.

    Ada beberapa jenis Searching : 
    1.Linear Search
    • Linear Search membandingkan setiap elemen dari array dengan kunci pencarian.
    • Karena array tidak dalam urutan tertentu, kemungkinan besar nilainya akan ditemukan di elemen pertama 
    • Oleh karena itu rata-rata program harus membandingkan kunci pencarian dengan setengah elemen dari array
    Algoritmanya :
    n : total record of array x.
     For each x[i], 0 <=  i <= n-1, check whether x[i] = key.
     If x[i] = key, then the searched data is found in index=i. Finished.
     If x[i] != key, then continue searching until the last data which is i = n-1.
     If i= n-1 and x[i] != key, it means the data is not exist in the list, and set index = -1. Finished. 

    2.Binary Search
    • Metode pencarian linier berfungsi baik untuk array kecil atau tidak disortir. Namun, untuk pencarian dalam array yang besar tidak efisien
    • Jika susunan diurutkan, teknik pencarian Binary berkecepatan tinggi dapat digunakan
    Algoritmanya :
    n : total record of array x.
    left=0,  right= n-1.
    mid =(int) (left + right)/2.
    If x[mid]=key then index = mid. Finished.
    If x[mid]<key then left = mid+1.
    If x[mid]>key then right = mid-1.
    If left <= right and x[mid] != key, then repeat point 3.
    If x[mid] != key then index = -1. Finished.

    3.Interpolation Search
    • Teknik pencarian interpolasi dilakukan pada data yang diurutkan
    • Proses pencarian ini hampir mirip dengan teknik pencarian biner
    • Teknik pencarian dilakukan dengan perkiraan lokasi data
    Contoh : 
    Jika kita ingin mencari nama di buku telepon, misalnya yang diawali dengan huruf T, maka kita tidak akan mencari dari awal buku, tetapi kita membukanya di 2/3 atau ¾ dari buku.

    Algoritmanya :
    Dalam pencarian interpolasi, kami akan membagi data sesuai dengan rumus berikut:
    mid = ((kunci-data[min])/(data[max]-data[min])) x (max-min) + min

    If data[mid] = sought data, data has been found, searching is stopped and return mid.
    If data[mid]!= sought data, repeat point **
    **Searching is continued while sought data > data[min] and sought data < data[max].
    Mencari nilai tengah dengan memasukkan rumus interpolasi
    If data [mid]> sought data, high = mid - 1
    If data [mid] <sought data, low = mid + 1
    It will be looped until the requirements point ** are not met then return (-1), data not found



    No comments:

    Post a Comment

    Programming Using C++

    Repetition Repetition adalah satu atau lebih intruksi yang diulang dalam waktu tertentu Repetition dalam C++ ada 3 yaitu : For W...