Minggu, 07 Januari 2018

POINTER



 Suatu pointer (variable penunjuk) adalah suatu variable yang berisi dengan alamat lokasi, yaitu suatu memori tertentu. Bahasa C menyediakan 2 buah operator untuk operasi pointer yaitu operator „*‟ dan operator „&‟.

Operator alamat (Address operator (&))

Pada pendeklarasian variable, user tidak diharuskan menentukan lokasi sesungguhnya pada memory. Hal ini akan dilakukan secara otomatis oleh compiler dan operating system pada saat run-time. Jika ingin mengetahui di mana suatu variable disimpan, dapat dilakukan dengan memberikan tanda ampersand (&) di  depan variable, yang berarti “address off”. Contoh : 
    Buku = &bahasa;
Akan memberikan variabel buku alamat dari bahasa, karena variable bahasa diberi awalan ampersand (&), maka menjadi pokok disini adalah alamat dalam memory, bukan isi variable. Misalkan bahasa diletakkan di alamat 1776 .

Operator Reference (*)

Dengan menggunakan pointer kita dapat mengakses nilai yang tersimpan secara langsung dengan memberikan awalan operator asterisk(*) pada identifier pointer, yang berarti “value pointed by”. Contoh ;
  BhsC = *buku;
(dapat dikatakan bahwa BhsC sama dengan nilai yang ditunjuk oleh buku). BhsC = 25, karena buku di alamat 1776, dan nilai yang berda pada lamat 1776 adalah 25.

Deklarasi Pointer

Variabel pointer dideklarasikan dengan nama variabelnya ditulis dengan diawali karakter asterisk. 
Bentuk umum :
          Tipe-data *nama-variabel-pointer;

Contoh :   int *data;     berarti data adalah sebuah pointer yang menunjuk ke jenis data integer.
  Tipe dari variable pointer menunjukkan tipe dari data yang ditunjuknya.



Inisialisasi Variabel Pointer

 Pemberian harga awal pada variable-variabel pointer dapat sekaligus dilakukan pada saat variable-variabel tersebut dideklarasikan. Harga awal yang diberikan adalah alamat lokasi memory.
Contoh :     int i,j; int *intptr = &i;     atau bisa juga  int i,j, *intptr ;  intptr = &i ; intptr variable pointer ke jenis data integer dengan memberi harga awal berupa alamat variable i. 

Contoh :
#include<stdio.h>
void main( ) {
int i,j, *intptr; i = 890;
ptintf(“variable i terletak pd alamat memory %p.\n”,&i);  
printf(“alamat i = %p,menerima nilai %d\n”,&i, i); 
intptr = &i;    // intptr menunjuk alamat variable i
printf(„alamat intptr = %p, menunjuk ke nilai %d\n”,intptr,*intptr); 
j = *intptr;
printf(“alamat j = %p,menerima nilai %d\n”,&j, j);
}      





 
A. Pointer dan Fungsi

Contoh :
/*program pengriman argument dengan alamat*/
#include<stdio.h>
void main ( ) {
int fungsi(int *x);         /*prototipe fungsi atau deklarasi fungsi*/ 
int x = 5, y =4;
printf(“Dalam fungsi main( ): x = %d, y = %d\n”, x, y);
y += fungsi(&x);        /*memanggil fungsi &mengirim alamat x */
printf(“Dalam fungsi main( ): x = %d, y = %d\n”, x, y);  }
int fungsi(int *x)           /*pendefinisian fungsi*/
{
int y;
y =  ++*x ;      // nilai x ditambah 1
printf(“Dalam fungsi1 : x = %d, y = %d\n”, *x , y);
return y ;            /* membalikkan nilai y ke fungsi utam  ke y+=fungsi(&x) */    
}
output : 







Catt : pengiriman alamat sebagai argumen menyebabkan perubahan nilai pada fungsi akan menyebabkan nilai pada fungsi utama juga berubah.

B. Pointer dan Array

 Identifier suatu array equivalent dengan alamat dari elemen pertama, pointer equivalent dengan alamat elemen pertama yang ditunjuk. Perhatikan deklarasi berikut :  int numbers [20];
  int *p;

Maka deklarasi di bawah ini juga benar :   p = numbers; p dan numbers equivalent, dan memiliki sifat (properties) yang sama. Perbedaanya, user dapat menentukan nilai lain untuk pointer p. dimana numbers akan selalu menunjuk nilai yang sama seperti yang telah didefiniskan. P, merupakan variable pointer, numbers adalah constant pointer. Karena walaupun instruksi di atas benar, tetapi tidak untuk instruksi di bawah ini :

  numbers = p;

Karena numbers adalah array (constant pointer), dan tidak ada nilai yang dapat diberikan untuk identifier constant (constant identifier).
Operasi penambahan pointer merupakan suatu peningkatan nilai pointer yang menunjukkan lokasi nilai data berikutnya di memory. Misalkan  variael pointer x menun jukkan alamat memori 1000, maka operasi penambahan x+1 menunjukkan alamat 1000+sizeof(x).
Misalkan suatu array dengan nama x dan pariabel pointer dengan nama p.Alamat elemen-elemen larik dimensi satu ini mulai elemen pertama sampai dengan ke n dapat ditunjukkan sbb :

Elemen ke 1 : &x[0] atau x atau x+0 atau p atau p+0
Elemen ke 2 : &x[1] atau x+1 atau p+1
Elemen ke 3 : &x[2] atau x+2 atau p+2
Elemen ke n : &x[n-1] atau x+(n-1) atau p+(n-1)

Sedangkan untuk mengakses nilai dari elemen array dapat diakses sbb :
Elemen ke 1 : x[0] atau *x atau *(x+0) atau *p atau *(p+0)
Elemen ke 2 : x[1] atau *(x+1) atau *(p+1)
Elemen ke 3 : x[2] atau *(x+2) atau *(p+2)
Elemen ke n : x[n-1] atau *(x+(n-1)) atau *(p+(n-1))
Contoh 1:
#include<stdio.h>
int main ( ) { 
int a[5]; 
int *p;
p = a; *p = 10;   
p++; *p = 20;  
p = &a[2];
*p=30; 
p = a+3;
*p = 40; 
p = a ;
*(p+4) = 50; 
for(int n = 0; n< 5; n++) 
        printf(„%d,”,a[n]);  return 0;  }



penjelasan :   p = a → p = &a[0] ; *p = 10 → a[0] = 10
p++ → p +1 → a + 1 →&a[1];  *p = 20 → a[1] = 20 p = &a[2] → p = a+2 ; *p = 30 → a[2] = 30 p = a+3 → p = &a[3] → *p =40 → a[3] = 40 p = a; *(p+4) = 50 → *(a+4) = 50 →&a[4] = 50 

