Forum Sains Indonesia

Ilmu Terapan => Ilmu Komputer => Topik dimulai oleh: Alan adhityo pada September 30, 2010, 07:30:20 PM

Judul: Program 'tukar dengan 2 variabel'
Ditulis oleh: Alan adhityo pada September 30, 2010, 07:30:20 PM
gw pingin sharing aja ni .  ;D
biasanya program tukar pakai 3 variabel kan, nah yang ini pakai 2 variabel.

this is it, with pascal,, and cekidot..  ;D  ;D  ;D

program tukar

uses crt;

var
  x,y: integer;

begin
clrscr;
write('masukkan x : '); readln(x);
write('masukkan y : '); readln(y);
writeln('x = ',x);
writeln('y = ',y);

writeln('hasil:');

    x:=x+y;
    y:=x-y;
    x:=x-y;

writeln('x = ',x);
writeln('y = ',y);
readln;
end.



Judul: Re: Program 'tukar dengan 2 variabel'
Ditulis oleh: adisae pada September 30, 2010, 08:06:08 PM
Lumayan kreatip.. ;)

tapi..gimana y dibanding 3 variabel..?
mungkin dari segi kecepatan?

n ini tambahan aja s..
untuk operasi penjumlahan dan pengurangan (bilangan bulat/integer) lebih cepat gunakan prosedure Inc dan Dec..
Judul: Re: Program 'tukar dengan 2 variabel'
Ditulis oleh: Alan adhityo pada September 30, 2010, 09:31:21 PM
bisa lebih efisien sih . ^^

program di atas khusus untuk tipe data integer dan real . :)

ok, terima kasih, ;D
Judul: Re: Program 'tukar dengan 2 variabel'
Ditulis oleh: oktario pada Oktober 04, 2010, 04:59:59 PM
maaf kk saya mau tanya
tukar dengan 2 variabel gunanya buat apa?
tolong jelaskan scra org awam soalnya saya tidak tau apa?
dan saya ingin tau hal ini krena rasanya menarik....
;D ;D ;D ;D ;D ;D ;D ;D ;D
Judul: Re: Program 'tukar dengan 2 variabel'
Ditulis oleh: Henz_Azthral pada Oktober 05, 2010, 06:47:34 PM
Kutip dari: Alan adhityo pada September 30, 2010, 07:30:20 PM
    x:=x+y;
    y:=x-y;
    x:=x-y;
menurut saya tidak semua bilangan dalam tipe integer bisa tukar 2 variabel... Misalnya X=20000, Y=25000... Ntar Kalo X=X+Y error dong... Kan batas max integer cuma 32767 (kalo gak salah)...
Maaf kalo salah...hehe ;D
Judul: Re: Program 'tukar dengan 2 variabel'
Ditulis oleh: Farabi pada Oktober 07, 2010, 07:51:11 AM
Untuk mesin 16-bit bilangan unsigned integer bisa sampai 65536, sedangkan untuk signed integer memang cuma 32767.
Judul: Re: Program 'tukar dengan 2 variabel'
Ditulis oleh: adisae pada Oktober 07, 2010, 08:52:14 AM
Kutip dari: Henz_Azthral pada Oktober 05, 2010, 06:47:34 PM
Misalnya X=20000, Y=25000... Ntar Kalo X=X+Y error dong... Kan batas max integer cuma 32767 (kalo gak salah)...
Kutip dari: Farabi pada Oktober 07, 2010, 07:51:11 AM
Untuk mesin 16-bit bilangan unsigned integer bisa sampai 65536, sedangkan untuk signed integer memang cuma 32767.

tergantung compiler directive..aku lupa perintah-nya, tapi yang jelas secara default compiler pascal (delphi juga) tidak akan mempermasalahkan operasi tersebut..
dan ketika input lebih dari rangenya pun tidak apa2, cuma nanti nilai variabelnya tercatat beda..
yang dipermasalahkan yaitu ketika kita mencoba memasukkan nilai diluar range variabel dari kode, misal menulis kode X:=50000, hasilnya error ketika dicompile..

