Translate to your languages

Selamat Datang . Suatu kehormatan bagi saya atas kunjungan ini. Saya sangat berharap kunjungan berikutnya.

29 Januari 2008

KISI-KISI UAS UNPUR

SOAL TUGAS ALGORITMA PEMROGRAMAN I :

soal ini dikerjakan dan dikumpulkan ke e-mail : sonisotix@gmail.com

1. Jelaskan yang yang anda ketahui tentang Algoritma?
2. Sebutkan yang dimaksud dengan :
  • Assignment
  • Sequence
  • Looping
  • Array

3. Buatlah flowchart untuk algoritma dibawah ini!
Langkah 1: Mulai.
Langkah 2: Masukkan atau berikan sembarang bilangan. Simpan dalam variabel X.
Langkah 3: Apakah X mod 3 = 0 ?, jika ya : pergi ke langkah 4, jika tidak : pergi ke langkah 5.
Langkah 4: Tampilkan pesan “X dapat dibagi 3”, pergi langkah 6.
Langkah 5: Tampilkan pesan “X tidak dapat dibagi 3”.
Langkah 6: Selesai.

4. Buatlah sebuah procedure Luas lingkaran, dimana panjang jari-jari didiinputkan lewat keyboard.
syarat :
- Gunakan variabel global,
- Inputan Jari-jari di dalam program utama.

5. Tulislah sebuah program dengan bahasa pascal untuk menentukan nilai total dan nilai huruf dari data uts, uas dan tugas yang diinputkan.



Rumus nilai total= (0.4*UTS)+(0.5+UAS)+(0.1*Tugas)
Konversi Nilai :
Nilai Angka Nilai Huruf
>= 76 A
66 - 75 B
56 - 65 C
46 -55 D
<= 45 E


contoh :
Input Nilai UTS = 80
Nilai UAS = 70
Nilai Tugas = 90
Output : Nilai Total = 76
Nilai Angka = A



######### Selamat Mengerjakan #########

Ingat... Klo Ingin bisa coba sendiri jangan cuma ngopy !
Array juga ada...

28 Januari 2008

Larik Multi Dimensi

Larik multi dimensi adalah larik yang bertipe larik, artinya ada pendeklarasian sebuah larik yang mempunyai tipe data larik juga.

Dalam array multidimensi terdiri atas baris (row) dan kolom (column). Index pertama adalah baris dan yang kedua adalah kolom .

BENTUK UMUM :

Type nama_array =ARRAY[bawah..atas, bawah..atas] of tipe_data;
var variabel_array : nama_array;

atau dengan menggunakan statemen var :

var variabel_array : ARRAY[bawah..atas, bawah..atas] of tipe_data;

Pernyataan berikut membentuk suatu array integer dengan nama bilangan , 10 x 10 elemen (100).

type matriks = ARRAY [1..10, 1..10] of integer;
var AKU: matriks;


untuk memasukkan tiap elemen maka, diperlukan suatu procedure dengan mempergunakan struktur pengulangan for ...do tersarang seperti berikut:

procedure ISI_MATRIK(AKU:matriks; m,n:integer);
var

i,j: integer; {faktor pengulang}
begin
for
i:=1 to m do

begin

for j:=1 to n do

begin

read(A[i,j]);

end;
readln;{ini memungkinkan kita menulis tiap baris elemen}

end;

untuk menampilkan tiap elemen maka, digunakan struktur pengulangan for ...do tersarang seperti berikut

procedure TULIS_MATRIK(AKU : matriks; m,n:integer);
var

i,j: integer; {faktor pengulang}

begin

for i:=1 to m do
begin

for j:=1 to n do
begin
write
(A[i,j]:6);
end;
writeln; {ini memungkinkan kita menulis elemen dalam baris dan kolom }

end;

end;

MATRIK

Sebagai perwujudan dari array dua dimensi, operasi aritmatika seperti penjumlahan, perkalian, dan pengurangan bisa dilakukan.

Contoh.
- Mendefinisikan Elemen

Program OPERASI_MATRIK;
uses wincrt;
type matrik=array[1..100,1..100] of real;
var
m,n, p, q: integer; {dimensi dari matrik}
A,B,C: matrik; {matrik A, B sebagai input, C sebagai hasil}

- Membaca Elemen Matrik

procedure bacamatrik(var A:matrik; m,n:integer);
var

i,j: integer; {faktor pengulang}
begin {read}

for i:=1 to m do
begin {do}

for j:=1 to n do
read(A[i,j]);
readln;

end; {do}

end; {read}

- Menampilkan Elemen Matrik

procedure tulismatrik(A:matrik; m,n:integer);
var
i,j: integer; {faktor pengulang}
begin {write}

