Kamis, 29 Maret 2012

Array


Array adalah variabel Larik atau lebih dikenal dengan ARRAY adalah adalah Tipe terstruktur yang terdiri dari sejumlah komponen-komponen yang mempunyai tipe yang sama. Suatu Array mempunyai jumlah komponen yang banyaknya tetap. Banyaknya komponen dalam suatu larik ditunjukan oleh suatu indek untuk membedakan variabel yang satu dengan variabel yang lainnya.
Dalam bahasa C, index dari array dimulai dengan 0 (zero).

Variabel array dalam Borland C++, dapat digolongkan menjadi tiga buah dimensi :
•Array Berdimensi Satu.
•Array Berdimensi Dua
•Array Berdimensi Tiga.

Pembahasan ini, hanya dibatasi pada Array Berdimensi Dua saja :

1. Array Berdimensi Satu
Sebelum digunakan, variabel array perlu dideklarasikan terlebih dahulu. Cara mendeklarasikan variabel array sama seperti deklarasi variabel yang lainnya, hanya saja diikuti oleh suatu indek yang menunjukan jumlah maksimum data yang disediakan.
contoh:
float data[2][5] = { {2, 3, 4, 5, 2},{4, 2, 6, 2, 7},};

Program Pendataan Mahasiwa

#include <conio.h>
#include <string.h>
#include <stdio.h>
void main ()
{
struct data_mahasiswa
{
char nim [50], unit [60], nama[100], semester[10];
};
int i, n;
struct data_mahasiswa biodata[20];
clrscr();
printf(" ----------------- \n");
printf(" | DATA MAHASISWA |\n");
printf(" ----------------- \n\n");
printf ("Banyak Data : "); scanf ("%d", &n);
for (i=0;i<n;i++)
{
clrscr();
printf ("Data ke %d\n", i+1);
printf ("NIM : ");
fflush (stdin);scanf("%s", &biodata[i].nim);
printf ("NAMA : ");
fflush (stdin);scanf("%s", &biodata[i].nama);
printf ("UNIT : ");
fflush (stdin);scanf("%s", &biodata[i].unit);
printf ("SEMESTER : ");
fflush (stdin);scanf("%s", &biodata[i].semester);
}
printf("\n\n");
clrscr ();
printf(" ----------------- \n");
printf(" | DATA MAHASISWA |\n");
printf(" ----------------- \n\n");
printf ("NIM\t\tNAMA\t\tUNIT\tSEMESTER\n\n");
for (i=0;i<n;i++)
{
printf ("%s\t%s\t %s\t %s\n", biodata[i].nim, biodata[i].nama, biodata[i].unit, biodata[i].semester);
}
getch();
}

Minggu, 18 Maret 2012

Aplikasi Chat via Ethernet/Sockets Programming dengan Visual Studio C#

1. Pendahuluan 
         Program yang akan dibahas terdiri dari dua bagian, yaitu: Server, sebagai server yang mana semua client akan mengirim pesan ke computer yang ada aplikasi ini dan mem-broadcast semua pesan ke client. Client, aplikasi yang dipakai oleh user untuk melakukan chat yang akan terhubung ke server. 

a. Membuat Server 

       Pertama bukalah aplikasi Visual Studio C# 2010. Lalu pilih new project. Kemudian pilih Console Application dan berilah nama project chat_server pada bagian bawah form, lalu klik OK.

==================================
 