kemudian apa yang terjadi pada operasi diatas?
X integer (sign) atau pada delphi smallint

X=20000 dan Y=25000
X=X+Y
X=20000+25000
harusnya X=45000 kan
tapi karena bit paling tinggi dianggap sebagai sign/tanda - (negatif), dalam kasus ini integer pada pascal  16 bit maka bit terendah adalah bit ke 0 sedang tertinggi bit ke 15..
jadinya X yang tersimpan??
X=45000-216
X=45000-65536
X=-20536

terus pertanyaannya apakah kode diatas masih valid?
jawabannya masih, untuk kasus integer dan nilai input X dan Y valid

Y=X-Y;
Y=-20536-25000
Y=-45536
melampaui batas -2^16 = -32768
jadi yang tercatat
Y=2^16-45536
Y=65536-45536
Y=20000

X=X-Y
X=-20536-20000
X=-40536
melampaui batas -2^16 = -32768
jadi yang tercatat
X=2^16-40536
X=65536-40536
X=25000

lha itu untuk operasi integer yang melampaui range

untuk kasus tipe data real/float maka ada masalah yang akan timbul, yaitu presisi tipe data real/float yang terbatas
coba aja deh tipe data diganti real terus masukkan X=1.11e10 dan Y=2.22e-10 pasti pertukaran nilai X Y tidak valid.. ;)
Judul: Re: Program 'tukar dengan 2 variabel'
Ditulis oleh: Henz_Azthral pada Oktober 07, 2010, 08:18:23 PM
Wow...Rupanya bisa kayak gitu...

Eh, Numpang tanya...
(Nih di VB6, tapi kayaknya mirip2 pascal)

Dim X,Y as integer

     dengan

Dim X as integer
Dim Y as integer

     Sama???

Soalnya pas gw coba bwt code

X=20000
Y=25000            {Gak Error Kalo pake Dim X,Y as integer, tapi kalo penulisannya
X=X+Y...              dipisah jadi Error}
Judul: Re: Program 'tukar dengan 2 variabel'
Ditulis oleh: adisae pada Oktober 08, 2010, 12:16:33 AM
kayaknya pascal ma VB jauh banget deh.. ;D
meski sama2 bahasa tingkat tinggi, VB tu terlalu mempermudah penulisan kode..
sehingga kurang cocok untuk pembelajaran

aku g punya VB6 s, cuma kayaknya sama ama VBA nya MS Access..


Dim X,Y as integer


beda dengan


Dim X as integer
Dim Y as integer


Dim X, Y as integer bisa dinyatakan seperti ini

Dim X
Dim Y as integer


jadi X tidak bertipe integer
tipenya variant (mengikuti data yang dimasukkan kedalamnya)

maka pada kode X=X+Y
nilai X akan 45000 tidak terpotong (x jadi dianggap bertipe long yg range nya -231 s/d 231-1)

O iya di VB operasi melebihi range, secara default itu dianggap tidak valid dan muncul pesan error..
tapi tidak tau juga apakah bisa dibuat agar tidak error..tak cari2 ga ketemu..
Judul: Re: Program 'tukar dengan 2 variabel'
Ditulis oleh: Farabi pada Oktober 09, 2010, 09:18:25 AM
Kalo pake kompiler 16-bit untuk angka melebihi 65535 harus pakai long, atau long int.
Tapi sebentar lagi mode 16-bit di komputer sudah jadi bangkai, jadi kompiler semacam pascal dan lain2x tidak akan terpakai lagi.
Judul: Re: Program 'tukar dengan 2 variabel'
Ditulis oleh: adisae pada Oktober 09, 2010, 09:51:10 AM
Y memang begitu..
sekarang pun dan banyak CPU 64 bit kan..cuma memang belum menggeser aplikasi 32 bit..

