Home

Kamis, 01 Desember 2011

Mengapa Jembatan Kutai Kartanegara Runtuh?

Faktor Penyebab Jembatan Kutai Kartanegara runtuh

Warga Indonesia akhir akhir ini dikagetkan dengan berita mengenai Jembatan Kutai Kartanegara runtuh , jembatan yang melintasi sungai Mahakam ini baru dibangun sekitar 10 tahun yang lalu namun saat ini roboh yang “katanya” karena kualitas bangunannya yang kurang bagus. Memang sebenarnya jembatan ini sudah diperkirakan tidak akan bertahan lama oleh para pakar dan ilmuwan dalam bidangnya pada saat proyek pembangunan jembatan tersebut..
 
Pembangunan Jembatan Kutai Kartanegara (Kukar), sejak awal sudah diakui sebagai sebuah proyek yang sulit. Bahkan salah seorang ahli fisika dan matematika dari Universitas Mulawarman, Samarinda, pernah meramalkan jembatan ini tidak akan bertahan lama.
 
Ramalan bahwa Jembatan Kukar tidak akan berumur panjang, disampaikan oleh ahli fisika dan matematika dari Universitas Mulawarwan, Profesor Jamaludin. Saat jembatan baru diresmikan pada tahun 2001 lalu, dia meramalkan jembatan tidak akan berumur panjang, karena pembangunan konstruksi jembatan ini tidak memperhatikan teori dasar perubahan frekuensi angin.
 
“Angin dapat berubah-ubah, dari frekuensi rendah ke tinggi. Konstruksi jembatan tidak memperhatikan itu. Pertama kali dioperasikan saja sudah retak-retak. Tampaknya tidak bisa sampai sepuluh tahun umurnya,” ujar Jamaludin ketika itu.
 
Sulitnya membangun Jembatan Kutai Kartanegara disampaikan oleh Kepala Bidang Rencana dan Evaluasi Badan Pembinaan Kontruksi dan Investigasi (Bapekin) Departemen Kimpraswil, Ir Herry Vaza. Selain Herry, kesulitan proyek pembangunan ini juga disampaikan oleh Kepala Proyek Pembangunan Jembatan Kukar PT Hutama Karya, Ir Idwan Suhendra.
 
Dalam Konferensi Regional Teknik Jalan VI di Denpasar Bali 18-19 Juli 2002, keduanya mengatakan, pembangunan Jembatan Mahakam II adalah proyek berisiko dan berteknologi tinggi. Faktor ketidakpastian atas keberhasilan pelaksanaan proyek termasuk tinggi karena tingkat pengetahuan dan pengalaman atas konstruksi dan metode pelaksanaan yang rendah. 
 
Banyak Jembatan yang berada di indonesia yang masih menggunakan penerapan konvesional dalam melaksanakan standarisasi pembuatan jembatan, seharusnya kejadian seperti diatas dapat dicegah jika para pihak terkait mau menerapkan sistem dan teknologi yang sudah ada, seperti yang diterapkan oleh negara negara maju sebelumnya. Teknologi tersebut yaitu Bridges Structural Health Monitoring System , dengan menggunakan system monitoring jembatan ini, tentunya informasi atau data dapat diambil secara aktual dan real time sehingga parameter di jembatan mampu di pantau di ruang monitoring atau ruang pemantauan dan perubahan yang terjadi pada jembatan mampu diadaptasi, dengan begitu data yang diterima tersebut tentunya akan memberikan alasan yang kuat bagi para expertise dapat mengambil keputusan yang tepat dan cepat.
 
Sebagai salah satu contoh yaitu pada penerapanya jembatan suramadu. Pemantauan kesehatan pada jembatan suramadu merupakan contoh yang seharusnya diikuti oleh jembatan yang lain, karena disini kita berbicara keselamatan manusia yang menjadi resikonya. Berikut Sistem aplikasi yang pernah dilakukan pada jembatan suramadu.

Contoh Proposal

Adhitya Praspa(12109968)

BAB I

PENDAHULUAN

