Jumat, 12 Februari 2010

Pelajaran 2: Operator, Jenis, dan Variabel

Pelajaran ini memperkenalkan C # operator, Type, dan variable.Tujuannya adalah untuk memenuhi tujuan berikut:
• Memahami apa suatu variable.
• pengenalan dengan C # built-in type.
• Mendapatkan pengenalan untuk operator C#.
• Mempelajari cara penggunaan Array.


Variable and Type

"Variable" adalah lokasi penyimpanan data. Anda dapat menempatkan data ke dalamnya dan mengambil isinya sebagai bagian dari C # ekspresi. Penafsiran data dalam variabel dikendalikan melalui "Type".

C # adalah sebuah bahasa dengan "Type yang kuat". Jadi semua operasi pada variabel dilakukan dengan pertimbangan tentang apa variabel itu "Type" . Ada aturan yang mendefinisikan operasi apakah legal dalam mempertahankan integritas dari data yang Anda masukkan ke dalam variabel.

C # sederhana jenis Boolean terdiri dari dan tiga jenis numerik - integral, Floating Point, Decimal, dan String. Istilah "integral", yang didefinisikan dalam C # Programming Language Spesifikasi, mengacu pada klasifikasi jenis yang mencakup sbyte, byte, pendek, ushort, int, uint, panjang, ulong, dan char. Lebih rinci tersedia di bagian Jenis Integral kemudian dalam pelajaran ini. Istilah "Floating Point" mengacu pada tipe float dan double, yang dibahas, bersama dengan tipe decimal, secara lebih rinci dalam Floating Point dan Jenis Desimal bagian dalam pelajaran ini. Tipe string merupakan string karakter dan dibahas dalam The String Type bagian, kemudian dalam pelajaran ini. Bagian selanjutnya memperkenalkan jenis boolean.

Type Boolean

Tipe boolean dideklarasikan menggunakan kata kunci, bool. Mereka memiliki dua nilai: true atau false. Dalam bahasa lain, seperti C dan C + +, kondisi boolean dapat dipenuhi di mana 0 berarti false dan hal lain berarti benar. Namun, di C #-satunya nilai-nilai yang memuaskan kondisi boolean benar dan salah, yang merupakan kata kunci resmi.Listing 2-1 menunjukkan salah satu dari banyak jenis boolean cara yang dapat digunakan dalam program.

Listing 2-1. Menanpilkan Nilai Boolean: Boolean.cs

using System;

class
Booleans
{
public static void Main()
{
bool content = true;
bool noContent = false;

Console.WriteLine("It is {0} that C# Station provides C# programming language content.", content);
Console.WriteLine("The statement above is not {0}.", noContent);
}
}

Pada Listing 2-1, nilai boolean ditulis ke konsol sebagai bagian dari suatu kalimat. Satu-satunya nilai aturan untuk tipe bool entah benar atau salah, seperti yang ditunjukkan oleh penugasan true tocontent dan false noContent. Ketika berjalan, program ini menghasilkan output sebagai berikut:

It is True that C# Station provides C# programming language content.
The statement above is not False.

Type Integral

Dalam C #, integral adalah jenis kategori. Bagi siapa pun bingung karena kata Integral terdengar seperti istilah matematika, dari perspektif C # programming, ini sebenarnya didefinisikan sebagai tipe Integral dalam bahasa pemrograman spesifikasi C # . Termasukbilangan bulat, baik signed atau unsigned, dan tipe char. The char Tipe adalah sebuah karakter Unicode, sebagaimana didefinisikan oleh Standar Unicode. Tabel 2-1 menunjukkan integral jenis, ukuran, dan jangkauan.


Table 2-1. Size and Range of C# Integral Types

Type

Size (in bits)

Range

sbyte

8

-128 to 127

byte

8

0 to 255

short

16

-32768 to 32767

ushort

16

0 to 65535

int

32

-2147483648 to 2147483647

uint

32

0 to 4294967295

long

64

-9223372036854775808 to 9223372036854775807

ulong

64

0 to 18446744073709551615

char

16

0 to 65535


Tipe integral cocok untuk operasi yang melibatkan seluruh angka perhitungan. Sedang char jenis pengecualian, yang mewakili satu karakter Unicode. Seperti yang dapat Anda lihat dari tabel di atas, Anda memiliki berbagai pilihan untuk memilih dari, tergantung pada kebutuhan Anda.