Contoh2 :
#include<stdio.h>
main ( ) { 
int x[5]; 
int *p;
p = x;
x[0] = 7; 
x[1] = x[0];
x[2] = *p + 4 ;   // x[2] diisi dengan nilai x[0] + 4 = 7+4 = 11 
x[3] = *(p+2) – 2;  // x[3] diisi dengan nilai x[2] – 2 = 11 – 2 =9 
x[4] = *(x+3);   // x[4] diisi dengan nilai x[3] = 9 
printf(“%d %d %d %d %d”, x[0], x[1], x[2], x[3], x[4]);


KARAKTER DAN STRING



1.  Operasi Karakter

Fungsi-fungsi pustaka untuk opersai karakter berada pada file judul ctype.h.
a. Menyeleksi Status Karakter
Fungsi-fungsi pustaka atau mako yang dapat digunakan adalah :

Nama Makro      Kelompok kode ASCII                             Keterangan
                           untuk nilai benar  

isascii(c)              0-127                                                       Karakter berkode ASCII 0 s/d 127

iscntrl(c)              0-31 dan 127                                           Karakter-karakter control

isspace(c)             9,10,13,32                                               Karakter spasi, backspace dan enter                                                                                                          (whitespace karakter)

isgraph(c)            33-126                                                     Karakter yg dapat dicetak selain spasi

isprint(c)             33-126                                                     Semua karakter yg dpt dicetak

ispunch(c)           33-47,58-64,91-96,123-126                    Karakter  yg  dapat  dicetak kecuali spasi,                                                                                                 huruf dan agka.

isalnum(c)           348-57,65-90,97-122                              Karakter huruf dan angka

isalpha(c)            65-90,97-122                                           Karakter-karakter huruf

islower(c)            97-122                                                    Karakter huruf kecil

isupper(c)            65-90                                                      Karakter huruf besar

isdigit(c)              48-57                                                      Karakter-karakter angka


Makro-makro ini akan menghasilkan nilai benar (True) jika nilai karakter yang diseleksi termasuk dalam status kelompoknya.

Contoh1 :
#include<stdio.h>
#include<conio.h>   //file header untuk fungsi getche()
#include<ctype.h>  //file header untuk fungsi isspace(c)
#define lagi 1 main() {
int karakter;
do { karakter = getche();           // menerima input data karakter tanpa enter if(isspace(karakter)) break; } /*bila yg diinput berupa spasi, backspace,   tab atau  enter maka keluar dari proses looping*/
while(lagi);    /*looping dilakukan selama menerima input*/    
}

Contoh2 :
#include<stdio.h>
#include<conio.h>
#include<ctype.h>  
main() {
int input;
input = getche();    //input tanpa penekanan enter
if(isalpha(input))
printf(“  adalah huruf\n”); 
   else printf(“  bukan huruf\n”); 
}
output :   d  adalah huruf
                1  bukan huruf

ket : if(isalpha(input)) printf(“adalah huruf\n”);  artinya bila input benar berisi karakter huruf  maka akan dicetak adalah huruf dan bila tidak akan mencetak bukan huruf.

b. Mengkonversi Nilai Karakter fungsi : 
tolower() : merubah karakter huruf besar menjadi huruf kecil toupper() : merubah karakter huruf kecil menjadi besar

Contoh :
#include<stdio.h>
#include<conio.h>
#include<ctype.h>   
main() {
char kata = „A‟,jawab;
do {
printf(“%c %c\n”, tolower(kata),toupper(„b‟)); 
printf(“Mau coba lagi : “); 
jawab = getchar();    }
while(toupper(jawab) = = „Y‟ );  }

Ouput :
    a B
    Mau coba lagi : y
    a B
    Mau coba lagi : t

Ket : program diatas akan mencetak A menjadi huruf kecil dan B menjadi huruf besar. Perintah while(toupper(jawab) ==‟Y‟) berarti looping akan dilakukan selama jawab = „Y‟ atau „y‟ karena toupper(„y‟) = „Y‟.

2. Operasi String
Suatu string merupakan array dari karakter. Nilai suatu string ditulis dengan tanda petik dua. Suatu nilai string disimpan di memory dengan diakhiri oleh nilai „\0‟ (null). “ABC” disimpan menjadi A B C „\0‟
Inisialisasi String : 
char kota[ ] = {„C‟,‟o‟,‟r‟,‟v‟,‟a‟,‟l‟,‟l‟,‟i‟,‟s‟,‟\0‟};     
char kota[10] = “Corvallis” ;
      char kota[ ] = “Corvallis” ;

Konstatnta srting, sebagaimana halnya nama array, diperlakukan oleh kompiler sebagai sebuah pointer. Maka pernyataan berikut sama dengan inisialisasi di atas.
      char *kota = “CORVALLIS”;

perintah :
printf(“%s, %c%c”, kota, kota[1],kota[2]); Output : CORVALIS, OR
%s kode format untuk kota berarti mencetak CORVALLIS. %c, kota[1] berarti mencetak elemen array ke-1 dari kota yaitu „O‟, %c,kota[2] berarti mencetak elemen array ke-2 dari kota yaitu „R‟.
 Seperti halnya Array, String bila tidak diberi nilai awal maka ukuran karakter harus ditulis, Misal     : char Nama[20];
Atau boleh ditulis sebagai pointer   : char *Nama ;


Fungsi2 standar string terdapat pada file judul string.h
1. Menyalin string
Fungsi : strcpy()
Bentuk : srtcpy(string1,string2). Nilai string2 akan dicopy ke string1.
Contoh :  strcpy(kota, “satu”) maka string satu akan dicopy ke variable kota.
2. Menghitung panjang string 
Fungsi : strlen()
Contoh : strlen(“Corvallis”) maka akan dihasilkan nilai 9
3. menggabungkan string fungsi : strcat(string1,string2). Nilai string1 akan digabung dengan string2 dan disimpan didalam string1.
Contoh : char kota[]=”satu”;
      strcat(kota, “dua”) maka kota[ ] = “satudua”
4. Mencari Nilai karakter di string
Fungsi : strchr()
Contoh : char String[ ] =”Abcde”; char *hasil ;
      Hasil = strch(String, „B‟); printf(“%s”, hasil); 
      Maka Hasil akan bernilai “Bcde”
5. Membandingkan dua nilai string
Fungsi : strcmp()
Membandingkan dua nilai string akan menghasilkan nilai integer berupa :
- > 0 bila sring pertama lebih kecil daripada string kedua
- 0 bila string pertama = string kedua
- < 0 bila string pertama lebih besar dari string kedua

Contoh program :
#include <stdio.h>
#include “string.h”
int main( ) { 
char kata1[ ] = “Ibu Kota”, *kata2 = “ Jakarta”, data1[ ] ={„A‟,‟B‟,‟c‟,‟d‟,‟\0‟}; 
char data2[ ] = “ABCD”,*baru ; int hasil;
printf(“panjang string kata1 : %d \n”,strlen(kata1); //menghitung panjang “Ibu Kota” 
strcat(kata1,kata2);                    //mengabung kata1&kata2 disimpan di kata1 
printf(“nilai string kata1 setelah operasi : %s \n”,kata1);
strcpy(kata2,data1);                  //mencopy string data1 disimpan di kata2 
printf(“nilai string kata2 setelah operasi : %s \n”,kata2); 
hasil = strcmp(data1,data2);    //membandingkan data1 dan data2 
if (hasil = = 0) printf(“Data1 sama dengan data2”)   
else if(hasil< 0) printf(“Data1 lebih kecil dari data2”);   
else printf(“Data1 lebih besar dari data2”);
baru = strchr(data2,’C’);       //mencari karakter‟C‟ pada data2, hasil disimpan di baru
printf(“\nHasil mencari karakter C : %s”, baru);
return 0;                                 //nilai balik ke fungsi main  
}

Output :  panjang string kata1 : 8
     Nilai string kata1 setelah operasi : Ibu Kota Jakarta
     Nilai string kata2 setelah operasi : ABcd
     Data1 lebih besar dari data2
     Hasil mencari karakter C : CD


Nilai yang tersimpan pada tiap variabl setelah operasi :
kata1= “Ibu Kota Jakarta” karena menyimpan hasil operasi strcat(kata1,kata2). kata2 = “Abcd” karena menyimpan hasil opersi strcpy(kata2,data1) data1 = “Abcd” data2 = “ABCD”
hasil  = lebih besar dari nol karena karakter „c‟ lebih besar dari „C‟ baru   = “CD”

    






FUNGSI BAHASA C



 Suatu fungsi adalah suatu bagian dari program yang dimaksudkan untuk mengerjakan suatu tugas tertentu dan letaknya dipisahkan dari bagian program yang menggunakannya.

Tujuan penggunaan fungsi :
1. Program menjadi terstruktur
2. Dapat mengurangi pengulangan kode program.

Fungsi dapat diimplementasikan dalam tiga bentuk :
1. Pendeklarasian fungsi sebagai prototype fungsi.
2. Pendefinisian fungsi.
3. pemanggilan fungsi dari program lain.

1. Prototipe Fungsi
 Prototipe fungsi merupakan model dari sebuah fungsi yang berguna untuk mendeklarasikan cirri-ciri fungsi, meliputi : 1. nama fungsi
2. tipe nilai balik fungsi.
3. jumlah dan tipe argument.

Bentuk umum :   jenis_data nama fungsi (jenis_data, jenis_data,…);
Prototype fungsi tidak perlu dituliskan bila suatu fungsi terletak di atas fungsi yang memanggilnya. 

  Contoh :  
long kuadrat(long);        
int maks(int a, int b);
void garis( );
long nilai(int,int);

2. Pendefinisian Fungsi
 Mendefinisikan fungsi adalah menyusun perintah-perintah yang akan dilakukan fungsi itu sesuai dengan tugas yang akan dilakukannya.

Bentuk umum :
                      [jenis data] nama_fungsi ([jenis_data arg1], jenis data ag2],…)
                     {
                           [deklarasi variable];
                           [kode program];
                           [pernyataan return];
                       }  
   
3. Pemanggilan Fungsi
 Fungsi-fungsi yang telah didefinisikan dapat dipanggil dari bagian-bagian fungsi lain. Pada saat sebuah fungsi dipanggil, alur eksekusi program akan berpindah ke fungsi yang dipanggil itu. Setelah selesai mengeksekusi fungsi, kendali program akan dikembalikan kepada fungsi yang memanggil, dan alur eksekusi program dilanjtukan pada pernyataan setelah pemanggilan fungsi tersebut.

Bentuk Umum :
      Nama_fungsi( [jenis_data arg1], [jenis data ag2],…);   
      Nama fungsi( );       
                        
Contoh fungsi tanpa nilai balik :

#include <stdio.h> void main( )
{  void factor( );                   /*prototype fungsi*/
  int angka;
  printf(“berikan sebuah bilangan bulat: “);
  scanf(“%d”, &angka);
  factor(angka);                    /*pemanggilan fungsi*/
}
void factor(int angka)   /*fungsi*/
{  int f,g;
f = 2;
  while (angka %f != 0)       /*selama angka mod f tdk sama dengan 0*/
  f++;
g = angka/f; printf(“KPK = %d, PBB = %d\n”,f ,g);
}

output :  berikan sebuah bilangan bulat: 27
              KPK = 3, PBB = 9
      
Pengiriman Argumen
  Pengiriman data dari satu fungsi ke fungsi lain, dapat dilakukan dengan dua cara:
1. mengirimkan salinan data, disebut juga pengiriman dengan nilai (passing by value), dan
2. mengirimkan alamat data, disebut juga pengiriman dengan alamat (passing by reference atau passing by address).

Contoh :
/*1. pengiriman argument dengan nilai dan fungsi dengan nilai  balik*/

#include<stdio.h> void main ( )
{
  int fungsi(int x);          /*prototipe fungsi*/ 
  int x = 5, y =4;
  printf(“Dalam fungsi main( ):
  x = %d, y = %d\n”, x, y); 
  y += fungsi(x);           /*memanggil fungsi &mengirim nilai x */ 
  printf(“Dalam fungsi main( ): x = %d, y = %d\n”, x, y);
}

int fungsi(int x)                  /*pendefinisian fungsi*/
{ int y;
  y = ++x; printf(“Dalam fungsi :
  x = %d, y = %d\n”, x,y); return y;       // kembali ke prog utama&mengirim nilai y ke y+ = fungsi(x) 
}
output : 
Dalam fungsi main( ) : x =  ,y =
Dalam fungsi : x =  , y = 
Dalam fungsi main( ) : x =   ,y = 

return merupakan perintah yang berfungsi untuk mengembalikan nilai dari fungsi.  

Bentuk Umum: return [(ekspresi)]

Contoh :   return;  return 0;  return (x*x);  return (x > y  ? x : y)

Lingkup Variabel
• Variabel internal (lokal) adalah variabel yang dideklarasikan dalam fungsi. Hanya dikenal oleh fungsi tempat variabel dideklarasikan.
• Variabel eksternal (global) merupakan variabel yang dideklarasikan di luar fungsi. Dapat diakses oleh semua fungsi.
• Variabel Statis dapat berupa variabel internal (lokal) maupun variabel eksternal (global). Variabel statis tidak akan hilang sekeluarnya dari fungsi (nilai pada variabel akan tetap).
• Variabel register adalah variabel yang nilainya disimpan dalam register dan bukan dalam memori RAM.

Fungsi Rekursi
Fungsi C dapat dipakai secara rekursi maksudnya adalah suatu fungsi dapat memanggil dirinya sendiri.
Syarat-syarat :
1. Harus ada kasus penghentian.
2. Tiap-tiap sturuktur pemanggilan harus lebih sederhana daripada srtruktur pemanggilan sebelumnnya.

Proses rekursi
1. Semua variable otomatis yang terdapat di dalam fungsi rekursif akan memiliki lokasi memory sendiri pada setiap pemanggilannya.
2. Pernyataan-pernyataan yang terdapat sebelum rekursif akan dieksekusi dengan urutan yang sama.
3. Pernyatan-pernyataan yang terdapat setelah pemanggilan rekursif akan dikerjakan dengan urutan yang terbalik terhadap pemanggilan.
4. Kode program untuk fungsi rekursif tidak duplikat, walaupun fungsi tersebut dipanggil beberapa kali.


Contoh 1:
#include <stdio.h>
void main( )
{
  void hitung(int) ; 
hitung(1) ;                    /*pemanggilan fungsi dan mengirim nilai 1 */      }

void hitung (int n)
{  printf(“%d angka, ”,n);  if (n<5) hitung(n+1);  // fungsi rekursi dengan menaikkan nilai n selama n < dari 5
printf(“%d angka ,”,n);  // pemanggilan rekursif dikerjakan dengan urutan yang    terbalik terhadap pemanggilan, yaitu n dari 5 sampai 1
}

output :  1 angka, 2 angka, 3 angka, 4 angka, 5 angka, 5 angka, 4 angka, 3 angka, 2 angka, 1 angka

Contoh2 :

#include <stdio.h> #include<conio.h> void main( )
 {  int m,n;
    long pangkat (int, int);            /*prototipe fungsi*/     printf(“input bilangan dan eksponen : “); scanf(“%d %d, &m, &n);
    printf(“%d pangkat  %d = %ld\n”, m, n, pangkat(m,n) ; getch( );

long pangkat(int m,int n)                  /*fungsi*/
{
    static long p = 1;                     /*p berupa variable statis*/   
    if (n = = 0) return 1;                /*syarat penghentian*/   
    else
        p = m* pangkat(m, n-1);   /*pemanggilan rekursif*/
    return p;   }

output :    input bilangan dan eksponen : 3 4
                3 pangkat 4 = 81

Jenis-jenis rekusif :
1. Rekursi akhir (tail recusive), apabila pemanggilan dilakukan pada bagian akhir fungsi.
2. Rekursi tunggal (singly rekursi), apabila tiap-tiap pemanggilan paling banyak membentuk satu pemanggilan lagi.
3. rekursi ganda (doubly recursive), apabila tiap-tiap pemanggilan membentuk lebih dari satu pemanggilan.

Contoh variable local, global dan static:

#include <stdio.h> int A = 10;     // A variable global
void ingat();  //deklarasi fungsi atau prototype fungsi
void main( )
{  int m = 10;  //m variable lokal 
    printf(“main() : m = %d dan A = %d\n”, m,A); 
    ingat();  ingat();  ingat();  }

void ingat()
{   static int m = 77 ;  m++ ;
     printf(“ingat() : m = %d dan A = %d” , m,A);
}

output :  main() : m = 10 dan A = 10 ingat() : m = 78 dan A = 10 ingat() : m = 79 dan A = 10

KONDISI DAN ARRAY




Kondisi

Penyeleksian Kondisi

1. statement if


a. Bentuk sederhana 

Bentuk Umum :  if (kondisi)
                                   statemen ;

Contoh :

• Tanpa Blok statemen 
     if(jumlah > 2)
          Tunjangan = 0.3;

• Dengan blok statement :
     if(jumlah>2) { 
         Tunjangan = 0.3;
         Potongan = 0.07;
    }

b. Bentuk if-else

Bentuk Umum :  if (kondisi)
                                   statement; 
                            else
                                   statement;

Jika kondisi yang diseleksi bernilai benar maka statemen yang mengikutinya akan diproses dan bila kondisi bernilai salah maka statemen setelah else yang akan diproses.

c. Bentuk if-else-if…else

Bentuk Umum :  if (kondisi1)
                                  Statement;
                            else if (kondisi2)
                                  statement;
                           ………
                           else
                                  statement;
Contoh :
     
     printf("Masukkan pilihan : ");
     scanf(“%d”,&menu);
     if (menu = = 1)
             printf(“menu anda nasi goreng\n”);   else if (menu = = 2)
             printf(“menu anda nasi uduk\n”);
     else
             printf(“tidak ada menu\n”);

d. Bentuk if bersarang (Nested if)

 Bentuk Umum :     if (kondisi1)
                                      if (kondisi2)
                                          …..
                                              if  (kondisi n)
                                                      statement;  
                                              else
                                                      statement;
                                           .…..
                                      else
                                              statement;
                               else 
                                        statement;

  Contoh :   

if(Nilai >= 80)      
       if(Nilai = = 80) {
               printf(“Nilai Anda %d \n”, Nilai);
               printf(“Nilai Anda cukup”); }
       else {
               printf(“Nilai Anda %d \n”, Nilai);
               printf(“Nilai Anda memuaskan”); }   
else {
      printf(“Nilai Anda %d \n”, Nilai);
      printf(“Nilai Anda kurang”);  }
  
e. Bentuk if kondisi jamak

Kondisi jamak berhubungan dengan operator logika AND(&&), OR(||), atau NOT(!) untuk menyeleksi beberapa kondisi sekaligus.
  Contoh :

    if(A>5 || B< 3 && C= = "Y")
      printf (“kondisi benar”);
    else
      printf(“kondisi salah”);

    Jika diberi nilai A=4, B = 5, C = "Y" maka  hasilnya :   kondisi salah

2. Statement switch…case

 Bentuk Umum :
 switch(kondisi) {
       Case konstanta1:
         Statement-statement;
         Break;
       Case konstanta2:
         Statement-statement;
         Break;
         ………………     
        default:
         statement-statement; }
    
Statement switch akan menyeleksi kondisi yang diberikan dan kemudian membandingkan hasilnya dengan konstanta-konstanta yang berda pada case. Jika hasil dari kondisi sama dengan konstanta yang ada di case maka statementstatement yang ada di case akan diproses sampai ditemui statemen break untuk keluar dari penyeleksian switch. Jika semua konstanta tersebut tidak ada  yang sama maka statement yang berada pada default akan dijalankan.  

Contoh : 

  #include <stdio.h> 
  main( ) {
      int nilai;     
      scanf(“%d”,&nilai);
      switch (nilai) {
                case 1: printf(“satu”); break;     
                case 2: printf(“dua”); break;
                default: printf(”tidak ada”); break; }
}

Array
 
 
Sekumpulan data yang sejenis dapat disimpan dalam sebuah objek data yang disebut array.

1. Array dimensi Satu.


Bentuk Umum:
jenis_data nama_array[ukuran];
Jenis_data nama_array[ukuran] = {nilai1,nila2,..}; 

Contoh: 
int nilai[3];
int nilai[3] = {1,2,3}; 
int nilai[] = {1,2,5}; 

ukuran array boleh tidak ditulis jika elemenya disebutkan.

Srting :
char hari [3] [7] ={“senin”,” selasa”, “jumat”};   
    [3] = banyaknya elemen array 
    [7] = banyaknya karakter setiap elemen.
  
  Contoh 1: 
  #include<stdio.h>  
  main() {  
  int I;
  float nilai[4];  //array nilai dengan 4 elemen bertipe float   
  printf(“ Masukkan 5 buah nilai suhu\n”);   
  for( I = 1; I<4 ; I++) {  
           printf(“nilai  ke %d : “, I+1);      
           scanf(“%f”,&nilai[I]);     
           tot = tot + nilai[I]; }
           printf(“Total Nilai : %d”,tot); } 

Output :
      nilai ke 1 : 2     
      nilai ke 2 : 3
      nilai ke 3 : 1
      nilai ke 4 : 6    
      Total Nilai : 12        

Contoh array karakter:
#include”stdio.h”
main() { 
int i, j;
char nama[3][7]={“ Dian”,”Adi”,”Santi”}; 
for(i=0; i<3;i++) {
       for (j = 0;j <7;j++)
             printf(“%c”,nama[i][j] );printf(“\n”);}
  }

Output :  Dian___Adi____Santi__

Contoh array string:
#include”stdio.h” main() { 
int i,
char nama[3][7]={“ Dian”,”Adi”,”Santi ”};  
for(i=0; i<3;i++) 
      printf(“%s”,nama[i]);}
}

Output : DianAdiSanti

Catt :  Array string dimensi satu dapat dibentuk dari array karakter dimensi dua, array  string dimensi dua dapat dibentuk dari array karakter dimensi tiga dan seterusnya.

2. Array dimensi dua
Bentuk Umum :
Jenis-data nama_array[ukuran brs][ukuran kolom];
Missal :  
    int nilai[2][3];
    Int nilai[2][3] = {1,2,3,4,5,6};
    int nilai[ ][3] = {1,2,3,4,5,6);
String : 
    char [3][2][10]={“Ani”,”Dian”,”Candra”,”Erni”,”Kiki”,”Lusi”};
    [3] = banyaknya elemen baris
    [2] = banyaknya elemen kolom
    [10] = banyaknya karakter setiap elemen

Contoh :

/*program matriks*/
#include <stdio.h>
#include <conio.h>
#define brs 2
#define kol 3

void main( ) {
  int data[brs][kol]; 
  int n,m;
   for (m = 0; m < brs; m++) {
      for (n = 0; n< kol; n++) { 
         printf(“masukan nilai matrik[d % ][%d] : ”,m,n);
         scanf(“%d”, &nilai); 
         printf(“\n”);     
         data[m][n] = nilai; }
   clrscr();
   }
   for (m = 0 ;m<brs;m++) {
      for (n = 0;n<=kol;n++)     
         printf(“3%d”,data[m][n]);
         printf(“\n”); }
     }
 


Sabtu, 06 Januari 2018

Register

  • berfungsi sebagai tempat Sementara hasil suatu operasi arithmetika atau logika (AL, AH, AX dan EAX). 
  • berfungsi Sebagai akumulator dan berhubungan dengan jenis-jenis operasi khusus seperti Aritmetika, In/Out, Shift,Logic, Rotate, dan operasi desimal berkode biner.  
  • berfungsi untuk Memasukkan nomor layanan interupsi, untuk keperluan pemesanan sebuah layanan interupsi (register AH).  
  • berfungsi Menyimpan bilangan yang dikalikan (reg AL, AX, EAX) dan setengan bagian terkecil (LSB) dari hasil perkalian (register DX-AX dan EDX-EAX).  
  • dan Menyimpan setengah bagian terkecil(LSB) sebuah bilangan dibagi (DX-AX dan EDX-EAX) dan hasil bagi (AL, AX, EAX).

BX (BH + BL) = Basis Register

  • Base register adalah register untuk menyimpan alamat offset data yang terletak di memori (BL, BH, BX dan EBX)
  • Berfungsi Sebagai register base untuk mereferensi alamat memori. Operasi yang dapat dilakukan adalah Rotate, Logic, Shift, dan Aritmetika.

CX (CH + CL) = Counter Register

  • Pencacah untuk operasi loop (CX dan ECX)
  • Pencacah untuk operasi shift dan rotate (CL)
  • Pencacah (counter) untuk operasi string (CX)

DX (DH + DL) = Data Register

  • Data register adalah register serbaguna yang berfungsi sebagai :
  • Penyimpan hasil perkalian 16 bit (DX-AX) dan 32 bit (EDX-EAX).
  • Penyimpan hasil pembagian (DX-AX dan EDX-EAX)
  • Penyimpan data hexadesimal (kode ASCII) di reg DL untuk dicetak di layar monitor.

2. Segmen Register

  • CS = Code Segmen Register
untuk menunjukkan alamt instruksi berikutnya, Mencatat segment dari kode program atau instruksi, register CS berpasangan dengan register IP (Instruction Pointer) dalam format CS:IP.

  • DS = Data Segmen Register
untuk menunjukkan alamat data pada transfer register, Menyimpan alamat dari segment dimana data terletak.

  • SS = Stack Segmen Register
dengan SP u/ menunjukkan stack dan memanggil suatu prosedur (CALL) dan mengarah ke program utama (RET), Menyimpan alamat segment memori yang dipergunakan sebagai stack.

  • ES = Segmen Ekstra Daftar
register tambahan untuk operasi string, Menyimpan alamat segment tambahan, misalnya alamat display, alamat sistem operasi, dan sebagainya.


3. Pointer Register

IP = Instruction Pointer Register

Register yang berpasangan dengan CS sebagai register utama untuk menunjukkan baris perintah program. Pada saat program dijalankan, IP akan langsung menunjuk pada awal program. Code Segment dan Instruction Pointer berfungsi sebagai program counter ditulis dengan format CS:IP. Secara umum, kode mesin diletakkan di Code Segment, semua data diletakkan di Data Segment, dan operasi PUSH dan POP dilakukan di Stack Segment.

SP = Stack Pointer Register

Digunakan untuk operasi stack seperti menyimpan alamat return saat memanggil subroutine. SP merupakan register yang secara implisit digunakan oleh perintah PUSH dan POP yaitu menyimpan dan mengambil kembali dari stack.

BP = Basis Pointer Register

Fungsi: Sebagai penunjuk base dalam stack yang disediakan untuk penyimpanan data. BP juga digunakan si dengan bahasa pemrograman misalnya Assembler dan C.


4. Indeks Pendaftaran

Index Register sama dengan pointer register, sering digunakan untuk menunjukkan alamat sebuah data di lokasi memori pada operasi string

SI = Source Indeks Register

Menyimpan nilai-nilai offset dalam segment data memori pada saat bersangkutan.

DI = Destination Indeks Register

Menyimpan nilai-nilai offset dalam segment data memori pada saat bersangkutan.

5. Flag Register

Flag Register berfungsi untuk menunjukkan status (keadaan) sesaat dari mikroprosessor.
Bit-bit pada flag akan mengalami perubahan, tergantung proses yang baru saja berlangsung. Adapun kode bit yaitu sebagai berikut :
C (carry) -> 1=ada carry out 0= tdk ada carry out
P (Parity) -> 1=paritas genap 0= paritas ganjil
A (auxxiliary carry) -> 1=ada carry 0=tdk ada carry
Z (zero) -> 1=hasilnya nol 0=hasilnya bukan nol
S (sign) -> 1=hasilnya negatif 0=hasilnya positif
T (trap) -> bila diset 1 dimungkinkan melakukan debugging.
I (interrupt) -> 1= pin INTR enable 0=pin INTR disable
D (direction) -> 1=cacahan turun 0=cacahan naik
(Overflow) -> menunjukkan adanya kelebihan kapasitas atau tidak
IOPL (input-output privalege level) -> untuk protected mode
NT (nested task) -> indikasi dari penggabungan dengan operasi lain.
RF (resume) -> untuk debugging
VF (Virtual mode) -> untuk operasi virtual pada protected mode
AC (alignment check) -> untuk data word dialamati ke memori      

Konversi Bilangan



Konversi Bilangan Desimal

Konversi bilangan desimal merupakan suatu proses mengubah bentuk bilangan decimal kedalam bentuk bilangan lainnya (bilangan biner, bilangan oktal atau bilangan hexadesimal).

Konversi Bilangan Desimal Ke Biner
Konversi bilangan desimal ke biner merupakan suatu proses mengubah bentuk bilangan desimal kedalam bentuk bilangan biner. Ada beberapa cara yang dapat agan lakukan untuk mengkonversi bilangan desimal ke biner. Berikut caranya :  Cara yang pertama, yaitu dengan membagi bilangan desimal dengan nilai 2 (basis). Cara ini merupakan cara yang sering digunakan oleh banyak orang. Nilai bilangan desimal 77 = 1001101 (bilangan biner).

konversi bilangan desimal ke biner
  1. Cara yang kedua, yaitu dengan menjumlahkan atau menambahkan bilangan-bilangan dengan pangkat dua (basis) sampai jumlahnya sama dengan bilangan desimal yang akan dikonversikan.
cara konversi bilangan desimal ke biner

Konversi Bilangan Desimal Ke Oktal
Konversi bilangan desimal ke oktal merupakan suatu proses mengubah bentuk bilangan desimal kedalam bentuk bilangan oktal, dengan cara membagi bilangan desimal dengan nilai 8 (basis). Untuk memahaminya silahkan agan simak contoh dibawah ini.

Nilai bilangan desimal 77 = 115 (bilangan oktal)
konversi bilangan desimal ke oktal
Konversi Bilangan Desimal Ke Hexadesimal
Konversi bilangan desimal ke hexadesimal merupakan suatu proses mengubah bentuk bilangan desimal kedalam bentuk bilangan hexadesimal, dengan cara membagi bilangan desimal dengan nilai 16 (basis). Silahkan agan simak contoh dibawah ini untuk lebih jelasnya.

Nilai bilangan desimal 77 = 4D (bilangan hexadecimal)
konversi bilangan desimal ke hexadesimal

Konversi Bilangan Biner

Konversi bilangan biner merupakan suatu proses mengubah bentuk bilangan biner kedalam bentuk bilangan lainnya (bilangan desimal, bilangan oktal atau bilangan hexadesimal).
Konversi Bilangan Biner Ke Desimal
Agan dapat mengkonversi bilangan biner ke desimal, yaitu dengan cara menggunakan bantuan tabel konversi bilangan biner ke desimal dibawah ini.
tabel konversi bilangan biner ke desimal
Contoh konversi bilangan biner 1011100 ke bilangan desimal :
konversi bilangan biner ke desimal
Jadi, nilai bilangan biner 1011100 = 92 (bilangan desimal)

Konversi Bilangan Biner Ke Oktal
Cara mengkonversi bilangan biner ke oktal dapat dilakukan dengan mengkonversi tiap-tiap tiga buah digit biner. Silahkan agan simak tabel konversi bilangan biner ke oktal dan contonya dibawah ini.
tabel konversi bilangan biner ke oktal
Contoh konversi bilangan biner 1011100 ke bilangan oktal :
konversi bilangan biner ke oktal
Jadi, nilai bilangan biner 1011100 = 134 (bilangan oktal)
Konversi Bilangan Biner Ke Hexadesimal
Cara mengkonversi bilangan biner ke hexadesimal dapat dilakukan dengan mengkonversi tiap-tiap empat buah digit biner. Silahkan agan simak tabel konversi bilangan biner ke hexadesimal dan contonya dibawah ini.
tabel konversi bilangan biner ke hexadesimal
Contoh konversi bilangan biner 1011100 ke bilangan hexadesimal :
konversi bilangan biner ke hexadesimal
Jadi, nilai bilangan biner 1011100 = 5C (bilangan hexadesimal)

Konversi Bilangan Oktal

Konversi bilangan oktal merupakan suatu proses mengubah bentuk bilangan oktal kedalam bentuk bilangan lainnya (bilangan desimal, bilangan biner atau bilangan hexadesimal).
Konversi Bilangan Oktal Ke Desimal
Agan dapat melakukan konversi bilangan oktal ke desimal, yaitu dengan cara mengalikan masing-masing digit bilangan dengan position valuenya. Contoh konversi bilangan oktal 145 ke bilangan desimal :
konversi bilangan oktal ke desimal
Jadi, nilai bilangan oktal 145 = 105 (bilangan desimal)
Konversi Bilangan Oktal Ke Biner
Konversi bilangan oktal ke biner dapat dilakukan dengan mengkonversi masing-masing digit oktal ke tiga digit biner. Untuk tabelnya silahkan agan lihat pada konversi biner ke oktal diatas. Contoh konversi bilangan oktal 145 ke bilangan biner :
konversi bilangan oktal ke biner
Jadi, nilai bilangan oktal 145 = 001100101 (bilangan biner)
Konversi Bilangan Oktal Ke Hexadesimal
Konversi bilangan oktal ke hexadesimal yang pertama harus dilakukan adalah dengan mengkonversikan bilangan oktal terlebih dahulu ke bilangan biner, kemudian baru konversikan ke bilangan hexadesimal. Contoh konversi bilangan oktal 145 ke bilangan hexadesimal.
  1. Konversi bilangan oktal ke biner terlebih dahulu :konversi bilangan oktal ke biner
  2. Kemudian konversikan bilangan biner tersebut ke bilangan hexadesimal : konversi bilangan oktal ke hexadesimal
Jadi, nilai bilangan oktal 145 = 65 (bilangan hexadesimal)

Konversi Bilangan Hexadesimal

Konversi bilangan hexadesimal merupakan suatu proses mengubah bentuk bilangan hexadesimal kedalam bentuk bilangan lainnya (bilangan desimal, bilangan biner atau bilangan oktal).
Konversi Bilangan Hexadesimal Ke Desimal
Agan dapat melakukan konversi bilangan hexadesimal ke desimal, yaitu dengan cara mengalikan masing-masing digit bilangan dengan position valuenya. Contoh konversi bilangan hexadesimal C54 ke bilangan desimal :
konversi bilangan hexadesimal ke desimal
Jadi, nilai bilangan hexadesimal C54 = 3156 (bilangan desimal)
Konversi Bilangan Hexadesimal Ke Biner
Konversi bilangan hexadesimal ke biner dapat dilakukan dengan mengkonversi masing-masing digit hexadesimal ke empat digit biner. Untuk tabelnya silahkan agan lihat pada konversi biner ke hexadesimal diatas. Contoh konversi bilangan hexadesimal C54 ke bilangan biner :
konversi bilangan hexadesimal ke biner
Jadi, nilai bilangan hexadesimal C54 = 110001010100 (bilangan biner)
Konversi Bilangan Hexadesimal Ke Oktal
Konversi bilangan hexadesimal ke oktal, yang pertama harus dilakukan adalah dengan mengkonversikan bilangan hexadesimal terlebih dahulu ke bilangan biner, kemudian baru konversikan ke bilangan oktal. Contoh konversi bilangan hexadesimal C54 ke bilangan oktal.
  1. Konversi bilangan hexadesimal ke biner terlebih dahulu :konversi bilangan hexadesimal ke biner
  2. Kemudian konversikan bilangan biner tersebut ke bilangan oktal :konversi bilangan hexadesimal ke oktal
Jadi, nilai bilangan hexadesimal C54 = 6124 (bilangan octal)

Kalkulator Bahasa C Dengan Fungsi










            Kali ini saya akan membuat program yang bertujuan untuk menghitung dua buah angka dengan operator tambah, kurang, kali dan bagi. Proses penghitungan di dalam program ini menggunakan fungsi, dimana masing-masing fungsi mewakili masing-masing operator.



            Di dalam program ini saya menggunakan variabel ang1 dan ang2 untuk menyimpan nilai dari angka yang dimasukkan user ke computer sebagai angka 1 dan angka 2, dimana kedua angka tersebut akan diproses.



            Blok sintak diatas merupakan potongan program yang berisi perintah untuk membuat tampilan utama dari program. Di dalam fungsi main() program akan meminta user untuk memasukkan 2 buah angka kemudian, program akan meminta user memilih salah satu dari 5 menu yang tersedia, yaitu : untuk menambahkan, mengurang, mengkalikan, membagi 2 angka yang tadi di masukkan dan keluar dari program ini.








            Blok sintak diatas merupakan potongan program yang berisi perintah untuk menentukan fungsi mana yang harus dipanggil. Di dalam blok sintak sebelumnya, saat user memilih menu dan user memasukkan angka 1, program akan menyimpan nilai 1 di dalam variabel pil. Kemudian, variabel pil digunakan untuk switch case, karena user memasukkan angka 1 itu berarti user memilih case 1 yang berisi perintah untuk memanggil fungsii tambah() setelah itu program menghentikan switch case dengan perintah break; .






            Blok sintak diatas merupakan potongan program yang berisi perintah untuk menambahkan kedua angka yang telah dimasukkan oleh user. Di dalam fungsi tambah() terdapat 2 parameter, yaitu ang1 dan ang2 yang berfungsi untuk mendeklarasikan 2 variabel tersebut di dalam fungsi tambah(). Hasil penjumlahan variabel ang1 dan ang2 di konversi menjadi tipe data float dan hasilnya di simpan di dalam variabel hasil. Setelah itu program mencetak variabel hasil dan memangil fungsi main().













          Blok sintak diatas merupakan potongan program yang berisi fungsi kurang(). Di dalam fungsi ini terdapat perintah untuk mengurangkan 2 angka dari variabel ang1 dan ang2 yang di konversi menjadi float dan disimpan di dalam variabel hasil. Kemudian, fungsi main() di panggil.







          Blok sintak diatas merupakan potongan program yang berisi fungsi kali(). Di dalam fungsi ini terdapat perintah untuk mengkalikan 2 angka dari variabel ang1 dan ang2 yang di konversi menjadi float dan disimpan di dalam variabel hasil. Kemudian, fungsi main() di panggil.





          Blok sintak diatas merupakan potongan program yang berisi fungsi bagi(). Di dalam fungsi ini terdapat perintah untuk membagi 2 angka dari variabel ang1 dan ang2 yang di konversi menjadi float dan disimpan di dalam variabel hasil. Kemudian, fungsi main() di panggil.

PERULANGAN  BAHASA C



 Pernyataan perulangan digunakan untuk mengulang satu atau lebih pernyataan eksekusi. Pada C++ terdapat 3 macam bentuk pernyataan perulangan, yaitu : 

Statemen FOR

Pernyataan for dipakai untuk mengulang pengeksekusian terhadap satu atau sejumlah pernyataan. 
Bentuk umum :
for ( ungkapan_1; ungkapan_2; ungkapan_3)  pernyataan;

Keterangan : 
•       Ungkapan_1, merupakan inisialisasi variabel kendali kalang. 
•       Ungkapan_2, merupakan kondisi yang menentukan pengulangan atau merupakan tes kelanjutan kalang. 
•       Ungkapan_3, merupakan pengatur / pemodifikasi nilai variabel kendali kalang. 
•       Pernyataan, merupakan pernyataan yang akan di ulang. 

Contoh 1:

#include <stdio.h>  main( ) 
{          int x; 
           
               for (x =1; x <=5; x++)  
           

            printf(“ %i ”  x );   }
 
output : 1 2 3 4 5

Contoh 2 :  
#include <stdio.h>  void main( )  {        int x; 
           
            for (x =1; x <=5;    )  
                   printf(“ %i ”  ++x );   }