1.1 Latar Belakang Masalah
Komputer diciptakan untuk memudahkan pekerjaan manusia, namun pada saat komputer pertama kali diperkenalkan pada masyarakat umum dunia, komputer hanya ditujukan untuk penggunaan pada hal-hal yang bertujuan untuk perhitungan dan pengolahan data, namun seiring dengan perkembangan dan kemajuan zaman, komputer mengalami semacam peningkatan dalam hal kegunaannya. Seperti sekarang ini, komputer banyak sekali digunakan orang untuk membuat program.
Computer sekarang ini banyak dipergunakan untuk merancang program untuk mempermudah pengguna dalam melaksanakan aktivitasnya. Salah satu contoh program itu adalah penghitungan IPK dengan menggunakan bahasa pemrograman c++.
Berdasarkan hal diatas maka penulis ingin menyajikan cara penghitungan IPK dengan bahasa pemrograman c++.


1.2 Rumusan Masalah

Pada penelitian ini penulis merumuskan masalah yakni bagaimana membuat sebuah program yang utuh dan mampu diaplikasikan, tanpa mengesampingkan fungsi dan nilai program yang dibuat.





1
1.3 Batasan Masalah

Karena adanya keterbatasan waktu dalam penyusunan penulisan ini, maka untuk mempersempit masalah yang akan dibahas, penulis membuat beberapa batasan masalah. Penulis hanya membatasi masalah pada pembuatan program yang berisi informasi cara penghitungan IPK dengan menggunakan c++.

1.4 Tujuan Penulisan

Tujuan dari penulisan ini adalah memberi petunjuk dan informasi mengenai penghitungan IPK. Program ini diharapkan mampu memenuhi fungsinya sebagai sebuah program yang utuh dan menarik minat penggunanya.

1.5 Metode Penelitian

Metode yang dilakukan dalam pembuatan penulisan ini adalah studi pustaka, yaitu dengan mempelajari berbagai buku yang menunjang penulisan dan pembuatan program.

1.6 Sistematika Penulisan

BAB I : PENDAHULUAN
Membahas mengenai latar belakang masalah dan alasan penulisan masalah yang dibahas dan batasan-batasan, tujuan penulisan, metode yang dilakukan dalam penulisan dan sistematika atau gambaran penulisan.


2
BAB II : LANDASAN TEORI
Membahas tentang konsep-konsep dasar pemrograman, beberapa elemen bahasa pemrograman seperti c++.



BAB III : PERANCANGAN DAN PEMBUATAN PROGRAM
Membahas tentang cara dan langkah pembuatan program yang meliputi perancangan program, pembuatan program, pengujian, dan compile program.

BAB IV : PENUTUP
Berisikan kesimpulan tentang apa yang telah dibahas pada bab-bab sebelumnya, serta saran-saran.
















3
BAB II
LANDASAN TEORI


2.1 Pengenalan Bahasa C

Tahun 1978, Brian W. Kerninghan & Dennis M. Ritchie dari AT & T Laboratories mengembangkan bahasa B menjadi bahasa C. Bahasa B yang diciptakan oleh Ken Thompson sebenarnya merupakan pengembangan dari bahasa BCPL ( Basic Combined Programming Language ) yang diciptakan oleh Martin Richard.

Sejak tahun 1980, bahasa C banyak digunakan pemrogram di Eropa yang sebelumnya menggunakan bahasa B dan BCPL. Dalam perkembangannya, bahasa C menjadi bahasa paling populer diantara bahasa lainnya, seperti PASCAL, BASIC, FORTRAN.

Tahun 1989, dunia pemrograman C mengalami peristiwa penting dengan dikeluarkannya standar bahasa C oleh American National Standards Institute (ANSI). Bahasa C yang diciptakan Kerninghan & Ritchie kemudian dikenal dengan nama ANSI C.

Mulai awal tahun 1980, Bjarne Stroustrup dari AT & T Bell Laboratories mulai mengembangkan bahasa C. Pada tahun 1985, lahirlah secara resmi bahasa baru hasil pengembangan C yang dikenal dengan nama C++. Sebenarnya bahasa C++ mengalami dua tahap evolusi. C++ yang pertama, dirilis oleh AT&T Laboratories, dinamakan cfront. C++ versi kuno ini hanya berupa kompiler yang menterjemahkan C++ menjadi bahasa C.

