Jan
19
2016
0

Review Algorithm & Programming Class PART.10

Hari, tanggal : Kamis, 14 Januari 2016

Materi             :  Material Review

Tempat           : Ruang 800 Kampus Anggrek Binus Univ.

 

  • stdio : standart input output
  • FILE >> harus ditulis dengan huruf besar semua
  • Catatan tambahan :
    Struct lebih baik digunakan, sehingga tidak perlu membuat banyak variabel berbeda.

Contoh cara membuka file :

  • Membuka File menggunakan fopen ():
  • FILE *fopen (const char *filename, const char *mode);
  • FILE *file = fopen(“data.txt”,”r”);

Keterangan contoh mode :
“r” membuka file untuk dibaca.
“w” membuat file untuk ditulis.
“A” membuka file untuk data append.
“r+” membuka file untuk membaca dan menulis.
“w+” membuat file untuk membaca dan menulis, menambahkan bagian awal.
“a+” membuka file untuk membaca dam tambahkan bagian belakang.
“rb” membuka File (binary) untuk membaca.
“wb” membuat file (binary) untuk menulis.
(jika membuat game sebaiknya save menggunakan binary yaitu “rb” atau “wb” karena tidak bisa dibuka dengan notepad biasa)

– Close File
int fclose (FILE *stream);
– fclose () akan mengembalikan 0 jika berhasil, dan EOF jika error
– EOF (End Of File) sama dengan -1 (EOF itu dibuat otomatis)
– fclose () akan masuk ke buffer area dulu dan segera mengirimkan data yang tersisa untuk file.
– !feof(file) -> membaca sampai akhir file
– boleh juga pake !=EOF

Jika ingin mengubah fungsi char dapat menggunakan :

  • atoi : ascii to int
  • itoa : int to ascii

NB :

jangan lupa fclose(file)

strcat >> menggabung string

fflush >> menghapus buffer

strcmp >> membandingkan 2 string

strcmpi >> tidak membedakan huruf besar dan kecil (ignore case)

Contoh Coding (toko baju):
source : http://a-l-g-o-r-i-t-m-a.blogspot.co.id/

#include
#include
#include
#include

struct Baju{
char kodeBaju[7];
char namaBaju[100];
int qty;
int hargaSatuan;
};

int initProgram(Baju baju[]){
FILE *file = fopen(“data.txt”, “r”);
int index = 0;
char tempHarga[100], tempQty[100];
while (!feof(file)){
fscanf(file, “%[^;];%[^;];%[^;];%[^\n]\n”, baju[index].kodeBaju, baju[index].namaBaju, tempQty, tempHarga);
baju[index].qty = atoi(tempQty);
baju[index].hargaSatuan = atoi(tempHarga);
index++;
}
fclose(file);
return index;
}

void generateTable(Baju baju[], int totalItem){
printf(“%-4s%-12s%-20s%-5s%-15s\n”, “No.”, “Code”, “Name”, “Qty”, “Price”);
printf(“============================================================\n”);
for (int i = 0; i < totalItem; i++)
printf(“%-4d%-12s%-20s%-5d%-15d\n”, (i + 1), baju[i].kodeBaju, baju[i].namaBaju, baju[i].qty, baju[i].hargaSatuan);
if(totalItem == 0) printf(“There is no data!”);
printf(“\n\n\n”);
}

char *generateCode(Baju baju[], int totalItem){
static char kode[10], kodeReturn[10];
int count;
strcpy(kode, baju[totalItem – 1].kodeBaju);
kode[0] = ‘0’; kode[1] = ‘0’;
count = atoi(kode) + 1;
if (count < 10) strcpy(kodeReturn, “JF00”);
else if (count < 100) strcpy(kodeReturn, “JF0”);
else if (count < 1000) strcpy(kodeReturn, “JF”);
itoa(count, kode, 10);
strcat(kodeReturn, kode);
return kodeReturn;
}

int checkCode(char key[], Baju baju[], int totalItem){
int left = 0, right = totalItem – 1, mid;
do{
mid = (left + right) / 2;
if (strcmp(baju[mid].kodeBaju, key) == 0) return mid;
else if (strcmp(baju[mid].kodeBaju, key) == -1) left = mid + 1;
else right = mid – 1;
} while (left<=right);
return -1;
}

void sort(Baju baju[], int left, int right, char by[], char option[]){
int i = left, j = right;
int pivotInt;
char pivotChar[100];
Baju tempBaju;
if (strcmp(by, “code”) == 0)strcpy(pivotChar, baju[(left + right) / 2].kodeBaju);
else if (strcmp(by, “name”) == 0)strcpy(pivotChar, baju[(left + right) / 2].namaBaju);
else if (strcmp(by, “qty”) == 0)pivotInt = baju[(left + right) / 2].qty;
else if (strcmp(by, “price”) == 0)pivotInt = baju[(left + right) / 2].hargaSatuan;
while (i <= j){
if (strcmp(by, “code”) == 0) { while (strcmp(baju[i].kodeBaju, pivotChar) 0) j–; }
else if (strcmp(by, “name”) == 0) { while (strcmp(baju[i].namaBaju, pivotChar) 0) j–; }
else if (strcmp(by, “qty”) == 0) { while (baju[i].qty pivotInt) j–; }
else if (strcmp(by, “price”) == 0) { while (baju[i].hargaSatuan pivotInt) j–; }
if (i <= j){
tempBaju = baju[i];
baju[i] = baju[j];
baju[j] = tempBaju;
i++; j–;
}
}
if (left < j) sort(baju, left, j, by, option);
if (i < right) sort(baju, i, right, by, option);
}

void saveData(Baju baju[], int totalItem){
FILE *file = fopen(“data.txt”, “w”);
for (int i = 0; i < totalItem; i++)
fprintf(file, “%s;%s;%d;%d\n”, baju[i].kodeBaju, baju[i].namaBaju, baju[i].qty, baju[i].hargaSatuan);
fclose(file);
}