For Bersarang 
Contoh 3 : #include <stdio.h> 
                  void main( )  {  
                          int x.,j ;
                          for (x = 1 ; x <= 3 ; ++x ) {                         
                                     for (j = 1; j <= x;  j++ )                          
                                                  printf(“ %d  “, j);
                                     printf(“\n”);        
                           }
                   }

Statemen WHILE 

Pernyataan while merupakan kalang kondisional yang dipakai untuk mengulang pengeksekusian terhadap satu atau sejumlah pernyataan selama kondisi terpenuhi.
Pengujian terhadap kondisi dilakukan di awal kalang. 
Bentuk umum : 

while (kondisi) 
{      pernyataan_1;    
        pernyataan_2; 
        …………… 
        pernyataan_n;    }

Keterangan : 
Pada bagian pernyataan_1 hingga pernyataan_n ada kemungkinan tidak akan dieksekusi sama sekali ( kondisi awal tidak terpenuhi ). 

Contoh4: 
#include <stdio.h> 
main( )  {   
int x= 1;
while (x <= 5)   { 
printf(“%i “, x );  x++;    }
}     


Statemen DO_WHILE 

Pernyataan do_while merupakan kalang kondisional yang dipakai untuk mengulang pengeksekusian terhadap satu atau sejumlah pernyataan. Pengujian terhadap kondisi dilakukan di akhir kalang. Kalang ini melakukan iterasi/pengulangan setidaknya satu kali.  Bentuk umum :