Floating Point dan Type Decimal

AC # floating point baik jenis pelampung atau double. Mereka digunakan setiap waktu yang Anda butuhkan untuk mewakili bilangan real, seperti yang didefinisikan oleh IEEE 754. TypeDecimal harus digunakan bila keuangan atau uang mewakili nilai-nilai. Tabel 2-2 menunjukkan floating point dan type desimal, ukuran, ketepatan, dan jangkauan.


Table 2-2. The Floating Point and Decimal Types with Size, precision, and Range

Type

Size (in bits)

ketepatan

Jangkauan

float

32

7 digits

1.5 x 10-45 to 3.4 x 1038

double

64

15-16 digits

5.0 x 10-324 to 1.7 x 10308

decimal

128

28-29 decimal places

1.0 x 10-28 to 7.9 x 1028


Jenis floating point digunakan ketika Anda harus melakukan operasi yang memerlukan representasi fraksional. Namun, untuk perhitungan keuangan, tipe desimal adalah pilihan terbaik karena Anda dapat menghindari kesalahan pembulatan.


The string Type


Sebuah string adalah rangkaian karakter teks. Anda biasanya membuat sebuah string dengan string literal, tertutup dalam tanda kutip: "This is example a string." Anda telah melihat string yang digunakan dalam Pelajaran 1, di mana kita menggunakan metode Console.WriteLine untuk mengirim output ke konsol.


Beberapa karakter tidak dicetak, tetapi Anda masih perlu untuk menggunakannya dalam string.Oleh karena itu, C # memiliki sintaks khusus di mana karakter dapat melarikan diri untuk mewakili karakter non-printable. Sebagai contoh, biasanya untuk menggunakan baris dalam teks, yang diwakili oleh '\ n' char. The backslash, '\', mewakili melarikan diri. Ketika didahului oleh karakter melarikan diri, para 'n' tidak lagi ditafsirkan sebagai karakter abjad, tapi sekarang mewakili sebuah baris baru.


Anda mungkin sekarang bertanya-tanya bagaimana Anda bisa mewakili karakter garis miring terbalik dalam kode Anda. Kita harus melarikan diri itu juga dengan mengetik dua backslashes, seperti pada '\ \'. Tabel 2-3 menunjukkan daftar Common escape sequence.


Table 2-3. C# Character Escape Sequences

Escape Sequence

Meaning

\'

Single Quote

\"

Double Quote

\\

Backslash

\0

Null, not the same as the C# null value

\a

Bell

\b

Backspace

\f

form Feed

\n

Newline

\r

Carriage Return

\t

Horizontal Tab

\v

Vertical Tab


Fitur berguna lain C # string adalah harfiah kata demi kata (Verbatim literal), yang merupakan string dengan simbol @ prefix, seperti dalam @ "Beberapa string". Verbatim literal membuat escape sequence menerjemahkan seperti biasa untuk meningkatkan keterbacaan karakter. Untuk menghargai nilai literal kata demi kata, mempertimbangkan pernyataan jalan seperti "c: \ \ topdir \ \ subdir \ \ subdir \ \ myapp.exe". Seperti yang Anda lihat, backslashes yang melarikan diri, menyebabkan string kurang dibaca. Anda dapat meningkatkan string dengan Verbatim literal, seperti ini: @ "c: \ topdir \ subdir \ subdir \ myapp.exe".

Yang baik, tetapi sekarang anda memiliki masalah di mana mengutip teks tidak semudah. Dalam hal ini, Anda akan memberikan tanda kutip ganda ganda. Sebagai contoh, string "salinan \" c: \ \ nama file sumber dengan spaces.txt \ "c: \ \ newfilename.txt" akan ditulis sebagai kata demi kata harfiah @ "menyalin" "c: \ sumber nama file dengan spasi . txt "" c: \ newfilename.txt ".

Operator C#

Hasil yang dihitung dengan pembuatan ekspresi. Kalimat tersebut dibuat dengan menggabungkan variabel dan operator bersama menjadi pernyataan. Tabel berikut menggambarkan diizinkan operator, mereka didahulukan, dan associativity.

Table 2-4. Operators with their precedence and Associativity