int main(){
Baju baju[100];
int totalItem = initProgram(baju);
int choose, avail;
char tempCode[10], tempBy[10], tempSrt[10];
do{
system(“cls”);
printf(“\t\t\tJackForce Store\n\n”);
generateTable(baju, totalItem);
printf(“Menu\n”);
printf(“====\n”);
printf(“1. Add Item\n”);
printf(“2. Remove Item\n”);
printf(“3. Sort Item\n”);
printf(“4. Exit\n”);
printf(“\nInput menu : “);
scanf(“%d”, &choose); fflush(stdin);
switch (choose){
case 1:
sort(baju, 0, (totalItem-1), “code”, “asc”);
do{
printf(“Input your item’s name [3..20] : “);
gets(baju[totalItem].namaBaju);
} while (strlen(baju[totalItem].namaBaju)20);
do{
printf(“Input your item’s qty [1..1000] : “);
scanf(“%d”, &baju[totalItem].qty); fflush(stdin);
} while (baju[totalItem].qty1000);
do{
printf(“Input your item’s price [10000..1000000] : “);
scanf(“%d”, &baju[totalItem].hargaSatuan); fflush(stdin);
} while (baju[totalItem].hargaSatuan1000000);
strcpy(baju[totalItem].kodeBaju, generateCode(baju, totalItem));
totalItem++;
printf(“Success insert the new item!”);
getchar();
break;
case 2:
avail = -99;
do{
printf(“Input your item’s code [input ‘cancel’ to cancel] : “);
scanf(“%s”, tempCode); fflush(stdin);
if (strcmp(tempCode, “cancel”) != 0 && (avail = checkCode(tempCode, baju, totalItem)) == -1){
printf(“Can’t find the item that you mean.. Please check again the code.\n”);
getchar();
}
} while (strcmp(tempCode, “cancel”) != 0 && avail == -1);
if (avail != -99){
for (int i = avail + 1; i >= 1 && i < totalItem; i++){
baju[i-1] = baju[i];
}
totalItem -= 1;
printf(“Success delete an item!”);
getchar();
}
break;
case 3:
do{
printf(“Sort by [code/name/qty/price] : “);
scanf(“%s”, tempBy);
} while (strcmp(tempBy, “code”) != 0 && strcmp(tempBy, “name”) != 0 && strcmp(tempBy, “qty”) != 0
&& strcmp(tempBy, “price”) != 0);
sort(baju, 0, (totalItem-1), tempBy, “asc”);
printf(“The data has been sorted!”);
getchar();
break;
}
} while (choose != 4);
saveData(baju, totalItem);
printf(“Exit from the System.. Press Any Key to Continue…”);
getchar();
return 0;
}

Read more
Jan
12
2016
0

Review Algorithm & Programming Class PART.9

Hari, tanggal : Kamis, 07 Januari 2016

Materi             :  Sorting & Searching

Tempat           : Ruang 800 Kampus Anggrek Binus Univ.

 

*Sorting -> mengurutkan data -> mudah mencari data(mempermudah proses pencarian data).

*Metode-metode sorting :

1.Bubble sort -> sorting favorit di ujian
->Putaran
->Banyaknya putaran : banyaknya data -1

2.Selection sort
Menggunakan temp,menyimpan indeks yang terkecil.
Dan indeks tersebut selalu dibandingkan dengan indeks yang sebelumnya
banyaknya putaran = bubble sort
Intinya dari teknik sort ini : menukar indeks-indeks saja

3.Insertion sort : berbeda dengan bubble atau selection sort
-> Prosesnya adalah penyisipan
Banyaknya putaran : banyaknya data -1
,berbeda dengan bubble sort dan selection sort :
Setiap putaran tidak menentukan nilainya terkecil.

4.Quick sort ,menggunakan teknik recursive yaitu memanggil dirinya sendiri. Menggunakan 4 variabel.
Quick sort merupakan cara yang rumit dan sulit,namun paling cepat dalam melakukan proses sort.

5.Merge sort -> kita bagi,kemudian kita gabung
-Dipecah menjadi per dua data
-Kemudian di sorting
-Putarannya lebih sedikit dari bubble sort (kira-kira sepertiga dari putarannya bubble sort)

*Teknik Searching
1.Data harus sudah di sorting
2.Baru bisa di searching

Teknik searching :
-Linear search ->tidak cocok untuk data yang besar & paling mudah digunakan (teknik barbar)
-Binary search -> hapalin rumus saja
-Interpolation search -> rumus juga

Read more
Dec
24
2015
0

Review Algorithm & Programming Class PART.8

Hari, tanggal : Kamis, 17 Desember 2015

Materi             :  File Processing

Tempat           : Ruang 800 Kampus Anggrek Binus Univ.

 

Definisi Streams 
Stream adalah urutan karakter. Semua input dan output data stream.

Ketika program C dijalankan ada 3 standard streams yang diaktifkan:

  1. Standard Input Stream (stdin)
    Mengontrol stream input dari keyboard
  2. Standard output Stream (stdout)
    Mengontrol stream output ke monitor
  3. Standard error Stream (stderr)
    Mengontrol pesan error

File dan Streams :
Membuka file ordering pointer kembali ke initiator. Pointer menunjuk ke struktur data dengan tipe FILE didefinisikan dalam stdio.h