do 
{  pernyataan_1; 
    pernyataan_2; 
    …………… 
    pernyataan_n; 
}  while (kondisi) ; 

Keterangan : 
•  Kalang ini melakukan iterasi/pengulangan setidaknya satu kali. 
Bagian pernyataan_1 hingga pernyataan_n dieksekusi setidaknya satu kali. Selanjutnya, akan dieksekusi jika selama kondisi terpenuhi. 

Contoh 5: 
#include <stdio.h> 
main( )  {   
int x= 1;                                
while (x <= 5)   { 
printf(“%i “, x );  x++;    }
}    

a. Statemen Continue

Menyebabkan proses perulangan ke awal mulainya perulangan dengan mengabaikan statement-statement berikutnya setelah continue. Dapat digunakn untuk perulangan for, while dan do-while.
Contoh :
  #include<stdio.h>              main()
            {           int I, N; N = 2;
                         for(I= 1; I<5 ; I++)  {
                                 N= N * 2 ;
                                 if (N>16) continue;                                                       
                                        N = N + 1 ;             } 
                                 Printf(“Nilai N adalah %d”,N);           }

Output : Nilai N adalah 44

b. Statemen Break

Selain digunakan pada pernyataan switch, berak juga digunakan pada pernyataan for, while dan do-while. Kegunaanya untuk memaksa keluar dari pernytaan-pernyataan itu.
Contoh: 
#include<stdio.h>              main()
            {           int I, N; N = 2;                     
                        for(I = 1; I<5 ; I++)  {
                                     N= N * 2 ;
                                    if (N>16) break;                                                                   
                                            N = N + 1 ;        }
                                    printf(“Nilai N adalah %d”,N);
                          }