Category (by

precedence)

Operator(s)

Associativity

Primary

x.y f(x) a[x] x++ x-- new typeof default checked unchecked delegate

left

Unary

+ - ! ~ ++x --x (T)x

left

Multiplicative

* / %

left

Additive

+ -

left

Shift

<< >>

left

Relational

< > <= >= is as

left

Equality

== !=

right

Logical AND

&

left

Logical XOR

^

left

Logical OR

|

left

Conditional AND

&&

left

Conditional OR

||

left

Null Coalescing

??

left

Ternary

?:

right

Assignment

= *= /= %= += -= <<= >>= &= ^= |= =>

right


Waktu associativity berarti bahwa operasi akan dievaluasi dari kiri ke kanan. Associativity kanan berarti semua operasi terjadi dari kanan ke kiri, seperti penugasan operator di mana segala sesuatu ke kanan dievaluasi sebelum hasilnya dimasukkan ke variabel di sebelah kiri.

Kebanyakan operator unary baik atau biner. Operator Unary bentuk ekspresi pada satu variabel, tapi bentuk ekspresi operator biner dengan dua variabel. Listing 2-2 menunjukkan bagaimana operator unary digunakan.

Listing 2-2. Unary Operators: Unary.cs

using System;

class Unary
{
public static void Main()
{
int unary = 0;
int preIncrement;
int preDecrement;
int postIncrement;
int postDecrement;
int positive;
int negative;
sbyte bitNot;
bool logNot;

preIncrement = ++unary;
Console.WriteLine("pre-Increment: {0}", preIncrement);

preDecrement = --unary;
Console.WriteLine("pre-Decrement: {0}", preDecrement);

postDecrement = unary--;
Console.WriteLine("Post-Decrement: {0}", postDecrement);

postIncrement = unary++;
Console.WriteLine("Post-Increment: {0}", postIncrement);

Console.WriteLine("Final Value of Unary: {0}", unary);

positive = -postIncrement;
Console.WriteLine("Positive: {0}", positive);

negative = +postIncrement;
Console.WriteLine("Negative: {0}", negative);

bitNot = 0;
bitNot = (
sbyte)(~bitNot);
Console.WriteLine("Bitwise Not: {0}", bitNot);

logNot =
false;
logNot = !logNot;
Console.WriteLine("Logical Not: {0}", logNot);
}
}

Ketika mengevaluasi ekspresi, pasca-kenaikan (x++) dan pasca-pengurangan (x--) operator mengembalikan nilai saat ini dan kemudian menerapkan operator. Namun, ketika menggunakan pra-kenaikan (++x) dan pra-pengurangan (--x) operator, operator diterapkan ke variabel sebelum kembali nilai akhir.

Dalam Listing 2-2, unary variabel diinisialisasi menjadi nol. Ketika pra-kenaikan (++x) operator yang digunakan, unary bertambah dengan 1 dan nilai 1 diberikan ke variabel preIncrement. Pra-pengurangan (--x) operator unary berbalik kembali ke 0 dan kemudian menetapkan nilai ke variabel preDecrement.

Ketika pasca-pengurangan (x--) operator yang digunakan, nilai unary, 0, ditempatkan ke variabel dan kemudian postDecrement adalahunary decremented dengan -1. Selanjutnya pasca-kenaikan (x++)operator bergerak nilai sekarang unary, -1, ke variabel dan kemudian postIncrement increment unary ke 0.

BitNot variabel ini diinisialisasi dengan 0 dan tidak bitwise (~) operator diterapkan. Tidak bitwise (~) operator membalikkan bit dalam variabel. Dalam kasus ini, representasi biner 0, "00.000.000", berubah menjadi -1, "11.111.111".

Sementara (~) operator bekerja dengan membalik bit, yang logis operator negasi (!) Adalah operator logis yang bekerja pada nilai-nilai bool, perubahan benar palsu atau salah untuk benar.Dalam kasus di logNotvariable Kode 2-2, nilainya diinisialisasi false, dan baris berikutnya menerapkan operator negasi logis, (!), Yang reassigns mengembalikan nilai true dan nilai baru, benar, untuk logNot. Pada dasarnya, ini adalah Toggling nilai dari variabel bool, logNot.