for i:=1 to m do
begin {tiap baris}

writeln;
for j:=1 to n do
write(A[i,j]:6:2);

end; {tiap baris}
writeln;

end; {write}

- Penjumlahkan Matrik

procedure check_matrik(A,B,C:matrik; m,n,p,q:integer);
var i,j : integer;
begin

if (m=p) and (n=q) then
begin

for i:=1 to m do

begin

for j:=1 to n do
begin

C[m,n]=A[m,n]+B[m,n])
end;

end;

end
else

writeln('DIMENSI MATRIK TIDAK COCOK')

end;

- Pengurangan Matrik

procedure check_matrik(A,B,C:matrik; m,n,p,q:integer);
var i,j : integer;
begin

if (m=p) and (n=q) then

begin

for i:=1 to m do

begin

for j:=1 to n do
begin
C[m,n]=A[m,n]- C[m,n])
end;

end;

end

else

writeln('DIMENSI MATRIK TIDAK COCOK')

end;

- Perkalian Matrik

procedure perkalian_matrik(A,B,C:matrik; m,n,p,q:integer);
var i,j, k : integer;
C1: matrik;
begin

if (n=p) then

begin

for i:=1 to m do

begin

for j:=1 to p do
begin {inner product}

C1[i,j]:=0;

for k:=1 to n do
C1[i,j]:=C1[i,j]+A[i,k]*B[k,j];

end; {inner product}

end;
n:=q;
for i:=1 to m do
for j:=1 to n do
C[i,j]:=C1[i,j];

end

else
writeln
('DIMENSI MATRIK TIDAK COCOK')

end;

- Transpose Matrik

procedure Transpose(A,B:matrik; m,n,p,q:integer);
var i,j : integer;
begin

for i:=1 to n do

begin

for j:=1 to m do

begin

B[m,n]=A[n,m]
end;

end;

end;

-. Mencari Elemen yang Kosong pada Matrik

procedure CHECK_ZERO_ELEMEN(A,matrik; m,n:integer);
var i,j:integer;
begin
for
i:=1 to m do

begin

for j:=1 to n do

begin

if B[m,n]= 0 then
writeln (‘terdapat elemen yang kosong’)
else
writeln
(‘tidak terdapat elemen yang kosong’)

end;

end;

end;

15 Januari 2008

QUEUE

Secara harafiah : queue berarti antrian, queue merupakan salah satu contoh aplikasi dari pembuatan double linked list, misalnya saat Anda mengantri di loket untuk membeli tiket.

Konsep Queue :
Kumpulan elemen data dengan struktur FIFO

Operasi-operasi dasar :
1. Buat Queue
2. Enqueue : memasukkan elemen ke dalam antrian
3. Dequeue : menghapus elemen dari antrian
4. Front : melihat elemen terdepan dari antrian
5. Rear : melihat elemen paling belakang dari antrian

Implementasi Antrian dengan Linked dalam Memori Dinamis :
• Elemen antrian disimpan sebagai node yang dibuat dengan memori dinamis(malloc)
• Tiap node memiliki field:
– data: berisi elemen data antrian
– link: pointer ke node berikut dlm antrian

• Structure suatu antrian memuat fieldfield berikut:
– depan: pointer ke node pertama dalam antrian
– belakang: pointer ke node terakhir dalam antrian

Struktur Data Linked Queue :




Contoh Program :
1. Queue dengan Menggunakan Array

















































2. Queue menggunakan Linked List
































































14 Januari 2008

ARRAY

Larik (array) : adalah tipe terstruktur dari sejumlah komponen yang mempunyai tipe sama. Pada pemrograman menggunakan pascal, larik harus dideklarasikan terlebih dahulu :

Var

Nama_variabel: array[tipe_indek] of tipe_larik;

Contoh:

Var

X: array[1..100] of integer;

Larik x telah dideklarasikan sebagai larik dengan tipe integer, jumlah elemen maksimumnya adalah 100 dan tiap elemen bisa diisi data bertipe integer.

Cara mengisi data pada elemen larik pemrograman adalah seperti berikut ini :

X[1]:= 4;

X[2]:= 3;

X[3]:= 2;

X[4]:= 1;

Untuk menampilkan data dari sebuah elemen larik dengan cara writeln(x[1]); berarti akan menampilkan isi dari elemen 1 larik x.

1) Larik Berdimensi Satu

Larik berdimensi satu dapat digambarkan seperti kotak panjang yang terdiri dari beberapa kotak kecil yang tersusun berurutan, banyaknya kotak kecil yang membentuk kotak panjang adalah menunjukkan banyaknya elemen larik yang dibuat.

Contoh :