Output : Nilai N adalah 22
                       
c. Statemen goto

Dgunakan untuk melompat dari suatu proses ke bagian proses yang lain di dalam program.
Bentuk umum : goto label;

Contoh goto :
                        #include<stdio.h>
              main()  {          int A, B;
                        printf(“Masukkan Nilai  A ? “);scanf(“%d”,&A);                      
                        printf(“Masukkan Nilai  B ? “);scanf(“%d”,&B);               
                        if(B= =0) goto tak_berhingga ;                   
                        printf(“%d dibagi dengan %d adalah %d \n”, A,B,A/B);
                        goto selesai ;
                        tak_berhingga:  /*label*/   
                        printf(“%d dibagi dengan nol adalah tak berhingga”,A);
                              selesai :  /*label*/
                                  ;  //statement kosong hanya diisi dengan titik koma. 
                        }
Output :
                        Masukkan Nilai A ? 4
                          Masukkan Nilai B ? 2
                        4 dibagi dengan 2 adalah 2
           
                        Masukkan Nilai A ? 4
                        Masukkan Nilai B ? 0
                        4 dibagi dengan nol adalah tak berhingga

Penjelasan :  Bila B bernilai 0 maka program akan melompat menuju label tak_berhingga. Dan bila B tidak sama dengan nol statement yang dijalankan adalah printf(“%d dibagi dengan %d adalah %d \n”, A,B,A/B);  goto selesai ;

           