Pada evolusi selanjutnya, Borland International Inc. mengembangkan kompiler C++ menjadi sebuah kompiler yang mampu mengubah C++ langsung menjadi bahasa mesin (assembly). Sejak evolusi ini, mulai tahun 1990 C++ menjadi bahasa berorientasi obyek yang digunakan oleh sebagian besar pemrogram professional.



2.2 Struktur Bahasa C++



Contoh 1 : Hasil :

// my first program in C++ Hello World!
#include <iostream.h>
int main ()
{
cout << "Hello World!";
return 0;
}

Sisi kiri merupakan source code, yang dapat diberi nama hiworld.cpp dan sisi kanan adalah hasilnya setelah di-kompile dan di-eksekusi.





Program diatas merupakan salah satu program paling sederhana dalam C++, tetapi dalam program tersebut mengandung komponen dasar yang selalu ada pada setiap pemrograman C++. Jika dilihat satu persatu :

// my first program in C++
Baris ini adalah komentar. semua baris yang diawali dengan dua garis miring (//) akan
dianggap sebagai komentar dan tidak akan berpengaruh terhadap program. Dapat digunakan oleh programmer untuk menyertakan penjelasan singkat atau observasi yang terkait dengan program tersebut.
#include <iostream.h>
Kalimat yang diawali dengan tanda (#) adalah are preprocessor directive. Bukan
merupakan baris kode yang dieksekusi, tetapi indikasi untuk kompiler. Dalam kasus ini
kalimat #include <iostream.h> memberitahukan preprocessor kompiler untuk
menyertakan header file standard iostream. File spesifik ini juga termasuk library deklarasi standard I/O pada C++ dan file ini disertakan karena fungsi-fungsinya akan digunakan nanti dalam program.
int main ()
Baris ini mencocokan pada awal dari deklarasi fungsi main. fungsi main merupakan titik awal dimana seluruh program C++ akan mulai dieksekusi. Diletakan diawal, ditengah atau diakhir program, isi dari fungsi main akan selalu dieksekusi pertama
kali. Pada dasarnya, seluruh program C++ memiliki fungsi main.
main diikuti oleh sepasang tanda kurung () karena merupakan fungsi. pada C++, semua fungsi diikuti oleh sepasang tanda kurung () dimana, dapat berisi argumen didalamnya.
Isi dari fungsi main selanjutnya akan mengikuti,berupa deklarasi formal dan dituliskan diantara kurung kurawal ({}), seperti dalam contoh.
cout << "Hello World";
Intruksi ini merupakan hal yang paling penting dalam program contoh. cout merupakan standard output stream dalam C++ (biasanya monitor). cout dideklarasikan dalam header file iostream.h, sehingga agar dapat digunakan maka file ini harus disertakan. Perhatikan setiap kalimat diakhiri dengan tanda semicolon (;). Karakter ini menandakan akhir dari instruksi dan harus disertakan pada setiap akhir instruksi pada program C++ manapun.
return 0;
Intruksi return menyebabkan fungsi main() berakhir dan mengembalikan kode yang mengikuti instruksi tersebut, dalam kasus ini 0. Ini merupakan cara yang paling sering
digunakan untuk mengakhiri program.

Tidak semua baris pada program ini melakukan aksi. Ada baris yang hanya berisi komentar
(diawali //), baris yang berisi instruksi untuk preprocessor kompiler (Yang diawali
#),kemudian baris yang merupakan inisialisasi sebuah fungsi (dalam kasus ini, fungsi main) dan baris yang berisi instruksi (seperti, cout <<), baris yang terakhir ini disertakan dalam blok yang dibatasi oleh kurung kurawal ({}) dari fungsi main.







5
Struktur program dapat dituliskan dalam bentuk yang lain agar lebih mudah dibaca, contoh :

int main ()
{
cout << " Hello World ";
return 0;
}

Atau dapat juga dituliskan :

int main () { cout << " Hello World "; return 0; }

Dalam satu baris dan memiliki arti yang sama dengan program-program sebelumnya. pada C++
pembatas antar instruksi ditandai dengan semicolon (;) pada setiap akhir instruksi.

Contoh 2 : Hasil :

// my second program in C++ Hello World! I'm a C++ program

#include <iostream.h>

int main ()
{
cout << "Hello World! ";
cout << "I'm a C++ program";
return 0;
}



Komentar
Komentar adalah bagian dari program yang diabaikan oleh kompiler. Tidak melaksanakan aksi apapun. Mereka berguna untuk memungkinkan para programmer untuk memasukan catatan atau deskripsi tambahan mengenai program tersebut. C++ memiliki dua cara untuk menuliskan komentar :

// Komentar baris
/* Komentar Blok */

Komentar baris, akan mengabaikan apapun mulai dari tanda (//) sampai akhir dari baris yang sama. Komentar Blok, akan mengabaikan apapun yang berada diantara tanda /* dan */.










6
Variabel, tipe data, konstanta



Untuk dapat menulis program yang dapat membantu menjalankan tugas-tugas kita, kita harus mengenal konsep dari variabel. Sebagai ilustrasi, ingat 2 buah angka, angka pertama adalah
5 dan angka kedua adalah 2. Selanjutnya tambahkan 1 pada angka pertama kemudian hasilnya dikurangi angka kedua (dimana hasil akhirnya adalah 4).

Seluruh proses ini dapat diekspresikan dalam C++ dengan serangkaian instruksi sbb :
a = 5;
b = 2;
a = a + 1;
result = a - b;

Jelas ini merupakan satu contoh yang sangat sederhana karena kita hanya menggunakan 2 nilai integer yang kecil, tetapi komputer dapat menyimpan jutaan angka dalam waktu yang bersamaan dan dapat melakukan operasi matematika yang rumit.

Karena itu, kita dapat mendefinisikan variable sebagai bagian dari memory untuk menyimpan nilai yang telah ditentukan. Setiap variable memerlukan identifier yang dapat membedakannya dari variable yang lain, sebagai contoh dari kode diatas identifier variabelnya adalah a, b dan result, tetapi kita dapat membuat nama untuk variabel selama masih merupakan identifier yang benar.

2.3 Identifier

Identifier adalah untaian satu atau lebih huruf, angka, atau garis bawah ( _ ). Panjang dari
identifier, tidak terbatas, walaupun untuk beberapa kompiler hanya 32 karakter pertama saja yang dibaca sebagai identifier (sisanya diabaikan). Identifier harus selalu diawali dengan huruf atau garis bawah ( _ ).

Ketentuan lainnya yang harus diperhatikan dalam menentukan identifier adalah tidak boleh menggunakan key word dari bahasa C++. Diawah ini adalah key word dalam C++ :
asm
auto
bool
break
case
catch
char
class
const
const_cast
continue
default
delete
do
double
dynamic_cast
else
enum
explicit
extern
false
float
for
friend
goto
if
inline
int
long
mutable
namespace
new
operator
private
protected
public
register
reinterpret_cast
return
short
signed
sizeof
static
static_cast
struct
switch
template
this
throw
true
try
typedef
typeid
typename
union
unsigned
using
virtual
void
volatile
wchar_t




BAB III
PEMBAHASAN


3.1 Perancangan Program

#include<iostream.h>
#include<stdlib.h>
#include<string.h>

3.1.1 Rancangan Penyisipan File Library

Bagian ini merupakan bagian preprocessor program. Berisi perintah include, yang digunakan untuk menyisipkan file library atau program C++. Dalam program ini, yang digunakan adalah library iostream.h, stdlib.h, string.h.






class mhs
{
private:
char nama[24];
int jml_mk,nilai[24],sks[24];

public:
mhs();
void input_data();
void nama_mhs(char *);
int jum_matkul();
int jum_sks();
float ip();
};

Pada bagian ini merupakan pendefinisian dari class mhs, yang berisi Private dan Public Variable.
Pada Private berisi :
  1. Array “nama” dengan panjang 24 dan bertipe char.
= untuk menyimpan nama dari mahasiswa.
18
  1. jml_mk” dengan tipe data integer.
= untuk menyimpan jumlah mata kuliah yang diambil.
  1. Array “nilai” dengan panjang 24 dan bertipe integer.
= untuk menyimpan nilai.
  1. Array “sks” dengan panjang 24 dan bertipe integer.
= untuk menyimpan jumlah sks.

Sedangkan pada Public berisi method-method seperti mhs(),void input_data(),void nama_mhs(char *), int jum_matkul(), int jum_sks(), float ip().






mhs::mhs()
{
int i;
strcpy(nama,"NULL");
jml_mk=0;
for(i=0;i<24;i++)
{
nilai[i]=5;
sks[i]=0;
}
}

Bagian ini merupakan Constructor


void mhs::input_data()
{
int i;
char bf[30];
Array bf bertipe char dengan panjang 30 berfungsi sebagai buffer sementara, untuk selanjutnya diubah ke tipe data lain.


19
cout << "Nama Mahasiswa = ";
cin.getline(nama,24);
Bagian ini untuk meminta masukkan dari user berupa nama mahasiswa. Penggunaan getline, agar spasi tidak dianggap oleh C++ sebagai enter. Sehingga nama dengan 2 kata atau lebih bisa masuk.




while((jml_mk<1)||(jml_mk>24))
{
cout << "Jumlah mata kuliah = ";
cin.getline(bf,30);
Memasukkan jumlah mata kuliah, ke dalam buffer sementara(bf).




jml_mk=atoi(bf);
Memasukkan isi dari bf ke dalam jml_mk dengan perintah atoi(alphanumeric to integer). Sehingga jika memasukkan karakter akan dianggap sebagai angka 0.






if((jml_mk<1)||(jml_mk>24))
cout << "Masukkan angka 1-24\n\n";
}
Jika masukan salah(lebih dari 24 atau kurang dari 1), dengan asumsi maksimal mahasiswa dapat mengambil maksimal 24 sks dan tiap mata kuliah 1 sks. Maka akan muncul peringatan.


for(i=0;i<jml_mk;i++)
{
while((nilai[i]<0)||(nilai[i]>4)||(strlen(bf)>1))
{
cout << "\nNilai mata kuliah " << (i+1) << " = ";
cin.getline(bf,30);
20

Memasukkan nilai mata kuliah i+1, ke dalam buffer sementara(bf).



nilai[i]=(int)bf[0];
Memasukkan isi dari bf ke dalam nilai[i] dengan perintah int. Agar nilai yang diinputkan(berupa huruf) diubah ke dalam bentuk kode angka.



if(nilai[i]<70) nilai[i]=69-nilai[i];
else nilai[i]=101-nilai[i];
if((nilai[i]<0)||(nilai[i]>4)||(strlen(bf)>1))
cout << "Masukkan huruf A-E atau a-e\n";
}
Kode angka tersebut dikenali sebagai huruf dari A-E / a-e. Jika selain itu maka akan ada peringatan.


while((sks[i]<1)||(sks[i]>4))
{
cout << "Jumlah SKS mata kuliah " << (i+1) << " = ";
cin.getline(bf,30);
Memasukkan jumlah sks mata kuliah i+1, ke dalam buffer sementara(bf).



sks[i]=atoi(bf);
Memasukkan isi dari bf ke dalam jml_mk dengan perintah atoi(alphanumeric to integer). Sehingga jika memasukkan karakter akan dianggap sebagai angka 0.


if((sks[i]<1)||(sks[i]>4))
cout << "Masukkan angka 1-4\n\n";
}

}
}


21
Jika masukan salah(lebih dari 4 atau kurang dari 1), dengan asumsi sks maksimal tiap mata kuliah adalah 4.. Maka akan muncul peringatan.






void mhs::nama_mhs(char *s)
{
strcpy(s,nama);
}

Method untuk menampilkan nama mahasiswa



int mhs::jum_matkul()
{
return (jml_mk);
}
Method untuk menampilkan jumlah mata kuliah



int mhs::jum_sks()
{
int i,j;
j=0;
for(i=0;i<jml_mk;i++) j+=sks[i];
return(j);
}
Method untuk menghitung jumlah sks. J adalah variable untuk menyimpan jumlah sks. Program akan mengulang dari 0 sampai banyaknya jml_mk. Untuk menjumlah j dengan sks[i].
float mhs::ip()
{
int i,j_sks,total;
j_sks=0;
total=0;
for(i=0;i<jml_mk;i++)
{
22
j_sks+=sks[i];
total+=(nilai[i]*sks[i]);
}
return ((float)total/j_sks);
}


3.1.2 Metode Untuk Menghitung IP

Method untuk menghitung IP berdasarkan input yang telah diterima program.
  • j_sks digunakan untuk menyimpan jumlah SKS.
  • total digunakan untuk menyimpan jumlah bobot nilai yang sudah dikalikan sks.
Program akan mengulang dari 0 sampai banyaknya jml_mk.
Dan nilai yang ditampilkan (IP))adalah jumlah total di bagi jumlah j_sks.
int main()
{

int i,jum_mhs;
char bf[30],nama[24],user[24];

Pendeklarasian variable yang terdiri dari:
  1. i” dengan tipe data integer
  2. jum_mhs” dengan tipe data integer
= untuk menampung jumlah mahasiswa
  1. Array “bf” dengan panjang 30 dan bertipe char.
= untuk menyimpan data sementara dan selanjutnya diubah ke tipe data lain.
  1. Array “nama” dengan panjang 24 dan bertipe char.
= untuk menyimpan nama dari mahasiswa.
  1. Array “user” dengan panjang 24 dan tipe data char.
= untuk menyimpan nama dari user program.

mhs node[10];
Membuat objek node berdasarkan class yang sudah ada.
23


cout << "Masukkan nama user : ";
cin.getline(user,24);
cout << "\nSelamat datang, " << user;
cout << " di Program Menghitung IP mahasiswa\n\n";
Meminta masukkan nama dari user,dan menampilkannya di ucapan selamat datang.


jum_mhs=0;
while((jum_mhs<1)||(jum_mhs>10))
{
cout << "Masukkan Jumlah Mahasiswa yang akan dihitung = ";
cin.getline(bf,30);
Memasukkan jumlah mahasiswa, ke dalam buffer sementara(bf).



jum_mhs=atoi(bf);
Memasukkan isi dari bf ke dalam jml_mhs dengan perintah atoi(alphanumeric to integer). Sehingga jika memasukkan karakter akan dianggap sebagai angka 0.

if((jum_mhs<1)||(jum_mhs>10))
cout << "Masukkan angka 1-10\n\n";
}
Jika masukan salah(lebih dari 10 atau kurang dari 1),maka akan muncul peringatan.

for(i=0;i<jum_mhs;i++)
{
cout << "\nDATA MAHASISWA " << (i+1) << endl;
node[i].input_data();
}








24
3.1.3 Tampilan Hasil Perhitungan

Program akan mengulang dari 0 sampai banyaknya jum_mhs, yaitu memanggil method input_data.
cout << endl << endl;
cout << "|--------------------------|-------------|---------|----------|" << endl;
cout << "| Nama Mahasiswa | Jumlah | Jumlah | IP |" << endl;
cout << "| | Mata Kuliah | SKS | |" << endl;
cout << "|--------------------------|-------------|---------|----------|" << endl;

for(i=0;i<jum_mhs;i++)
{
cout.setf(ios::left|ios::showpoint);
node[i].nama_mhs(nama);
cout << "| ";
cout.width(25);
cout << nama;
cout << "| ";
cout.width(7);
cout << node[i].jum_matkul();
cout << "| ";
cout.width(5);
cout << node[i].jum_sks();
cout << "| ";
cout.width(6);
cout.precision(3);
cout << node[i].ip();
cout << " |\n";
}

cout << "|--------------------------|-------------|---------|----------|" << endl;

cout << endl;
return (0);
}
Menampilkan hasil-hasil perhitungan dan data-data dalam bentuk table







25