Pengaturan positif sedikit rumit. Pada waktu yang sudah diatur, postIncrement variabel yang sama dengan -1. Menerapkan minus (-) operator untuk angka negatif menghasilkan angka positif, yang berarti bahwa postitive akan sama dengan 1, bukan -1. Operator minus (-), yang tidak sama dengan pra-pengurangan operator (--), tidak mengubah nilai postInc - itu hanya berlaku tanda pengingkaran.Operator plus () tidak mempengaruhi nilai angka, menugaskannegatif dengan nilai yang sama postIncrement, -1.

Perhatikan ekspresi (sbyte) (~ bitNot). Setiap operasi dilakukan pada jenis sbyte, byte, pendek, atau ushort kembali nilai-nilai int. Untuk menetapkan hasilnya ke variabel bitNot kami harus menggunakan gips, (Type), operator, di mana Type adalah tipe yang ingin Anda mengkonversi ke (dalam hal ini - sbyte). The cast operator Unary ditampilkan sebagai operator, (T) x, pada tabel 2-4. Cast operator explicity harus dilakukan ketika Anda pergi dari jenis yang lebih besar untuk jenis yang lebih kecil karena potensi hilangnya data.Secara umum, menetapkan jenis yang lebih kecil untuk jenis yang lebih besar tidak masalah, karena tipe yang lebih besar memiliki ruangan untuk menampung seluruh nilai. Juga menyadari bahaya casting antara ditandatangani dan jenis unsigned. Anda ingin pastikan untuk mempertahankan integritas data Anda. Banyak pemrograman dasar teks berisi uraian baik representasi bit variabel dan bahaya eksplisit casting.

Berikut Output Listing 2-2 :
     pre-Increment: 1
pre-Decrement 0
Post-Decrement: 0
Post-Increment: -1
Final Value of Unary: 0
Positive: 1
Negative: -1
Bitwise Not: -1
Logical Not: true
Selain operator unary, C# memiliki operator biner yang membentuk ekspresi dua variabel. Listing 2-3 menunjukkan cara menggunakan operator biner.
Listing 2-3. Binary Operators: Binary.cs

using System;

class Binary
{
public static void Main()
{
int x, y, result;
float floatresult;

x = 7;
y = 5;

result = x+y;
Console.WriteLine("x+y: {0}", result);

result = x-y;
Console.WriteLine("x-y: {0}", result);

result = x*y;
Console.WriteLine("x*y: {0}", result);

result = x/y;
Console.WriteLine("x/y: {0}", result);

floatresult = (
float)x/(float)y;
Console.WriteLine("x/y: {0}", floatresult);

result = x%y;
Console.WriteLine("x%y: {0}", result);

result += x;
Console.WriteLine("result+=x: {0}", result);
}
}

Dan inilah Outputnya:
x+y: 12
x-y: 2
x*y: 35
x/y: 1
x/y: 1.4
x%y: 2
result+=x: 9

Listing 2-3 menunjukkan beberapa contoh operator biner. Seperti yang mungkin Anda harapkan, hasil penjumlahan (+), pengurangan (-), perkalian (*), dan pembagian (/) menghasilkan hasil matematika yang diharapkan.

Floatresult variabel adalah tipe floating point. Kami secara eksplisit melemparkan variabel integer x dan y untuk menghitung nilai titik mengambang.

Ada juga sebuah contoh dari sisa (%) operator. Itu melakukan operasi pembagian pada dua nilai dan mengembalikan sisanya.

Pernyataan terakhir menunjukkan bentuk lain dari penugasan dengan operasi (+ =) operator.Setiap kali Anda menggunakan dengan operasi penugasan operator, itu sama dengan menerapkan operator biner kedua tangan kiri dan kanan sisi operator dan meletakkan hasilnya ke sisi kiri. Contoh bisa ditulis sebagai hasil = hasil + x; dan mengembalikan nilai yang sama.

Type Array
Type data lain adalah Array, yang dapat dianggap sebagai sebuah wadah yang memiliki daftar lokasi penyimpanan untuk type tertentu. Ketika mendeklarasikan Array, tentukan jenis, nama, dimensi, dan ukuran.

Listing 2-4. Operasi Array : Array.cs

using System;