Tips & Trik Mobile Legends : Gord

     Hasil gambar untuk gord mobile legend



Intro

Gord dilahirkan di dunia sihir, dan dari kelahiran memanipulasi energi sihir adalah seperti menghirup udara kepadanya. Cinta nya hanya untuk sihir mistik yang sangat kuat, dan segera ia mampu menguasai mantra-mantra mistik yang paling mendalam dalam semua sihir. Ketika ia perlahan-lahan semakin tua, ketergantungan pada energi mistik menjadi lebih parah, sehingga akhirnya lambang-lambang mistik meresap ke dalam kulit dan tulang dan mengubah penampilannya.

Di antara semua mage di Mobile Legends, Gord memiliki skill ultimate yang cukup unik. Skill ultimate yang bernama Mystic Gush itu tidak memanfaatkan mekanisme skillshot atau targeting. Sebagai gantinya, ultimate tersebut memanfaatkan mekanisme channeling dengan lintasan serangan yang bisa digeser-geser selama durasi ultimate.


Skill

  • Mystic Favor


Mengenai satu target lima kali dengan skill akan memberikan tambahan 200 magic damage pada target tersebut.
Efek Mystic Favor ini bersinergi dengan Mytsic Gush dan Mystic Injunction. Kedua skill tersebut menghasilkan damage over time yang otomatis bisa menghasilkan lebih dari lima kali damage dalam waktu yang berdekatan sehingga Mystic Favor aktif.
  • Mystic Projectile