var variabel_array : ARRAY[bawah..atas] of tipe_data;

Penjelasan :

o Bawah dan Atas menyatakan batas untuk array.

o tipe_data adalah merupakan tipe variabel yang dipunyai array (mis. Integer, char, real, dsb)

Contoh:

type intarray = ARRAY [1..20] of integer;

Pernyataan diatas adalah pernyataan untuk membentuk suatu array bernama intarray,yang berisi 20 tempat untuk bilangan integer. Setiap posisi disebut elemen, yang menyimpan suatu bilangan integer.langkah berikutnya adalah membuat suatu variabel kerja dengan tipe intarray yaitu,

var numbers : intarray;

kita bisa melakukan operasi pada setiap elemen dari numbers secara individual.

Contoh program dengan larik berdimensi satu untuk menyimpan daftar jenis olahraga :

uses crt;

const

max:= 6;

type

sport= array[1..max] of string;

var

olahraga: sport;

indek: integer;

begin

clrscr;

{mengisi data setiap elemen array}

olahraga[1]:= ‘sepak bola’;

olahraga[2]:= ‘basket’;

olahraga[3]:= ‘tenis’;

olahraga[4]:= ‘bulu tangkis’;

olahraga[5]:= ‘voley’;

olahraga[6]:= ‘renang’;

{menampilkan isi array}

for indek:=1 to max do

writeln(olahraga[indek]);

readln;

end.

Contoh program untuk pencarian data pada larik :

uses crt;

const

nama: array[1..10] of string

= ('SARI','BUDI','AGUS','WULAN','DONI','SRI','TINI','IDA','FATUR','ZARA' );

var

varnama: string;

indek: integer;

begin

clrscr;

write('Masukkan nama yang dicari : ');

readln(varnama);

{merubah data ke huruf kapital}

for indek:=1 to 10 do

varnama[indek]:= upcase(varnama[indek]);

{membandingkan masukan dengan data pada array}

indek:=0;

repeat

inc(indek);

until (indek>10) or (varnama=nama[indek]);

if indek>10 then

writeln('Nama tidak ditemukan')

else

writeln('Nama ada pada elemen = ',indek);

readln;

end.

Contoh program untuk mencari nilai rata-rata dari data elemen-elemen larik :

uses crt;

var

banyakData, indek: integer;

total: real;

nilai: array[1..5] of real;

begin

clrscr;

{membatasi banyak data}

repeat

write('Banyak nilai yang diinginkan (max 5) = ');

readln(banyakData);

until (banyakData>0) and (banyakData<6);

{memasukkan data nilai}

for indek:=1 to banyakData do

begin

write('Data ke ',indek,' : ');

readln(nilai[indek]);

end;

{menghitung rata-rata}

total:= 0;

for indek:= 1 to banyakData do

total:= total + nilai[indek];

writeln('Nilai rata-rata = ', total/banyakData:0:2);

readln;

end.


Contoh mengurutkan data elemen larik berdasarkan alfabet menggunakan metode bubble :

uses crt;

var

dataNama: array[1..10] of string;

jml, indek, x, y: integer;

tempat: string;

begin

clrscr;

{membatasi jumlah dan membaca masukan data}

repeat

writeln('DATA NAMA AKAN DIURUTKAN ALFABETIKAL');

write('jumlah yang dimasukkan (max 10) = ');

readln(jml); writeln;

until (jml>0) and (jml<11);

for indek:= 1 to jml do

begin

write('data ke ',indek,'= ');

readln(dataNama[indek]);

end;

{mengurutkan data dengan metode bubble}

for x:=1 to jml-1 do

for y:=x+1 to jml do

if dataNama[x] > dataNama[y] then

begin

tempat:= dataNama[x];

dataNama[x]:= dataNama[y];

dataNama[y]:= tempat;

end;

{menampilkan data setelah diurutkan}

writeln;

writeln('DATA SETELAH DIURUTKAN');

writeln;

for indek:= 1 to jml do

writeln(indek,'. ',dataNama[indek]);

readln;

end.


07 Januari 2008

REKAMAN (RECORD)

Untuk merepresentasikan objek, dibuat tipe bentukan (user-defined type) yg merupakan gabungan dari beberapa tipe dasar(integer, real, boolean, character) dan tipe bentukan lainnya. Salah satu tipe bentukan terstruktur adalah record.

Sebuah rekaman disusun oleh beberapa field. Tiap field berisi data dari tipe dasar / bentukan tertentu. Record mempunyai kelebihan untuk menyimpan sekumpulan elemen data yang berbeda-beda tipenya.

Contoh , sebuah record dengan empat buah field.





Field 1

Field 2

Field 3

Field 4

Cara pendeklarasian dari record adalah sbb:

o Mendefinisikan tipe dari record (jumlah field, jenis tipe data yang dipakai),

o Mendefinisikan variabel untuk dilakukan operasi.

BENTUK UMUM :

type nama_record = record

identifier_1 : tipe_data_1;

:

:

identifier_n : tipe_data_n;

end;

var

nama_variabel : nama_record;

Contoh :

type Data_mahasiswa = record

Nama : string;

Umur : integer;

Kota : String;

Kodepos : integer;

end;

Var

x : Data_mahasiswa; <------------ Penggunaan record menjadi variabel-variabel

Pengacuan tiap field pada record(record selector) pada contoh di atas adalah sbb :

x.Nama
x.Umur
x.Kota
x.Kodepos

Contoh Program 1:

program CONTOH_RECORD_1;

uses wincrt;

type tanggal = record

hari, bulan, tahun : integer;

end;

var

waktu : tanggal;

begin

waktu.hari := 17;

waktu.bulan := 07;

waktu.tahun := 2007;

writeln( 'Tanggal Lahir : ', waktu.hari, ':', waktu.bulan, ':', waktu.tahun )

end.

Pengunaan With … do :

Pernyataan with untuk lebih menyederhanakan pengaksesan field-field pada record.

Misalkan pernyataan :

x.Nama
x.Umur
x.Kota

x.Kodepos

Menjadi :

with x do
Begin

Nama
Umur
Kota
Kodepos

end

Contoh Program 2:

program CONTOH_RECORD_2;
uses wincrt;

type tanggal = record

hari, bulan, tahun : integer;

end;

var waktu : tanggal;
begin {program utama}

with waktu do {mulai with}

begin

hari := 17;
bulan := 07;
tahun := 2007;

writeln ('Tanggal Lahir : ',hari,':',bulan,':', tahun)

end {akhir with}

end.

Record di dalam Record

Record bisa berisi record lain sebagai field.

Seperti contoh record tanggal dan jam dikombinasikan menjadi sebuah record saat ini,

type tanggal = record

bulan, hari, tahun : integer;

end;

type waktu = record

jam, menit, detik : integer;

end;

type waktu_ini = record

tanggal_ini : tanggal;
waktu_ini : waktu

end;

Kemudian kita perlu membuat variabel kerja :

var saat_ini : waktu_ini;

Pemberian nilai akan terjadi seperti di bawah ini:

saat_ini.tanggal.bulan:= 01;
saat_ini.tanggal.hari:= 07;
saat_ini.tanggal.tahun:= 2008;
saat_ini.waktu.jam:= 14;
saat_ini.waktu.menit:= 30;
saat_ini.waktu.detik:= 33;

LATIHAN :

Buatlah Program untuk mendapatkan tampilan dari penjelasan di atas !!!

STUDI KASUS :

Diketahui : Tipe bentukan record waktu yg terdiri field jam dan menit yg bertipe integer.

Buat program u/ membaca waktu : t1, t2 dan menghitung selisih jam dan menit.

Asumsi :

  • t2 selalu akhir dari t1,
  • nilai terbesar t1 dan t2 = 23:59 dan nilai terkecilnya =00:00,
  • nilai tidak melewati 23:59

Analisis :

1. Membaca waktu pertama(t1).

2. Membaca waktu kedua(t2).

3. Menghitung selisih antara waktu pertama dan waktu kedua, dengan :

§ Menghitung selisih menit.

§ Menghitung selisih jam.

4. Menampilkan selisih waktu di layar.


Contoh Program :

Program selisih_waktu;

Uses wincrt;

type waktu = record

jam, menit : integer;

end;

var

t1,t2 : waktu;

selisih : waktu;

begin

writeln(’Isikan Time pertama (t1)’);

write(‘t1.jam = ’); readln(t1.jam);

write(‘t1.menit = ’); readln(t1.menit);

writeln(’Isikan Time kedua (t2)’);

write(‘t2.jam = ’); readln(t2.jam);

write(‘t2.menit = ’); readln(t2.menit);

if t2.menit <>

begin

selisih.menit := (t2.menit+60)-t1.menit;

t2.jam := t2.jam – 1;

end

else

selisih.menit := t2.menit-t1.menit;

selisih.jam := t2.jam-t1.jam;


writeln (’Selisih t1 dan t2 adalah : ’, selisih.jam, ’jam’, selisih.menit, ’menit’);

end.


TUGAS :

Buatlah program yg dapat membaca dua tanggal (tanggal, bulan, dan tahun), menghitung selisih kedua tanggal tersebut dalam hari, bulan, dan tahun serta menampilkannya di layar.

Asumsi : Satu bulan = 30 hari

************** GOOD LUCK **************