Contoh stream :
Standard Input Stream (misal : scanf), dengan file pointer stdin
Standard output Stream (saat ingin dicetak misal : printf), dengan file pointer stdout
Standard error Stream (jika kita pelajari C# lebih lanjut, akan ada perror), dengan file pointer stderr

Definisi File

  • File adalah kumpulan record (baris).
  • Record adalah kumpulan field (column).
  • Field adalah blok byte.
  • Byte adalah kumpulan bit (1 byte adalah 8 bit).
  • Text file tersimpan dalam teks atau ASCII (American Standard Code for Information Interchange) yang merupakan suatu standard internasional.
  • Ukuran penyimpanan tergantung pada data: 10000 membutuhkan 5 byte
  • Dapat terbuka dengan menggunakan standar aplikasi editor teks
    atau c:> TYPE nama_file

FILE BINARY
menyimpan data numerik dalam format in line dengan format yang mikro-prosesor (contoh: Format sign-magnitude 2 ‘s complement).
Data yang hanya dapat dibuka oleh system (kata-kata atau hurufnya di .txt acak [cryptography])
Penulisan : FILE *fp;

Buffer Area
Buffer area adalah bagian dari memori yang digunakan sebagai ruang sementara sebelum data pindah ke sebuah file.

Contoh syntax :
FILE * fp;
(hati hati karena FILE menggunakan huruf besar)
(fp adalah pointer file awal dari buffer area)

Open File
Membuka File menggunakan fopen ():
FILE *fopen (const char *filename, const char *mode);
Contoh mode :
“r” membuka file untuk dibaca.
“w” membuat file untuk ditulis.
“A” membuka file untuk data append.
“r+” membuka file untuk membaca / menulis.
“w+” membuat file untuk membaca / menulis.
“a+” membuka file untuk membaca / tambahkan
“rb” membuka File (binary) untuk dibaca.
“wb” membuat file (binary) untuk menulis.
(Dalam penge-save-an Game sebaiknya menggunakan binary yaitu “rb” atau “wb” karena tidak dapat dibuka dengan notepad biasa)

Close File
int fclose (FILE *stream);
*harus ditutup agar bisa digunakan untuk aplikasi lainnya atau .txtnya akan digunakan terus menerus
fclose () didefinisikan di <stdio.h>
fclose () akan mengembalikan 0 jika berhasil, dan EOF jika error
EOF (End Of File) sama dengan -1 (EOF itu dibuat otomatis)
fclose () akan masuk ke buffer area dulu dan segera mengirimkan sisa data ke dalam file.

Input dan Output File

  • fgetc (INPUT)
    Syntax : int fgetc (FILE *stream);
    Membaca satu karakter(char) dari file.txt
    fgetc (stdin) ekuivalen dengan getchar ()
  • fputc (OUTPUT)
    Syntax : int fputc (int c, FILE * stream);
    Menulis/menaruh satu karakter(char) ke file.txt
    fputc (‘a’, stdout) sama dengan putchar (‘a’)
  • fgets (INPUT)
    Syntax : char *fgets( char *string, int n, FILE *stream );
    Membaca satu baris dari sebuah file yang berakhir dengan baris baru, atau maksimum n-1 jumlah karakter.
    Kembali string jika successful dan NULL jika error
  • fputs (OUTPUT)
    Syntax : int fputs( const char *string, FILE *stream );
    Menulis baris ke file
    Mengembalikan nilai non-negatif jika berhasi dan EOF jika error.
  • fscanf (INPUT)
    Syntax : int fscanf( FILE *stream, const char *format [, argument ]… );
    Membaca data dari file.txt dengan format scanf.
    mengembalikan jumlah field dan read jika successful, dan EOF jika error
  • fprintf (OUTPUT)
    Syntax : int fprintf( FILE *stream, const char *format [, argument ]…);
    Menulis data ke file.txt menggunakan format printf.
    Pengembalian byte written jika nilai successful dan negatif jika error.
  • fwrite
    Syntax : size_t fwrite( const void *buffer, size_t size, size_t count, FILE *stream );
    Menulis ke file sebanyak n size
    Writing a block of data in the buffer area to the file
    Return number of byte data written, and error otherwise.
  • fread
    Syntax : size_t fread( void *buffer, size_t size, size_t count, FILE *stream );
    Baca ukuran blok data dari file
    membaca dari file sebanyak n size
  • feof
    Syntax : int feof( FILE *stream );
    membaca terus menerus sampai file habis
    Mencari tahu apakah pointer telah mencapai end-of-file
    Kembali 0 jika tidak berakhir end-of-file
Read more
Dec
11
2015
0

Review Algorithm & Programming Class PART.7

Hari, tanggal : Kamis, 03 Desember 2015

Materi             : Function and Recursion

Tempat           : Ruang 800 Kampus Anggrek Binus Univ.

 

PENJELASAN

  • Function and Recursion adalah Modular Programming, maksudnya Program dibagi menjadi modul-modul, agar mudah untuk diselidiki apabila memiliki error atau kesalahan.
  • Fungsi dibuat dengan mengelompokan statement untuk suatu pekerjaan disebut SUB-PROGRAM

Keuntungan :

  • Dari Besar ke Kecil , Program besar menjadi Spesifik
  • Lebih Mudah di Debug
  • Bisa dekerjakan bersama orang lain, Mudah dimodifikasi
  • Sub-Program bisa dipecah menjadi beberapa sub program lagi jika masi kompleks

Library Vs UDF(User Defined Function)

Library  : Biasanya di header

UDF       : Function buatan sendiri dimasukan di Resource

 

Function Definition

Syntax :

return_value_type function name(paramerter list)

{

Statement;

}
Return value : Mengembalikan sebuah nilai. Setiap int selain void kita wajib memakai keyword return. Void, sifatnya tidak mengembalikan nilai.
Parameter list : opsional (boleh dipakai maupun tidak)

Parameter : Mengirim nilai untuk fungsi lain
Contoh Parameter : int x, y, i, j, k, dll

 

Function Prototype

sebuah fungsi yang dapat dikenali oleh si pemanggil, dan harus sesuai dengan fungsi yang telah kita buat
(int maximum(int a, int b))

Memastikan fungsi bisa dipanggil

Int maximum(int a, int b);

Nama variabel bisa sama tetapi yang lokal akan diprioritaskan daripada global

 

Recursion Definition

Memanggil dirinya sendiri (seperti pengulangan)

Int faktorial(int n)

{

If(n==0)

return 1;

else

nilai=n*factorial(n-1);

}

Return nilai;

Int main()

{

Int hasil

Hasil=factorial(5);

}

Recursive : memakai banyak memori dan lebih lambat.

 

Pertemuan 7 ini kami juga kedatangan tamu yaitu, CEO DewaWeb.

Dalam sesi ini kami dijelaskan tentang Encrypthography, dan juga SSL Certificate.

Tipe-tipe SSL :
1. Domain validation : harga untuk membeli SSL itu sekitar kurang dari 10 dollars USD pertahun
2. Organization validation : Vertifikasi organisasi, dan vertifikasinya itu dari luar negeri
3. Extended validation : Di semua browser akan muncul nama perusahaan tersebut, biasa harganya mahal

Read more
Nov
19
2015
0

Review Algorithm & Programming Class PART.6

Hari, tanggal : Kamis, 12 November 2015

Materi             : Review Material

Tempat           : Ruang 800 Kampus Anggrek Binus Univ.

 

REVIEW

• Algorithm & Programming
• Introduction to C Programming
• Formatted Input / Output
• Operator, Operand, and Arithmetic
• Program Control: Selection
• Program Control: Repetition
• Pointers and Arrays

 

Sistem pemrograman sebenarnya hanya dibagi menjadi 3 step : Input, Process,Output

  • Input adalah apa yang dimasukan oleh user ke dalam komputer
  • Process adalah tahap pemrosesan hasil Inputan user ke dalam komputer ,dan
  • Output adalah hasil dari process.

Process sendiri terbagi atas beberapa macam yaitu:

  • Selection
  • Looping/Repetition
  • Strorage (belum diajarkan)

 

PENJELASAN

Selection : If, Else-If, Nested If, Switch Case

Looping/Repetition : For, While, Do-While

 

Pada pertemuan kali ini kami dijelaskan coding untuk membuat berbagai macam bentuk seperti membuat gambar diamond, segitiga pascal, segitiga, segitiga terbalik dan sama sisi, dll. Berikut beberapa coding yg dijelaskan :

 

Contoh Coding yang akan menghasilkan segitiga tanpa isi :

#include<stdio.h>

 

int main()

{

int n,a,b;

scanf(“%d”, &n); fflush(stdin);

for(a=1;a<=n;a++){

for(b=1;b<=a;b++){

if(b==1||a==b||a==n){

printf(“*”);

}

else{

printf(” “);

}

}

printf(“\n”);

}

getchar();

return 0;

}

 

Contoh Coding yang akan menghasilkan Bilangan Prima :

#include<stdio.h>
int main()
{

int a,b,i,c=0;

scanf(“%d”,&i);
fflush(stdin);
for(a=2;a<i+1;a++){
for(b=1;b<=a;b++)
{if(a%b==0){c++;}}

if (c==2)
{printf(“%d “,a);}c=0;}
getchar();
return 0;
}

 

Contoh Coding untuk membuat suatu Segitiga Pascal :

#include<stdio.h>
int main(){

int input;
int kolom,baris,segitiga[100][100];
scanf(“%d”,&input);
fflush(stdin);
for (baris=0;baris<input;baris++)
{
for (kolom=0;kolom<=baris;kolom++)
{
if(kolom==0 || kolom==baris)
{
segitiga[baris][kolom]=1;
}
else if(baris>1 && kolom<baris)
{
segitiga[baris][kolom]=segitiga[baris-1][kolom]+segitiga[baris-1][kolom-1];
}
printf(“%d “,segitiga[baris][kolom]);
}

printf(“\n”);
}

return 0;
}

Read more
Nov
02
2015
0

Review Algorithm & Programming Class PART.5

Hari, tanggal : Kamis, 29 Oktober 2015

Materi             : Pointers and Arrays

Tempat           : Ruang K3A Kampus Syahdan Binus Univ.

DEFINISI POINTER :
Adalah variabel yang menyimpan ALAMAT dari variabel lain.
Syntax :

  <type> *ptr_name;

Dua Operator yang sering digunakan untuk pointer yaitu : ‘*’ (melambangkan konten dari) dan ‘&’ (melambangkan alamat dari).

CONTOH :
inisialisasi suatu integer pointer ke dlm data variabel :

int i, *ptr;

ptr = &i;

Untuk memberikan nilai baru pada variabel yg ditunjuk pointer :

*ptr = 5;   // artinya i=5

KONSEP :

Picture1 Picture2

POINTER TO POINTER :
Adalah variabel yang menyimpan ALAMAT dari pointer lain.
Syntax :

  <type> **ptr_ptr ;

CONTOH :

  int i, *ptr, **ptr_ptr;

  ptr = &i;

  ptr_ptr = &ptr;

Untuk memberikan nilai baru pada i :

  *ptr = 5;               // artinya i=5 ;

  **ptr_ptr = 9;   // artinya i=9; atau  *ptr=9;

________________________________________________________________________________

DEFINISI ARRAY :
Adalah penyimpanan data dalam suatu struktur tertentu untuk diakses dalam suatu kelompok atau secara individu. Beberapa variabel disimpan menggunakan penamaan yang sama, hanya dibedakan pada indeksnya.

Karakteristik :

  • Homogenous : semua elemen harus memiliki tipe data yang sama.
  • Random Access : Setiap elemen dapat diakses secara individual, tidak perlu secara berurutan.

Syntax (One Dimensional Array) :

  type array_value [value_dim];

CONTOH (One Dimensional Array) :

int A[10];

 

ILUSTRASI (array 1D):

Elemen pada array diindeks mulai dari 0 (nol) .

array

 

INISIALISASI ARRAY :
Array dapat diinisialisasi tanpa pendeklarasian nilai ukuran dimensi.

CONTOH :

  int B[ ]={1, 2, -4, 8};

Array B memiliki 4 elemen

array1

CONTOH :

  int B[8]={1, 2, -4, 8};

array2

 

PENGAKSESAN :

Terdapat dua cara mengakses suatu elemen i=2 :

  *(A+2) or A[2]

A sama dengan &A[0] atau suatu pointer konstan pada elemen pertama dari array tertentu.

 

MENETAPKAN/MEMBERIKAN NILAI :

Contoh : A[6] = 15; A[3] = 27;

Pernyataan A[2] = A[3] – A[6], menghasilkan :

assign values_ARRAY

________________________________________________________________________________

POINTER CONSTANT & POINTER VARIABLE

  • Pointer variable adalah pointer yang dapat diberikan nilai baru saat run-time.
  • Pointer constant adalah pointer yang tidak dapat diberikan nilai baru saat run-time.
  • Array adalah Pointer Constant pada elemen pertamanya. Array dapat diisi dengan pointer variable.

CONTOH :

int x=10, y=20;

int B[4];    // B adalah Array – pointer constant

int *ptr;    // ptr adalah pointer variable

ptr = &x;  // ok

ptr = B;    // ok

ptr++;     // ok

B = ptr;   // error

B++;       // error

B = &y;   // error

  • ptr = B; sama saja dengan ptr = &B[0];
  • B adalah suatu pointer constant yang menunjuk pada elemen pertama dalam suatu array.
  • Pointer constant hanya dapat diinisialisasi pada waktu pendefinisian.
    Contoh :
    int Arr1[10];Arr1[10] = {1, 2, 3, 4, 5};  // error

    Arr1 = {1, 2, 3, 4, 5};  // error

    Arr1[10] = 12;  // error max 9

    Arr1[0] = 23;  // ok

    int Arr2[10] = {1, 2, 3, 4, 5}; //ok

________________________________________________________________________________

MENGAKSES ARRAY

Mengakses array menggunakan Pointer :

int arr[10];

  int *ptr_arr;

  ptr_arr = arr; //or ptr_arr = &arr[0];

Untuk mengakses elemen tertentu dapat dilakukan dengan menggunakan :

  ptr_arr[i];

  arr[i];

  *(ptr_arr + i);

  *(arr + i);

  ptr_arr = ptr_arr + i; *ptr_arr;

________________________________________________________________________________

TWO/ THREE/…. DIMENSIONAL ARRAY

C compiler tidak membatasi angka ukuran dimensi yang dapat dibuat. Tapi memori PC kita membatasinya.
INISIALISAI menggunakan RMO (Row Major Order).

TWO DIMENSIONAL ARRAY

  • Syntax 2D Array:

  type name_array[row][col];

  • Contoh :

int a[3][4];

array 2d

 

THREE DIMENSIONAL ARRAY

  • Syntax 3D Array :

  type name_array[row][col][depth];

  • Contoh :

int x[3][2][4] = {{{1,2,3,4}, {5,6,7,8}},

                          {{11,12,13,14}, {15,16,17,18}},

                          {{21,22,23,24}, {25,26,27,28}}

       };  

   void main() {

     int x[4][3][5] = {{{1, 2, 3}, {0, 4, 3, 4}, {1, 2}},

     {{9, 7, 5}, {5, 7, 2}, {9}},       

     {{3, 3, 5}, {2, 8, 9, 9}, {1, 2, 1}},

     {{0}, {1}, {0, 1, 9}}

    };

     printf(“%5d”, x[2][1][3]);

  }

________________________________________________________________________________

ARRAY OF POINTER

  • Suatu array yang berisi dengan pointer / beberapa pointer.
  • Syntax :

  type *array_name [value_dim];

  • Contoh :

  int i;

  int *ptr[4];

  int x=1, y=2,  z=3, w=5;

  ptr[0]=&x, ptr[1]=&y; ptr[2]=&z;  ptr[3]=&w;

  for(i=0;i<4;i++) printf(“%d “,*ptr[i]);

OUTPUT : 1 2 3 5

________________________________________________________________________________
ARRAY OF CHARACTER

  • Array yang berisi dengan karakter /beberapa karakter.
  • Syntax:

  char array_name[value_dim];

  • Contoh :

char name[40];

char ss[20]={‘B’,’I’,’N’,’U’,’S’};  //20 elemen

char ss[ ]= {‘B’,’I’,’N’,’U’,’S’};  // 5 elemen

________________________________________________________________________________

STRING : Adalah suatu array of character yang berakhir dengan null character ( ‘’ atau dlm ASCII = 0).
String adalah tipe data yang tidak diketahui dalam C.
String constant adalah beberapa karakter yg ditulis diantara double quote (“). Contoh : ”Welcome to Binus”
Tipe String constant adalah pointer constant.

Contoh :

  char name[40] = ”Amir”;  //ok

  name = ”Amir”;   // error name is a constant pointer

  Name[40]= “Amir”;  //error

 

String Constant dapat dihubungkan saat waktu compile:

”Hello,” ” world”   sama dengan: ”Hello, world”

Contoh INISIALISAI STRING:

  char s[ ] = ”BiNus”;  sama dengan : char s[ ] = {’B’,’i’,’N’,’u’,’s’,’’};

_____________________________________________

NOTE : CHAR VS STRING

  • Character dalam C ditulis dalam / diantara single quote (‘).
  • Contoh :

char ch=’A’;

  char ch=65;     //Ascii, sama saja dengan char ch=’A’;

char ch=0x41; //Ascii, sama saja dengan char ch=’A’;

  • String ditulis dalam /diantara double quote (“).

char vs string

__________________________________________

STRING MANIPULATION
Dalam Standard Library Function (header file string.h) menyediakan beberapa fungsi untuk memanipulasi string :

  • strlen() : Mengembalikan nilai panjang suatu string; null char diabaikan.
  • strcpy(s1,s2) : Menyalin s2 ke s1.
  • strncpy(s1,s2,n) : Menyalin karakter n pertama pada s2 ke s1.
  • strcat(s1,s2) : Menambahkan string s2 ke bagian akhir string s1.
  • strncat(s1,s2,n) : Menambahkan karakter n pada string s2 ke bagian akhir string s1.
  • strcmp(s1,s2) : Membandingkan nilai pada string s1 dan s2, jika sama kembali ke 0.
    dst.
Read more
Oct
23
2015
0

Review Algorithm & Programming Class PART.4

Hari, tanggal : Kamis, 22 Oktober 2015

Materi             : Program Control: Repetition

Tempat           : Ruang 800 Kampus Anggrek Binus Univ.

 

Definisi Repetisi/ Repetition (Perulangan) :

Adalah suatu kondisi dimana satu/ lebih intruksi atau perintah diulang untuk beberapa kali waktu yang telah ditentukan.
Banyaknya perulangan dapat ditentukan sebelum atau ditentukan nanti setelah run time.

Ada beberapa tipe operasi repetition/looping (Perulangan) yaitu :

  1. For
  2. While
  3. Do-While

PENJELASAN :

  • FOR
    Perbedaan FOR dengan tipe operasi perulangan yang lain adalah FOR dapat melakukan looping tanpa adanya kondisi yang telah ditetukan sebelumnya (tetapi akan menjadi looping forever), sedangkan tipe operasi lain harus memiliki kondisi agar dapat berjalan.
    Contoh FOR tanpa kondisi (looping forever) : for(;;) statement;Syntax :
    for(exp1; exp2; exp3) statement;or:for(exp1; exp2; exp3){  statement1;

      statement2;

      …….

     }

    KETERANGAN :
    exp1
     :  inisialisasi /initialization

    exp2 :  kondisi /conditional

    exp3 :  kenaikan atau pengurangan /increment or decrement

    exp1, exp2 dan exp3 opsional
    exp1 dan exp3 bisa terdiri atas beberapa pernyataan yang dipisahkan dengan tanda koma (,) .
    Tanpa exp2 maka akan menjadi looping forever.
    Pada tipe operasi FOR, ada 2(dua) jenis Looping, yaitu :

    Infinite Loop (forever)
    Loop dengan tanpa kondisi untuk berhenti/ Loop tanpa henti dapat dilakukan menggunakan “for-loop” ,dengan menghapus/membuang semua parameternya (exp1; exp2; exp3). Untuk mengakhiri loop,gunakan break.

    Nested Loop (kontinu)
    Terdapat loop di dalam loop. Operasi perulangan dimulai dari bagian dalam loop terlebih dahulu.

  • WHILE
    Dalam tipe operasi perulangan WHILE, kondisi harus selalu ada/ telah ditentukan sebelumnya.
    ‘exp’ (kondisi) adalah pernyataan Boolean, yang akan menghasilkan nilai true(tidak =nol) atau false(=nol).
    Perintah hanya akan dieksekusi/berjalan jika kondisinya(exp) bernilai true (tidak sama dengan nol).
    Jadi pada WHILE, Pemeriksaan kondisi telah selesai dilakukan sebelum perintah dieksekusi.
    Syntax :
    while (exp) statements;or:while(exp){  statement1;  statement2;

       …..

    }

     

  • DO-WHILE
    Dalam tipe operasi perulangan DO-WHILE, perintah akan tetap dieksekusi sementara kondisi bernilai true.
    Jadi pada DO-WHILE, Pemeriksaan kondisi akan dilakukan setelah perintah dieksekusi/ dapat juga dijelaskan bahwa Perintah telah selesai dieksekusi sebelum pemeriksaan kondisi dilakukan.
    Dengan begitu, dapat disimpulkan bahwa pada DO-WHILE, minimal 1x pengeksekusian perintah akan terjadi.Syntax :
    do{    < statements >;} while(exp); 

OPERASI REPETISI/ LOOPING/ PERULANGAN

  • Dalam operasi WHILE, suatu/ beberapa perintah atau pernyataan mungkin tidak akan pernah dieksekusi sama sekali jika ‘exp’ (kondisi) bernilai false.
  • Sementara dalam operasi DO-WHILE, suatu/ beberapa perintah atau pernyataan akan dieksekusi minimal 1kali.
  • Untuk mengakhiri perulangan, dapat dilakukan dengan beberapa cara, yaitu :
    – Melalui Sentinel (menggunakan angka nol ‘0’ untuk input)
    – Melalui Pertanyaan (contoh : “should the repetition continue?“)

BREAK VS CONTINUE

BREAK :
Untuk mengakhiri loop (for, while, do-while) / keluar dari loop secara paksa.
Untuk mengakhiri operasi switch.

CONTOH :
#include <stdio.h>

int main() {

        int x;

        for(x=1; x<=10; x++) {

      if (x == 5) break;

       printf(“%d “, x);

        }

        return 0;

}

Output : 1 2 3 4

 

CONTINUE :
Untuk men-skip (melewati) semua sisa pernyataan berikutnya dalam suatu perulangan, dan melanjutkannya secara normal ke perulangan berikutnya.

CONTOH :
#include <stdio.h>

int main() {

        int x;

        for(x=1; x<=10; x++) {

      if (x == 5) continue;

       printf(“%d “, x);

        }

        return 0;

}

Output : 1 2 3 4 6 7 8 9 10

Read more
Oct
21
2015
0

Review Algorithm & Programming Class PART.3

Hari, tanggal : Kamis, 15 Oktober 2015

Materi             : Program Control: Selection

Tempat           : Ruang 800 Kampus Anggrek Binus Univ.

Definisi Seleksi/ Selection :

Implementasi dari perintah yang kemudian akan dijalankan (atau tidak), dengan kondisi yang telah ditentukan sebelumnya.

Ada beberapa jenis selection yaitu :

  1. If
  2. If-else
  3. Nested-if
  4. Switch-case
  5. ?: Operator
  6. Go-to and Label

PENJELASAN :

  • If
    Fungsi “If” digunakan untuk menyeleksi kondisi yang diberikan benar atau salah. Jika kondisi benar/ terpenuhi, maka sebuah/beberapa pernyataan akan dieksekusi, sebaliknya jika kondisi salah, maka pernyataan tidak akan dieksekusi.Syntax :
    if (boolean expression) statement;
    or
    if (boolean expression) {
         statement1;
         statement2;
       ……
    }

 

  • If-Else
    Fungsi “If-Else” digunakan untuk melakukan seleksi apabila terdapat beberapa kondisi (lebih dari 1). Jika kondisi pertama terpenuhi maka pernyataan pertama akan dieksekusi, jika tidak, maka kondisi selanjutnya akan diseleksi hingga mendapatkan kondisi yang benar dan pernyataan yang sesuai (dicari kondisi yang benar secara terstruktur).Syntax :
    if (boolean expression) statement1;
    else statement2;
    or
    if (boolean expression)
    {
    statement1;
    statement2;
    ……
    }
    else
    {
    statement3;
    statement4;

    }

 

  • Nested-if
    Fungsi “Nested-If” digunakan ketika kata IF muncul lebih dari 1 kali dalam IF statement(apabila ada If di dalam If tersebut). Di dalam kasus ini ada beberapa syarat yang harus dipenuhi agar pernyataan dapat berjalan. Jadi, kondisi benar atau salah diikuti oleh struktur seleksi lainnya.

    Syntax
    :
    if (boolean expression) statement1;
         if (boolean expression) statement2;
             if (boolean expression) statement3;
    or
    if (boolean expression) statement1;
    else
         if (boolean expression) statement2;
         else
              if (boolean expression) statement3;

 

  • Switch-case
    Fungsi “Switch-case” digunakan untuk menggantikan If-else, ketika level angka If-else nested sangat besar dan sulit untuk dibaca. Dalam Switch-case, pengerjaan if  menggunakan nilai constant. Switch-case menyeleksi kondisi dengan melihat setiap nilai constant. Jika kondisi sesuai dengan nilai case constant, maka pernyataan terkait akan dieksekusi, Jika tidak sesuai, maka pernyataan default yang akan dieksekusi.
    NOTE : Expression dan tipe constant harus integer/INT (termasuk char).
    case constant adalah angka pertama.
    break adalah perintah untuk menghentikan terjadinya perulangan yang tak hingga.

    Syntax :

    switch (expression) {
    case constant1 : statements1; break;
    .
    .
    case constant2 : statements2; break;
    default : statements;
  • ?: Operator 
    Fungsi “?: Operator” (Conditional assignment) telah dijelaskan pada post sebelumnya tentang penggunaan ?: Operator. Seperti halnya penggunaan if-else tetapi hanya 1 buah if-else.
    Misal :a=5 b=3z=(a>b) ? a : b

    Jadi yang dimaksud adalah jika pernyataan a>b itu benar, maka akan menampilkan variabel a,tetapi jika pernyataan a>b itu salah maka variabel b yang akan ditampilkan.

    Syntax :
    condition ? then-expression : else-expression


  • Go-to and Label
    Penggunaan perintah “Go-to and Label” sudah tidak digunakan/ditinggalkan karena bentuknya yang tidak rapi, berantakan dan membingungkan. Go-to Label juga sudah tidak dikembangakan lagi.Syntax :
    goto label;                    ……

      label :

                        ……

     

 

ERROR TYPE

  1. Compile time error : terjadi dikarenakan syntax error.
  2. Link time error : Berhasil compile tapi menyebabkan link time error karena code link tidak ada saat itu.
  3. Run time error  : Berhasil compile tapi data menjadi berantakan karena mengambil memori secara random.
  4. Logical error     : Berhasil compile tapi hasil gagal dikarenakan kesalahan logika/algoritma.
Read more
Oct
14
2015
0

Review Algorithm & Programming Class PART.2

Hari, tanggal : Kamis, 08 Oktober 2015

Materi             : Operator,Operand,and Arithmetic

Tempat           : Ruang 800 Kampus Anggrek Binus Univ.

 

Operator dan Operand

Operator : simbol-simbol  yang dipakai dalam suatu aritmatika untuk menghasilkan nilai baru.

Operand : objek dari perhitungan matematika/ data yang akan diproses oleh operator.

Operator ada 3 macam:

  1. Unary Operator : hanya membutuhkan 1 operator
  2. Binary Operator : membutuhkan 2 operator
  3. Ternary Operator : membutuhkan 3 atau lebih operator

Berdasarkan tipe operasinya, operator dibagi menjadi 6 yaitu:

  • Assignment Operator (=)
  • Logical Operator          &&(and),|| (or),! (not), Pow (pangkat)
  • Arithmetic Operator    (+ – * /) , ++y , y++ , –y , y–
  • Relational Operator     ==,!=,<,>,>=,<=,?:
  • Bitwise Operator          <<,>> &(And),|(Or),^(Xor),~(Komplemen)
  • Pointer Operator          ->

 

A.  Contoh Assignment Operator:

A=2 B=3

menunjukan bahwa nilai A=2 dan nilai B=3

Contoh Aritmethic Operator:

A=3 , B=2 , C=B-1

jadi C memiliki hasil dimana C adalah nilai B dikurang 1

 

B.  Logical operator

&&   : And
||     : Or
!       : Not

PENJELASAN : 

  • And (&&)
    Pada pernyataan “And” hanya akan benar jika semua pernyataan benar.
  • Or (||)
    Pada pernyataan “Or” jika terdapat 1 pernyataan yang benar maka hasilnya akan benar
  • NOT (!)
    Pada pernyataan “Not”, pernyataan sebelumnya akan berubah menjadi sebaliknya, dari salah menjadi benar atau benar menjadi salah.
Symbol Functionality
&& AND
|| OR
! NOT

Truth Table :

A B !A A && B A || B
True True False True True
True False False False True
False True True False True
False False True False False

 

C.  Arithmetic operator

Symbol Functionality Example
+ Addition x = y + 6;
Subtraction y = x – 5;
* Multiply y = y * 3;
/ Division z = x/y;
% Modulo A = 10 % 3;
++ Increment x++;
Decrement z–;
() Scope / Priority x=(2+3)*5

CATATAN :

N++  :  post increment

++N :  pre increment

N−−  :  post decrement

−−N  : pre decrement

 

 

D.  Relational Operator:

Symbol Functionality
= = Equality
!= Not equal
< Less than
> Greater than
<= Less or equal than
>= Greater or equal than
?: Conditional assignment

CATATAN :

Contoh Conditional assignment (?:)

a=5 b=3

z=(a>b) ? a : b

jadi yang dimaksud adalah jika pernyataan a>b itu benar maka akan memunculkan variabel a,tetapi jika pernyataan a>b itu salah maka variabel b yang akan dimunculkan.

 

E.  Contoh Bitwise Operator:

Bit by bit operation (operator tentang binary)
Contoh 1:
Cara mencari bilangan biner angka 10
1.     cari 2^n yang hasilnya mendekati dan kurang dari 10 lalu beri angka 1
2^3 2^2 2^1 2^0
1     _     _     _
2.      kurangi 10 dengan 8 (hasil 2^3) lalu beri angka 1 = 2 (2^1)
2^3 2^2 2^1 2^0
1     _     1     _
3.      Lakukan hingga tidak dapat dikurangi lagi, lalu beri angka 0 yg tidak terisi
2^3 2^2 2^1 2^0
1     0     1     0
4.      Jadi bilangan biner dari angka 10 adalah 1010

 

Contoh 2 :

int A, B=78

A=B >> 3; value=9

A=B << 2; value A=312

Alasannya

78 = 0100 1110   **adalah penulisan 78 dalam binary

>> 3 berarti ada pergeseran ke kanan sebanyak 3 kali ,maka..

0010 0111 -> pergeseran pertama

0001 0011 -> pergeseran kedua

0000 1001 -> pergeseran ketiga

sehingga juga dihitung hasilnya menjadi 9

 

<< 2 berarti ada pergeseran ke kiri sebanyak 2 kali ,maka..

0100 11100 -> pergeseran pertama

0100 111000-> pergeseran kedua

sehingga juga dihitung hasilnya menjadi 312

 

CATATAN :

Penghitungan Biner

1           1            1          1         1         1         1         1

↑          ↑            ↑         ↑          ↑         ↑        ↑         ↑

2ˆ7    2^6       2^5     2^4    2^3    2^2    2^1   2^0 =255

0000 0000 = 0
0000 0001 = 1     -> 2^0
0000 0010 = 2     -> 2^1
0000 0100 = 4     -> 2^2
0000 1000 = 8     -> 2^3
0001 0000 = 16   -> 2^4
0010 0000 = 32   -> 2^5
0100 0000 = 64   -> 2^6
1000 0000 = 128 -> 2^7

** simbol ‘^’ : pangkat

jadi,

  • 0000 1010 = 10
  • 0000 1111  = 15
  • 0010 0011 = 35Angka nol di depan angka 1 boleh tdk perlu ditulis

 

Read more
Oct
06
2015
0

Review Algorithm & Programming Class PART.1

Materi 1  : ALGORITMA SEDERHANA

Tempat : Ruang 800 Kampus Anggrek

OOP : Object-Oriented Programming.

Mengapa menggunakan OOP ? Karena keuntungannya adalah…

  • Lebih REUSABLE
  • Antara satu objek dengan objek yang lain saling berhubungan

ISTILAH DALAM OOP :

Encapsulation : teknik privatisasi yang biasanya digunakan untuk pengamanan (Security), sehingga membatasi hak akses seseorang terhadap suatu program dan tidak dapat diakses dengan sembarangan.
Inheritance : 
salah satu konsep OOP yang merupakan pewarisan sifat induk kepada  anak yang bersifat tidak wajib untuk ditampilkan (suna).
Abstraction : 
 pewarisan sifat induk kepada  anak yang dapat bersifat wajib atau tidak wajib untuk ditampilkan (akan menjadi wajib ditampilkan apabila ditulis ‘abstract‘).
Interface : 
disebut sebagai Bapak tertinggi dalam OOP sehingga sifatnya wajib ditampilkan methodnya. Pada OOP, Bapak hanya boleh 1 tapi boleh banyak jasa.
Polymorphism :  objek yang sama bisa di pakai pada suatu hal yang sama. Satu untuk semua. Penulisan dengan method yang sama untuk mempermudah dengan hasil yang berbeda. Dapat di artikan banyak bentuk, maksudnya kita dapat melakukan overrun, jadi keturunannya memiliki sifat yang berbeda dengan induk.

Program sistem yang digunakan sebagai alat bantu dalam pemrograman
Compiler
 : Mengkompilasi source code menjadi bentuk file yang bisa dieksekusi.
Interpreter : Mengkompilasi dan menjalankan source code secara langsung.

Tingkat Bahasa Pemrograman:

1. Tingkat rendah : Menggunakan Assembler
2. Tingkat sedang : Menggunakan Bahasa C, Pascal, Fortan
3. Tingkat Tinggi : Menggunakan C++, C#, Java
Materi  2 : Algorithm & Programming and Introduction to C Programming
Tempat : Ruang 800 Kampus Anggrek
  1. Penemu Algoritma ialah Abu Abdullah Muhammad bin Musa al-Khwarizmi.
    Algoritma adalah suatu proses atau susunan tahapan untuk menyelesaikan suatu masalah.
  2. Penyelesaian Algoritma bisa dituliskan dengan 2 cara yaitu:
    Dalam bentuk tulisan : Structure English dan Pseudocode (bagaimana bahasa sehari-hari bisa dimegerti)
    Dalam bentuk gambar : Flowchart (Algoritma berbentuk aliran/bagan/diagram -ada Start dan End) 
  3. Structure of Theorem
    a. Sequence : urutan perintah/pernyataan.
    b. Selection : seperti IF, else.
    c. Repetition : seperti Looping (Do while).
  4. Susunan proses algoritma dalam programming:
    >> Input : Memasukkan data.
    >> Proses: Pengolahan data (terdapat compile, store, repetition, compose)
    >> Output: Menampilkan hasil data.INPUT -> PROSES -> OUTPUT
  5. Kenapa kita menggunakan bahasa C ? Karena….
  • Flexible, mudah dimengerti.
  • Portable, Dapat digunakan pada OS manapun.
  • Well known, bahasa yang paling sering digunakan dalam bahasa pemrograman.
  • A large number of library

6. Keyword dan Variabel

Keyword adalah beberapa perintah(command) bawaan dari aplikasi bahasa pemrograman yang digunakan untuk menjalankan beberapa perintah. Keyword memiliki arti spesial pada C Compiler.
Beberapa contoh keyword : printf, scanf, if, elseif ,main dan masih banyak lagi

Variabel yaitu data yang isinya dapat kita ubah.

**Hati-hati dalam penamaan suatu variabel ! Jangan menamakan suatu variabel sama dengan keyword yang telah ada ! Penting untuk mengenali semua penamaan keyword yang ada.

Read more

Powered by WordPress. Kredit, Streaming Audio | Theme by TheBuckmaker.