Gord melempar sebuah magic bomb. Musuh yang terkena tepat di tengah-tengah radius magic bomb akan terkena stun selama dua detik dan menghasilkan 30 persen tambahan damage. Bila kamu berada di pinggir dari magic bomb maka sebagai gantinya kamu akan terkena perlambatan kecepatan gerak sebanyak 70 persen.
  • Damage: 270/315/360/405/450/495
  • Mana: 90/100/110/120/130/140
  • Cooldown: 7,8/7,3/6,8/6,3/5,8/5,3 detik
Skill ini merupakan satu-satunya disable miliki Gord. Karena memiliki lintasan yang melambung maka proyektil ini memiliki travel time. Efeknya Mystic Projectile cukup sulit untuk digunakan, terutama ketika dipakai untuk menghantam target yang bergerak dengan cepat.
Usahakan untuk berlatih mengarahkan Mystic Projectile dengan cara manual, sebab fungsi auto dari Mystic Projectile tidak memperhitungkan travel time yang dimiliki skill ini.
  • Mystic Injunction


Gord memanggil lingkaran sihir dari dalam tanah. Siapapun yang berada di dalam lingkaran sihir tersebut akan terkena damage over time yang akan muncul setiap 0,5 detik.
  • Damage: 80/95/110/125/140/155
  • Mana: 90/95/100/105/110/115
  • Cooldown: 7,8/7,3/6,8/6,3/5,8/5,3 detik
