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
Register adalah sebagian kecil memori komputer yang dipakai untuk tempat penampungan data dengan ketentuan bahwa data yang terdapat dalam register dapat diproses dalam berbagai operasi dengan melihat berapa besar kemampuan menampung register tersebut.
Register dapat dibagi dalam 5 golongan, yaitu:
1. General Purpose Register (Scratch-Pad Register), terdiri dari:
AX (AH + AL) = Accumulator 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
- DS = Data Segmen Register
- SS = Stack Segmen Register
- ES = Segmen Ekstra Daftar
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).
- Cara yang kedua, yaitu dengan menjumlahkan atau menambahkan bilangan-bilangan dengan pangkat dua (basis) sampai jumlahnya sama dengan bilangan desimal yang akan dikonversikan.
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 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 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.
Contoh konversi bilangan biner 1011100 ke bilangan 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.
Contoh konversi bilangan biner 1011100 ke bilangan 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.
Contoh konversi bilangan biner 1011100 ke bilangan 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 :
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 :
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.
- Konversi bilangan oktal ke biner terlebih dahulu :
- Kemudian konversikan bilangan biner tersebut ke 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 :
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 :
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.
- Konversi bilangan hexadesimal ke biner terlebih dahulu :
- Kemudian konversikan bilangan biner tersebut ke bilangan oktal :
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
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
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
- 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
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
- 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 Gush
- Damage: 190/235/280 damage
- Mana: 150/170/190 mana
- Cooldown: 37,2/34,3/31,4 detik
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
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
Arcane Boots
Fleeting Time
Devil Tears
Blood Wings
Kelebihan
- Burst damage sangat tinggi
- Memiliki skill yang bersinergi dengan baik
Kekurangan
- Kecepatan gerak lambat
- Durability rendah
- Cukup sulit digunakan oleh pemula
Langganan:
Postingan (Atom)