yang aku belum tau nih pada pemrograman 64 bit istilah untuk integer 64 bit apa yah..
di delphi 7 s yang berbasis 32 bit dah ada n disebut int64
cuma secara default integer di sana dianggap 32 bit beda dengan di pascal yang dianggap 16 bit
n pada delphi yg 64 bit mungkin integer akan dianggap 64 bit, sementara untuk menyebut integer 32 bit ada reserved word lain..(masih butuh klarifikasi)
Judul: Re: Program 'tukar dengan 2 variabel'
Ditulis oleh: Farabi pada Oktober 11, 2010, 07:30:23 PM
64-bit biasa disebut qword.
Judul: Re: Program 'tukar dengan 2 variabel'
Ditulis oleh: adisae pada Oktober 12, 2010, 08:24:08 AM
secara istilah OK s itu mang berarti 64 bit..

oh ak dah dapet ni..

copas aja..


Byte (1 Byte, Unsigned)
UInt8 (alias for Byte)
ShortInt (1 Byte, Signed)
Int8 (alias for ShortInt)
Word (2 Bytes, Unsigned)
UInt16 (alias for Word)
SmallInt (2 Bytes, Signed)
Int16 (alias for SmallInt)
LongWord (4 Bytes, Unsigned)
UInt32 (alias for LongWord)
LongInt (4 Bytes, Signed)
Int32 (alias for LongInt)
UInt64 (8 Bytes, Unsigned)
Int64 (8 Bytes, Signed)
NativeUInt (Unsigned, depends on CPU register size)
NativeInt (Signed, depends on CPU register size)
Cardinal (Unsigned, depends on OS definition of Integer)
Integer (Signed, depends on OS definition of Integer)

hha ribet banget y..padahal komputer (PC) ga akan berhenti di 64 bit..mungkin beberapa tahun lagi muncul 128 bit, disusul 256 bit dst..
Judul: Re: Program 'tukar dengan 2 variabel'
Ditulis oleh: utusan langit pada Oktober 12, 2010, 08:37:41 AM
ah iya, di C kalau kepanjangan angkanya bisa kacau, kalau nggak pake temporary
Judul: Re: Program 'tukar dengan 2 variabel'
Ditulis oleh: adisae pada Oktober 12, 2010, 08:44:22 AM
mmm maksudna gimana y ??? bisa diperjelas?
Judul: Re: Program 'tukar dengan 2 variabel'
Ditulis oleh: utusan langit pada Oktober 12, 2010, 06:50:28 PM
ah sorry...
hehehe harusnya diubah dulu ke string baru ditambahkan,.. maka tidak akan ada apa apa,..

misal

string penjumlahan_string(string a, string b)
{
bla bla bla
return jumlah
}
int main()
{
string a, b;
cin >> a >> b;

cout << penjumlahan(a,b);

}
Judul: Re: Program 'tukar dengan 2 variabel'
Ditulis oleh: adisae pada Oktober 13, 2010, 07:58:45 AM
sayangnya aku g nyanding kompiler C je.. ;D
mungkin di C memang error handlingnya lebih ribet..
cin cout y..hmm apa tu pake Borland C ++?
Judul: Re: Program 'tukar dengan 2 variabel'
Ditulis oleh: utusan langit pada Oktober 13, 2010, 04:22:17 PM
cin cout itu pake library iostream.h, sebenarnya punyanya c++, bukan c. itu ada di semua IDE C++ kok


kalau pake fungsi yang ilustrasikan diatas, berapapun jumlah bilangannya, pasti bisa deh kalau hanya di swap,..
Judul: Re: Program 'tukar dengan 2 variabel'
Ditulis oleh: adisae pada Oktober 14, 2010, 09:01:36 AM
o y C++ nya pake apa yah?
sukur2 yang gratis jd g kebanyakan mbajak.. ;D
Judul: Re: Program 'tukar dengan 2 variabel'
Ditulis oleh: cph pada Oktober 14, 2010, 01:56:41 PM
Kutip dari: utusan langit pada Oktober 13, 2010, 04:22:17 PM
cin cout itu pake library iostream.h, sebenarnya punyanya c++, bukan c. itu ada di semua IDE C++ kok