Mystic Injunction akan memberikan banyak damage sekaligus sehingga bersinergi dengan Mystic Favor. Bila kamu cukup ahli dalam memakai Gord maka kamu akan akan mengkombinasikan Mystic Injunction dengan Mystic Projectile untuk memastikan musuh tetap berada di dalam area Mystic Injunction selama mungkin.
  • Mystic Gush


Gord mengeluarkan serangan berbentuk pilar energi yang bisa diarahkan selama durasi ultimate berlangsung. Siapapun yang terkena pilar energi tersebut akan terkena DOT setiap 0,3 detik.
  • Damage: 190/235/280 damage
  • Mana: 150/170/190 mana
  • Cooldown: 37,2/34,3/31,4 detik
Mystic Gush menjadi sumber burst damage utama Gord. Bila digabung dengan skill Mystic Projectile dan Mystic Injunction, Gord bisa membunuh siapa saja dalam satu cycle skill asal mereka bisa ditahan di satu titik cukup lama.

Spell


Gord tidak memiliki skill yang bersinergi dengan Battle Spell, untuk itu Gord hanya bisa memilih Battle Spell dengan fungsi yang paling dominan atau menguntungkan untuk dirinya. Karen hal ini kami menyarankan memilih Flicker untuk melarikan diri di saat terjepit.

Emblem


Emblem Set yang paling cocok untuk digunakan Gord adalah Magic Emblem Set yang akan memberikan peningkatan magic power yang dibarengi dengan sedikit penambahan pada bagian HP.

Gear

Gear build dari Gord dalam panduan ini sangat mengoptimalkan burst damage sehingga kamu akan kekurangan durability dan tidak cukup kuat untuk bertempur sendirian. Terutama ketika berhadapan dengan assassin tim musuh.
  • Enchanted Talisman


Enchanted Talisman adalah Gear yang wajib ada bagi para mage yang memiliki skill dengan mana cost yang besar. Status 50 magic power, 250 HP, dan 20 persen pengurangan cooldown tergolong lengkap untuk sebuah item awal dengan harga yang cukup terjangkau (1870).
Kemampuan pasif dari Enchanted Talisman: Mana Spring, akan memberikan regenerasi 10 persen mana dari jumlah mana maksimum setiap 10 detik. Kemampuan pasif ini menjadi penjamin ketersediaan mana saat mengeluarkan skill untuk mengharras hero lawan.
  • Holy Crystal


Gord kami sarankan untuk membeli Holy Crystal karena tambahan status dan Unique Passive yang dimilikinya. Unique Passive Exterminate akan memberikan damage tambahan sebesar 15 persen untuk serangan skill berikutnya, kemampuan ini bersinergi dengan Mystic Favour milik Gord
  • Arcane Boots


Arcane Boot jadi movement Gear Gord karena tambahan status 15 magic penetration cukup melengkapi kemampuan yang dimilikinya. Sementara itu tambahan 40 movement speed tidaklah terlalu buruk untuk sebuah Gear yang tidak memiliki Unique Passive.
  • Fleeting Time


Sebagai Gear mid game, Fleeting Time akan memberikan tambahan damage dan perngurangan cooldown yang sangat menguntungkan Gord. Ditambah lagi bila Gord berhasil melakukan kill dia akan mengaktifkan Timestream yang akan mengurangi 20 persen cooldown semua skill yang sedang dipakai.
  • Devil Tears


Devil Tears menjadi Gear penjamin burst damage bagi Gord untuk meluluh lantakan musuh terutam di late game. Status berupa magic penetration yang akan meningkat ketika HP Gord di atas 70 persen akan sangat efektif digunakan Gord. Apalagi kalau mengingat Gord selalu berada di barisan belakang sehingga HP-nya tidak mungkin turun kecuali bila ada musuh yang mengincar Gord terlebih dahulu.
  • Blood Wings



Blood Wings akan memberikan 150 magic power dan 150 HP. Sementara itu Nirvana yang merupakan Unique Passive dari Blood Wings, bakal memberikan sedikit tambahan HP untuk Gord karena Blood Wings mengubah satu magic power menjadi dua HP.

Kelebihan

  • Burst damage sangat tinggi
  • Memiliki skill yang bersinergi dengan baik

Kekurangan

  • Kecepatan gerak lambat
  • Durability rendah
  • Cukup sulit digunakan oleh pemula