class Array
{
public static void Main()
{
int[] myInts = { 5, 10, 15 };
bool[][] myBools = new bool[2][];
myBools[0] =
new bool[2];
myBools[1] =
new bool[1];
double[,] myDoubles = new double[2, 2];
string[] myStrings = new string[3];

Console.WriteLine("myInts[0]: {0}, myInts[1]: {1}, myInts[2]: {2}", myInts[0], myInts[1], myInts[2]);

myBools[0][0] =
true;
myBools[0][1] =
false;
myBools[1][0] =
true;
Console.WriteLine("myBools[0][0]: {0}, myBools[1][0]: {1}", myBools[0][0], myBools[1][0]);

myDoubles[0, 0] = 3.147;
myDoubles[0, 1] = 7.157;
myDoubles[1, 1] = 2.117;
myDoubles[1, 0] = 56.00138917;
Console.WriteLine("myDoubles[0, 0]: {0}, myDoubles[1, 0]: {1}", myDoubles[0, 0], myDoubles[1, 0]);

myStrings[0] = "Joe";
myStrings[1] = "Matt";
myStrings[2] = "Robert";
Console.WriteLine("myStrings[0]: {0}, myStrings[1]: {1}, myStrings[2]: {2}", myStrings[0], myStrings[1], myStrings[2]);

}
}

Dan inilah Outputnya :
     myInts[0]: 5, myInts[1]: 10, myInts[2]: 15
myBools[0][0]: true, myBools[1][0]: true
myDoubles[0, 0]: 3.147, myDoubles[1, 0]: 56.00138917
myStrings[0]: Joe, myStrings[1]: Matt, myStrings[2]: Robert
Listing 2-4 menunjukkan implementasi yang berbeda dari Arrays. Contoh pertama adalah myInts Array, yang merupakan satu-dimensi array. Ini adalah deklarasi diinisialisasi pada waktu dengan nilai-nilai eksplisit.

Selanjutnya adalah array bertingkat, myBools. Ini pada dasarnya adalah sebuah array dari array.Kami harus menggunakan operator baru untuk instantiate ukuran array utama dan kemudian menggunakan operator baru lagi untuk setiap sub-array.

Contoh ketiga adalah array dua dimensi, myDoubles. Dapat array multi-dimensi, dengan dimensi masing-masing dipisahkan oleh koma. Itu juga harus diinstanisasi dengan operator baru.

Salah satu perbedaan antara array bertingkat, myBools [][], dan multi-dimensi array, myDoubles [,], adalah multi-dimensi array akan mengalokasikan memori untuk setiap elemen dari masing-masing dimensi, sedangkan array bergerigi hanya akan mengalokasikan memori untuk ukuran setiap array dalam setiap dimensi yang Anda tetapkan. Sebagian besar waktu, Anda akan menggunakan array multi-dimensi, jika Anda membutuhkan berbagai dimensi, dan bergerigi hanya akan menggunakan array dalam keadaan yang sangat khusus ketika Anda dapat menghemat memori yang signifikan secara eksplisit menentukan ukuran array di masing-masing dimensi .

Akhirnya, kita memiliki satu-dimensi array dari tipe string, myStrings.

Dalam setiap kasus, Anda dapat melihat bahwa elemen array diakses dengan mengidentifikasi indeks integer untuk item yang ingin Anda lihat. Ukuran array dapat berupa tipe int nilai. Indeks mereka mulai pada 0.

Kesimpulan

Sebuah variabel adalah sebuah identifier dengan tipe terdapat didalamnya mempunyai nilai tipe.Termasuk tipe sederhana integral, floating poin, desimal, dan bool. C # memiliki beberapa operator matematis dan logis yang berpartisipasi dalam membentuk ekspresi. C # juga menawarkan satu dimensi, multi-dimensi dan tipe array bertingkat.

Dalam pelajaran ini Anda belajar bagaimana menulis pernyataan sederhana dan kode program yang bekerja secara linear dari awal sampai akhir. Namun, hal ini tidak berguna karena dapat karena Anda harus mampu membuat keputusan dan menjalankan blok kode yang berbeda tergantung pada kondisi yang berbeda. Saya mengundang anda untuk kembali untuk Pelajaran 3: Kontrol Pernyataan - Seleksi, di mana Anda dapat mempelajari bagaimana untuk cabang logika anda untuk pengambilan keputusan yang lebih kuat.