kalau pake fungsi yang ilustrasikan diatas, berapapun jumlah bilangannya, pasti bisa deh kalau hanya di swap,..
iostream.h ---> deprecated
Judul: Re: Program 'tukar dengan 2 variabel'
Ditulis oleh: Farabi pada Oktober 14, 2010, 05:06:19 PM
Kutip dari: utusan langit pada Oktober 12, 2010, 06:50:28 PM
ah sorry...
hehehe harusnya diubah dulu ke string baru ditambahkan,.. maka tidak akan ada apa apa,..

misal

string penjumlahan_string(string a, string b)
{
bla bla bla
return jumlah
}
int main()
{
string a, b;
cin >> a >> b;

cout << penjumlahan(a,b);

}


Wah kurang efisien kalo gitu sih, mendingan pake 3 variable aja, paling cuma abis 12 byte daripada pake string yang pastinya menghabiskan 1 kb, bukan cuma itu, waktu yang dibutuhkan untuk memproses juga pasti lebih lama kalau pakai string.
Judul: Re: Program 'tukar dengan 2 variabel'
Ditulis oleh: utusan langit pada Oktober 14, 2010, 07:46:29 PM
KutipWah kurang efisien kalo gitu sih, mendingan pake 3 variable aja, paling cuma abis 12 byte daripada pake string yang pastinya menghabiskan 1 kb, bukan cuma itu, waktu yang dibutuhkan untuk memproses juga pasti lebih lama kalau pakai string.

ada kalanya saat tipe angka tidak dapat menampung, maka digunakanlah sebuah string untuk menyelesaikan masalahnya bung,..  :) :)
Judul: Re: Program 'tukar dengan 2 variabel'
Ditulis oleh: utusan langit pada Oktober 14, 2010, 07:49:14 PM
KutipWah kurang efisien kalo gitu sih, mendingan pake 3 variable aja, paling cuma abis 12 byte daripada pake string yang pastinya menghabiskan 1 kb, bukan cuma itu, waktu yang dibutuhkan untuk memproses juga pasti lebih lama kalau pakai string.

ada kalanya saat tipe angka tidak dapat menampung, maka digunakanlah sebuah string untuk menyelesaikan masalahnya bung,..  :) :)

@adisae,.
ada banyak kok yang gratisan,.. misalnya Dev-C++, kalau di linux malah banyak lagi bung,.. hehehe
Judul: Re: Program 'tukar dengan 2 variabel'
Ditulis oleh: adisae pada Oktober 15, 2010, 08:38:10 AM
sementara Windows aja..
recomended apa ni?Dev C++?

kalo ada yang cukup handal wat bikin yg ada GUI nya..
Judul: Re: Program 'tukar dengan 2 variabel'
Ditulis oleh: Farabi pada Oktober 15, 2010, 08:41:38 AM
Kutip dari: utusan langit pada Oktober 14, 2010, 07:46:29 PM
KutipWah kurang efisien kalo gitu sih, mendingan pake 3 variable aja, paling cuma abis 12 byte daripada pake string yang pastinya menghabiskan 1 kb, bukan cuma itu, waktu yang dibutuhkan untuk memproses juga pasti lebih lama kalau pakai string.

ada kalanya saat tipe angka tidak dapat menampung, maka digunakanlah sebuah string untuk menyelesaikan masalahnya bung,..  :) :)

Memang tapi sangat tidak efisien sekali karena waktu yang dibutuhkan untuk mengolah sebuah perintah jadi sangat lambat. Memangnya anda butuh berapa digit untuk mengolah angka?

Ada banyak pilihan yang lebih efisien untuk melakukan kalkulasi dengan angka yang besar salah satunya adalah FPU yang mendukung sampai 80-bit atau SSE yang mendukung sampai 128 atau 256-bit. Saya yakin tipe data ini bisa sampai puluhan ribu kali lebih cepat daripada menghitung pakai string.