Setelah itu cobalah masukan kode di bawah ini.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net.Sockets;
using System.Net;
namespace ConsoleApplication1
{
class Program
{
const int portNo = 500;
static void Main(string[] args)
{
//==================================================================
//Mendapatkan Local Machine’s Host Name & IPAddress
//==================================================================
String strHostName = “”;
if (args.Length == 0)
{
// Mendapatkan Ip address dari local machine…
// Pertama cari host name dari local machine.
strHostName = Dns.GetHostName();
Console.WriteLine(“Local Machine’s Host Name: ” + strHostName);
}
else
{
strHostName = args[0];
}
IPHostEntry ipEntry = Dns.GetHostByName(strHostName);
IPAddress[] addr = ipEntry.AddressList;
for (int i = 0; i < addr.Length; i++)
{
Console.WriteLine(“IP Address {0}: {1} “, i, addr[i].ToString());
}

/*--------------------------------------------------------------------------------------------------------------------
System.Net.IPAddress localAdd = System.Net.IPAddress.Parse(addr[0].ToString());
TcpListener listener = new TcpListener(localAdd, portNo);
listener.Start();
while (true)
{
ChatClient user = new
ChatClient(listener.AcceptTcpClient());
}
}
}
}

Setelah itu, buat class baru dengan nama “ChatClient” dengan cara klik kanan pada nama project seperti di bawah ini.



 

 
 Pilih Class dan jangan lupa beri nama “ChatClient” pada bagian bawah form dan klik Add. Setelah itu coba masukan kode seperti di bawah ini.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net.Sockets;
using System.Collections;
namespace ConsoleApplication1
{
class ChatClient
{
//—berisi daftar semua client—
public static Hashtable AllClients = new Hashtable();
//—informasi tentang client—
private TcpClient _client;
private string _clientIP;
private string _clientNick;
//—digunakan untuk mengirim/menerima data—
private byte[] data;
//—apakah nickname sudah dikirim—
private bool ReceiveNick = true;
public ChatClient(TcpClient client)
{
_client = client;
//—mendapatkan client IP address—
_clientIP = client.Client.RemoteEndPoint.ToString();
//—menambahkan client saat ini ke hash table—
AllClients.Add(_clientIP, this);
//—memulai membaca data dari client pada
// thread terpisah—
data = new byte[_client.ReceiveBufferSize];
client.GetStream().BeginRead(data, 0,
System.Convert.ToInt32(_client.ReceiveBufferSize), ReceiveMessage, null);
}
public void ReceiveMessage(IAsyncResult ar)
{
//—membaca dari client—
int bytesRead;
try
{
lock (_client.GetStream())
{
bytesRead = _client.GetStream().EndRead(ar);
}
//—client tidak tersambung—
if (bytesRead < 1)
{
AllClients.Remove(_clientIP);
Broadcast(_clientNick + ” has left the chat.”);
return;
}
else
{
//—mendapat pesan yang telah dikirim—
string messageReceived = System.Text.Encoding.ASCII.GetString(data, 0, bytesRead);
//—client mengirimkan nicknamenya—
if (ReceiveNick)
{
_clientNick = messageReceived;
//—memberitahu semua client memasuki
// chat—
Broadcast(_clientNick + ” has joined the chat.”);
ReceiveNick = false;
}
else
{
//—memberikan pesan pada semuanya—
Broadcast(_clientNick + “>” + messageReceived);
}
}
//—melanjutkan membaca dari client—
lock (_client.GetStream())
{
_client.GetStream().BeginRead(data, 0,
System.Convert.ToInt32(_client.ReceiveBufferSize),ReceiveMessage,null);
}
}
catch (Exception ex)
{
AllClients.Remove(_clientIP);
Broadcast(_clientNick + ” has left the chat.”);
}
}
public void SendMessage(string message)
{
try
{
//—mengirim text—
System.Net.Sockets.NetworkStream ns;
lock (_client.GetStream())
{
ns = _client.GetStream();
}
byte[] bytesToSend =
System.Text.Encoding.ASCII.GetBytes(message);
ns.Write(bytesToSend, 0, bytesToSend.Length);
ns.Flush();
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
}
}
public void Broadcast(string message)
{
//—log secara lokal—
Console.WriteLine(message);
foreach (DictionaryEntry c in AllClients)
{
//—memberi pesan pada semua user—
((ChatClient)(c.Value)).SendMessage(
message + Environment.NewLine);
}
}
}
}


Membuat Client

Buatlah project baru dan pilih template Windows Form Application dan berilah nama project tersebut dengan nama “chat” pada bagian bawah form lalu klik OK. Setelah itu, buatlah form seperti pada gambar di bawah ini.







Setelah itu coba buatlah kode seperti di bawah ini.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Net.Sockets;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
const int portNo = 500;
TcpClient client;
byte[] data;
public Form1()
{
InitializeComponent();
}
private void btnSignIn_Click(object sender, EventArgs e)
{
if (btnSignIn.Text == “Sign In”)
{
try
{
//—menghubungkan ke server—
client = new TcpClient();
client.Connect(IPServer.Text, portNo);
data = new byte[client.ReceiveBufferSize];
//—membaca dari server—
SendMessage(txtNick.Text);
client.GetStream().BeginRead(data, 0,
System.Convert.ToInt32(
client.ReceiveBufferSize),
ReceiveMessage, null);
btnSignIn.Text = “Sign Out”;
btnSend.Enabled = true;
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
}
else
{
//—disconnect dari server—
Disconnect();
btnSignIn.Text = “Sign In”;
btnSend.Enabled = false;
}
}
private void btnSend_Click(object sender, EventArgs e)
{
SendMessage(txtMessage.Text);
txtMessage.Clear();
}
public void SendMessage(string message)
{
try
{
//—mengirim pesan ke server—
NetworkStream ns = client.GetStream();
byte[] data =
System.Text.Encoding.ASCII.GetBytes(message);
//—mengirim text—
ns.Write(data, 0, data.Length);
ns.Flush();
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
}
public void ReceiveMessage(IAsyncResult ar)
{
try
{
int bytesRead;
//—membaca data dari server—
bytesRead = client.GetStream().EndRead(ar);
if (bytesRead < 1)
{
return;
}
else
{
//—memanggil delegate untuk menampilkan
// data yang diterima—
object[] para = {System.Text.Encoding.ASCII.GetString(data, 0, bytesRead) };
this.Invoke(new delUpdateHistory(UpdateHistory),
para);
}
//—melanjutkan membaca…—
client.GetStream().BeginRead(data, 0,
System.Convert.ToInt32(client.ReceiveBufferSize),
ReceiveMessage, null);
}
catch (Exception ex)
{
//—abaikan error, dibuang ketika pengguna sign off—
}
}
//—delegate dan subroutine untuk mengupdate TextBox control—
public delegate void delUpdateHistory(string str);
public void UpdateHistory(string str)
{
txtMessageHistory.AppendText(str);
}
public void Disconnect()
{
try
{
//—Disconnect dari server—
client.GetStream().Close();
client.Close();
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
}
private void Form_Closing(object sender,FormClosingEventArgs e)
{
Disconnect();
}
}
}
Setelah itu, double clik pada Form1.Designer.cs dan tambahkan kode seperti di bawah ini.
private void InitializeComponent()
{