Sabtu, 19 Desember 2009

Kumpulan Soal-Soal

H.KUMPULAN SOAL-SOAL
1.RUMUS KUADRAT
program rumus;
uses wincrt;
var x1,x2,a,b,c,d:real;
begin
write('masukkan nilai a=');readln(a);
write('masukkan nilai b=');readln(b);
write('masukkan nilai c=');readln(c);
if a=0 then write('error')else
begin
d:=(b*b)-(4*a*c);
writeln('D=',d:0:2);
if d>0 then
begin
writeln('pers.kuadrat memp.2 akar yg berbeda');
x1:=(-b+sqrt(d))/2*a;
x2:=(-b-sqrt(d))/2*a;
writeln('x1=',x1:0:2);
writeln('x2=',x2:0:2);
end
else
if d=0 then
begin
writeln('pers.kuadrat memp.akar yg sama');
x1:=-b/(2*a);
x2:=x1;
write('jadi x1 dan x2 adalah=',x2:0:2);
end
else
writeln('tdk memp akar real');
end;


end.
2.BILANGAN GANJIL
program bilangan_ganjil;
uses wincrt;
var
x,y,jum:integer;
begin
write('sampai berapa?');readln(y);
begin
x:=1;
repeat
write(x,' ');
x:=x+2;
until
x>y;
end;
end.
3.BILANGAN GENAP
program bilangan_genap;
uses wincrt;
var
x,y,jum:integer;
begin
write('sampai berapa?');readln(y);
begin
x:=2;
repeat
write(x,' ');
x:=x+2;
until
x>y;
end;
end.
4.BILANGAN GENAP DAN GANJIL
program bilangan_genap_dan_ganjil;
uses wincrt;
var x,y,n:integer;
begin
write('masukkan bilangan=');readln(n);
for x:=1 to n do
if x mod 2=0 then write(x:3);writeln(' bilangan genap');
for y:=1 to n do
if y mod 2<>0 then write(y:3);write(' bilangan ganjil');
end.
5.SEGITIGA ASYIK
program segitiga;
uses wincrt;
var x,y,z:integer;
begin
write('masukkan angka segitiga asyik=');readln(y);
for x:=1 to y do
begin
for z:=1 to x do
write(x:3);
writeln;
end;
end.
6.JUMLAH SEGITIGA ASYIK
program segitiga;
uses wincrt;
var n,i,j,a:integer;
begin
write('masukkan angka untuk segitiga asyik=');readln(n);
for j:=1 to n do
begin
for i:=1 to j do
if j<=i then write(j:2,' = ')else
write(j:2,' + ');
for i:=1 to j do
a:=i*j;
write(a);
writeln;
end;
end.
7.SEGITIGA 15
program segitiga;
uses wincrt;
var x,y,z:integer;
begin
write('masukkan angka=');readln(y);
for x:=1 to y do
begin
for z:=1 to x do
write(' ',15);
writeln;
end;
end.
8.SEGITIGA TERBALIK
program segitiga5;
uses wincrt;
var x,y,z:integer;
begin
write('masukkan angka untuk segitiga=');readln(y);
for x:=y downto 1 do
begin
for z:=x downto 1 do
write(' ',5);
writeln;
end;
end.
9.MEMILIH HARI
program hari;
uses wincrt;
var x:integer;
begin
write('pilih hari ke-');readln(x);
case x of
1:begin
clrscr;
writeln('minggu');
end;
2:begin
clrscr;
writeln('senin');
end;
3:begin
clrscr;
writeln('selasa');
end;
4:begin
clrscr;
writeln('rabu');
end;
5:begin
clrscr;
writeln('kamis');
end;
6:begin
clrscr;
writeln('jumat');
end;
7:begin
clrscr;
writeln('sabtu');
end;
end;
end.

10.MENENTUKAN TANGGAL SETELAH TANGGAL KELAHIRAN
program tanggal;
uses wincrt;
var a,b,c,d,e,f,h,i,g,j,k,n,x,y,z:integer;
begin
write('msukkan tanggal lahir=');readln(x,y,z);
write('masukkan berapa hari setelah tanggal kelahiran=');readln(n);
h:=n div 360;
i:=n mod 360;
j:=i div 30;
k:=i mod 30;
writeln('umurnya=',h:2,' tahun',j:2,' bulan ',k:2,' hari');
f:=(x+k) mod 30;
e:=(y+j) mod 12;
g:=z+h;

writeln('tanggal sekarang= tanggal ',f,' bulan ',e,' tahun ',g);
end.
11.MENENTUKAN NILAI MAKSIMUM DARI TIGA ANGKA
program maks;
uses wincrt;
var x,y,z:integer;
begin
write('masukkan angka=');readln(x);
write('masukkan angka=');readln(y);
write('masukkan angka=');readln(z);
begin
if (x>y) and (x>z) then write(x)else
if (y>x) and (y>z) then write(y)else
if (z>x) and (z>y) then write(z);
end;
end.
12.ABJAD (VOKAL DAN KONSONAN)
program abjad;
uses wincrt;
var x:string;
begin
write('masukkan huruf=');readln(x);

if (x='a') or (x='i') or (x='u') or (x='e') or (x='o') then write('vokal')
else
write('konsonan');

end.
13.BILANGAN PRIMA
program bilangan_prima;
uses wincrt;
var i,n,j:integer;
prima:boolean;
begin
write('masukkan bilangan=');read(n);
clrscr;
for i:=1 to n do
begin
prima:=true;
if i=1 then prima:=false
else
begin
for j:=2 to (i div 2) do
begin
if(i mod j=0) then prima:=false;
end;
if prima then write(i,' ');
end;
end;
end.
14.ARRAY (PENJUMLAHAN MATRIKS)
Program penjumlahan_matriks;
Uses Wincrt;
Var
b,k:integer;

Write('Baris matrik 1 = Baris matrik 2? ');Readln(b);
Write('Kolom matrik 1 = Kolom matrik 2? ');Readln(k);
Begin
Writeln('Matrik 1');
For b:=1 to b do
Begin
For k:=1 to k do
Begin
Write('Tabel ',b,',',k,':');Readln(tabel1[b,k]);
End;
End;
Writeln;
Writeln('Matrik 2');
For b:=1 to b do
Begin
For k:=1 to k do
Begin
Write('Tabel ',b,',',k,':');Readln(tabel2[b,k]);
End;
End;
Clrscr;
For b:=1 to b do
Begin
For k:=1 to k do
Write(tabel1[b,k],' ');
Writeln;
End;
Writeln;
For b:=1 to b do
Begin
For k:=1 to k do
Write(tabel2[b,k],' ');
Writeln;
End;
Writeln;
Begin
For b:=1 to b do
Begin
For k:=1 to k do
tabel3[b,k]:=tabel1[b,k]+tabel2[b,k];
End;
End;
writeln('hasilnya adalah=');
Begin
For b:=1 to b do
Begin
For k:=1 to k do
Write(tabel3[b,k],' ');
Writeln;
End;
End;
End;
End.
15.ARRAY (PERKALIAN MATRIKS)
program perkalian_matrik;
uses wincrt;
var
a,b,c:array [1..25,1..25] of real;
i,j,k,m,n,l:byte;
begin
writeln('PERKALIAN MATRIKS');
write('baris matriks pertama=');readln(m);
write('kolom matriks pertama/brs matriks kedua=');readln(n);
write('kolom matriks kedua=');readln(l);
writeln;
writeln('komponen matriks yang pertama');
for i:=1 to m do
begin
for j:=1 to n do
begin
write('nilai[',i,',',j,']=');readln(a[i,j]);
end;
writeln;
end;
writeln('komponen matriks kedua');
for i:=1 to n do
begin
for j:=1 to l do
begin
write('nilai[',i,',',j,']=');readln(b[i,j]);
end;
writeln;
end;
for i:=1 to m do
begin
for j:=1 to l do
begin
c[i,j]:=0;
for k:=1 to l do
c[i,j]:=c[i,j]+a[i,k]*b[k,j];
end;
end;
writeln;
writeln('hasil perkalian matriks');
writeln;
for i:=1 to m do
begin
writeln;
for j:=1 to l do
write(c[i,j]:5:2);
end;
end.

16.FUNGSI
program fungsi_x;
uses wincrt;
var
x:integer;
function fungsi (x:real):real;
var
y:real;
begin
write('masukkan nilai x=');readln(x);
y:=x*x+8*x+10;
fungsi:=y;
end;
begin
clrscr;
writeln('hasil dari nilai y nya adalah=',fungsi(x):2:0);

end.
17.REKURSI
program re;
uses wincrt;
var akhir:word;
procedure rekursi;
begin
if akhir<10 then
begin
write(' rochmah ');
akhir:=akhir+1;
rekursi;
end;
end;
begin
akhir:=0;
rekursi;
end.
17.FAKTORIAL
program fak;
uses wincrt;
procedure faktorial(n : byte;var hasil:longint);
begin
if n<=1 then
hasil:=1
else
begin
faktorial(n-1,hasil);
hasil:=n*hasil;
end;
end;

var
n:byte;
f:longint;
begin
write('berapa faktorial?');readln(n);
faktorial(n,f);
writeln('faktorial=',f);
end.

18.PROGRAM FUNGSI TUKAR(yg ditukar hanya nilai A dan B)
Program Tukar;
uses wincrt;
FUNCTION Tukar_nilai(a,b,c:integer):integer;
var
temp:integer;
begin
temp:=A;
A:=C;
C:=temp;

writeln('a:',a);
writeln('b:',b);
writeln('c:',c);
end;

var a,b,c:integer;
begin
a:=100;
b:=200;
c:=300;
writeln('Nilai sebelum ditukar');
writeln('A:',a);
writeln('B:',b);
writeln('C:',c);
writeln('nilai sesudah ditukar');
Tukar_nilai(a,b,c);
end.

19. ARRAY(nilai mahasiswa)


uses wincrt;

var nim:array[1..20] of string[10];

no:array[1..20] of integer;

nama:array[1..20] of string[25];

nilai:array[1..20] of integer;

i,n:integer;

begin

write(‘masukkan data yang diperlukan =’ );read(n);

clrscr;

for i:=1 to n do

begin

write(‘NO = ‘);readln(no[i]);

write(‘NIM = ‘); readln(nim[i]);

write(‘NAMA = ‘); readln(nama[i]);

write(‘NILAI = ‘); readln(nilai[i]);

clrscr;

end;

gotoxy(25,1);write(‘DAFTAR NILAI MAHASISWA’);

gotoxy(30,2);writeln(‘SEMESTER III’);

writeln;

writeln(‘===============================================================’);

writeln(‘| NO | NIM | NAMA | NILAI |’);

writeln(‘===============================================================’);

for i:=1 to n do

begin

writeln(no[i]:4,nim[i]:17,nama[i]:19,nilai[i]:21);

end;

readln;

end.

20.PERKALIAN BERULANG


program perkalian_berulang;

uses wincrt;

var a,b,c:integer;

function faktorial(n:integer):longint;

begin

if n=0 then faktorial:=1

else

faktorial:=n*faktorial(n-1);

end;

begin

write(‘a=’);read(a);

writeln;

for b:=1 to (a-1) do write(b,’*');

write(a,’=',faktorial(a));

end.

21. PENGURANGAN MATRIKS


program pengurangan_matriks;

uses wincrt;

var

a,b,c:array[1..25,1..25] of real;

d,e,f,i,j,k:byte;

begin

clrscr;

gotoxy(30,1);writeln(‘===========================’);

gotoxy(30,2);writeln(‘”Program Pengurangan Matriks”‘);

gotoxy(30,3);writeln(‘===========================’);

writeln;

write(‘jumlah baris= ‘);readln(d);

write(‘jumlah kolom= ‘);readln(e);

writeln;

writeln(‘matrik yang pertama’);

for i:=1 to d do

begin

for j:=1 to e do

begin

write(‘nilai[',i,',',j,']?’);readln(a[i,j]);

end;

writeln;

end;

writeln(‘matrik yang kedua’);

for i:=1 to d do

begin

for j:=1 to e do

begin

write(‘nilai[',i,',',j,']?’);readln(b[i,j]);

end;

writeln;

end;

for i:=1 to d do

begin

for j:=1 to e do

begin

c[i,j]:=a[i,j]-b[i,j];

end;

end;

clrscr;

writeln(‘matrik yang pertama’);

for i:=1 to d do

begin

write(‘|’);

for j:=1 to e do

begin

write(a[i,j]:9:2);

end;

write(‘|’);

writeln;

end;

writeln;

writeln(‘matrik yang kedua’);

for i:=1 to d do

begin

write(‘|’);

for j:=1 to e do

begin

write(b[i,j]:9:2);

end;

write(‘|’);

writeln;

end;

writeln;

writeln(‘hasil dari pengurangan matrik : ‘);

writeln;

for i:=1 to d do

begin

write(‘|’);

for j:=1 to e do

write(c[i,j]:9:2);

write(‘|’);

writeln;

end;

end.

22. BELAH KETUPAT


program belah_ketupat;

uses wincrt;

var

baris,kolom,jumbaris:integer;

begin

writeln(‘PROGARM BELAH KETUPAT’);

writeln(‘———————’);

writeln;

write(‘jumlah baris : ‘);

readln(jumbaris);

writeln;

baris :=1;

while baris <= jumbaris-1 do

begin

write(‘*’: jumbaris+1-baris);

kolom:=2;

while kolom <= (2*baris-1) do

begin

write(‘*’);

kolom :=kolom+1;

end;

writeln;

baris:=baris+1;

end;

baris :=jumbaris;

while baris >= 1 do

begin

write(‘*’:jumbaris+1-baris);

kolom:=2*baris-1;

while kolom >= 2 do

begin

write(‘*’);

kolom :=kolom-1;

end;

writeln;

baris:=baris-1;

end;

end.

23. SEGITIGA ASYIK 1


program segitiga_asyik_1;

uses wincrt;

var

baris,kolom,jumbaris:integer;

begin

writeln(‘PROGRAM SEGITIGA ASYIK 1′);

writeln(‘————————’);

writeln;

write(‘jumlah baris : ‘);

readln(jumbaris);

writeln;

baris :=jumbaris;

while baris >= 1 do

begin

write(‘*’: jumbaris+1-baris);

kolom:=2*baris-1;

while kolom >= 2 do

begin

write(‘*’);

kolom :=kolom-1;

end;

writeln;

baris:=baris-1;

end;

end.

24. SEGITIGA ASYIK 2

program segitiga_asyik_2;

uses wincrt;

var

a,b,c:integer;

begin

writeln(‘PROGRAM SEGITIGA ASYIK 3′);

writeln(‘————————’);

writeln;

write(‘ n=’);read(a);

writeln;

for b:=1 to a-1 do

begin

for c:=1 to b do write(‘*’:2);

writeln;

end;

for b:=a downto 1 do

begin

for c:=b downto 1 do write(‘*’:2);

writeln;

end;

end.

Tugas Pemrograman komputer 1

G.SOAL-SOAL TUGAS

1.LUAS DAN KELILING PERSEGI PANJANG
program luas_dan_keliling_persegipanjang;
uses wincrt;
var p,l,Lp,K:integer;
begin
write('masukkan panjang= ');readln(p);
write('masukkan lebar= ');readln(l);
Lp:=p*l;
K:=2*(p+l);
writeln('luas= ',Lp);
writeln('keliling= ',K);
end.

2.VOLUME DAN LUAS PERMUKAAN KUBUS
program volume_dan_luaspermukaan_kubus;
uses wincrt;
var s,L,V:integer;
begin
write('masukkan panjang sisi kubus=');read(s);
L:=s*s*6;
V:=s*s*s;
writeln('jadi luas permukaan kubusnya adalah=',L);
write('jadi volume kubusnya aadalah=',V);
end.
3.LUAS DAN KELILING LINGKARAN
program luas_dan_kelilinglingkaran;
uses wincrt;
const phi=3.14;
var r,L,K:real;
begin
write('masukkan jari-jari lingkaran=');read(r);
L:=phi*r*r;
K:=2*phi*r;
writeln('jadi luas lingkaran adalah=',L:0:2);
write('jadi keliling lingkaran adalah=',K:0:2);
end.

4.MEMPERTUKARKAN NILAI A DAN NILAI B
program mempertukarkan_nilaiA_dan_B;
uses wincrt ;
var
a,b,c:integer;
begin
write('masukkan nilai a=');
read(a);
write('masukkan nilai b=');
read(b);
c:=a;
a:=b;
b:=c;
writeln('stelah ditukar');
writeln('sekarang nilai a=',a);
writeln('sekarang nilai b=',b);
end.

5.PERMUKAAN TABUNG DAN KERUCUT
program permukaan_tabung_dan_kerucut;
uses wincrt;
const phi=3.14;
var rt,tt,Lt,s,rk,tk,Lk:real;
begin
write('masukkan jari-jari alas tabung=');read(rt);
write('masukkan tinggi tabung=');read(tt);
Lt:=(2*phi*rt*rt)+(2*phi*rt*tt);
writeln('luas permukaan tabung=',Lt);
write('masukkan jari-jari alas kerucut=');read(rk);
write('masukkan tinggi kerucut=');read(tk);
s:=sqrt((tk*tk)+(rk*rk));
Lk:=(phi*rk*rk)+(rk*phi*s);
write('luas permukaan kerucut=',Lk);
end.

6.OPERASI BILANGAN
program operasi_bilangan;
uses wincrt;
var a,b,c,d,e,g,h:integer;
f:real;
begin
write('masukkan nilai a=');readln(a);
write('masukkan nilai b=');readln(b);
c:=a+b;
d:=a-b;
e:=a*b;
f:=a/b;
g:=a div b;
h:=a mod b;
writeln('nilai a+b adalah=',c);
writeln('nilai a-b adalah=',d);
writeln('nilai a*b adalah=',e);
writeln('nilai a/b adalah=',f:0:2);
writeln('nilai a div b adalah=',g);
writeln('nilai a mod b adalah=',h);
end.

7.GAJI KARYAWAN
program gaji_karyawan;
uses wincrt;
var
nama:string;
gp,ti,ta,pajak,gs,gt:real;
begin
write('masukkan nama=');readln(nama);
write('masukkan gaji pokok=');readln(gp);
ti:=0.15*gp;
ta:=0.20*gp;
gs:=gp+ti+ta;
pajak:=0.15*gs;
gt:=gs-pajak;
writeln('tunjangan istri adalah=',ti:0:2);
writeln('tunjangan anak adalah=',ta:0:2);
writeln('gaji keseluruhan adalah=',gt:0:2);
end.

8.KOORDINAT TITIK TENGAH
program koordinat_titiktengah;
uses wincrt;
var x1,x2,y1,y2,xt,yt:real;
begin
writeln('masukkan nilai x1 dan y1=');
write('x1=');read(x1);
write('y1=');read(y1);
writeln('masukkan x2 dan y2=');
write('x2=');read(x2);
write('y2=');read(y2);
xt:=(x1+x2)/2;
yt:=(y1+y2)/2;
write('jadi titik tengahnya adalah=(',xt:0:2,',',yt:0:2,')');
end.

9.KONVERSI JAM KE DETIK
program konversi_jam_kedetik;
uses wincrt;
var
jam,menit,detik,total_detik:integer;
begin
write('masukkan jam=');read(jam);
write('masukkan menit=');read(menit);
write('masukkan detik=');read(detik);
total_detik:=(jam*3600)+(menit*60)+detik;
writeln('total detiknya adalah=',total_detik);
end.

10.KONVERSI DETIK KE JAM
program konversi_detik_kejam;
uses wincrt;
var
jam,detik,menit:longint;
begin
write('masukkan detik=');read(detik);
jam:=detik div 3600;
detik:=detik mod 3600;
menit:=detik div 60;
detik:=detik mod 60;
write('jadi jamnya adalah=',jam,'jam,',menit,'menit,',detik,'detik');
end.

11.LAMANYA TELEPON
program lamanya_telepon;
uses wincrt;
var
jam1,menit1,detik1,jam2,menit2,detik2,detik_awal,detik_akhir,lamanya:integer;
begin
write('masukkan jam awal=');read(jam1);
write('masukkan menit awal=');read(menit1);
write('masukkan detik awal=');read(detik1);
write('masukkan jam akhir=');read(jam2);
write('masukkan menit akhir=');read(menit2);
write('masukkan detik akhir=');read(detik2);
detik_awal:=(jam1*3600)+(menit1*60)+detik1;
detik_akhir:=(jam2*3600)+(menit2*60)+detik2;
lamanya:=detik_akhir-detik_awal;
writeln('lamanya telepon dalam detik adalah=',lamanya);
end.

12.BIAYA TELEPON
program biaya_telepon;
uses wincrt;
var j1,j2,m1,m2,d1,d2,x,y,lam,p,b:integer;
begin
write('jam mulai=');readln(j1);
write('menit mulai=');readln(m1);
write('detik mulai=');readln(d1);
write('jam akhir=');readln(j2);
write('menit akhir=');readln(m2);
write('detik akhir=');readln(d2);
x:=(j1*3600)+(m1*60)+d1;
y:=(j2*3600)+(m2*60)+d2;
lam:=y-x;
writeln('lamanya dlm detik=',lam);
p:=lam div 5;
b:=p*200;
writeln('biayanya adalah=',b);
end.
13.SUHU
program suhu;
uses wincrt;
var
C,K,F:real;
begin
write('masukkan nilai celcius=');read(C);
K:=C+273;
F:=(9/5*C)+32;
writeln('jadi nilai kelvin adalah=',K:0:2);
writeln('jadi nilai fahrenhet adalah=',F:0:2);
end.

14.UMUR SESEORANG
program umur_seseorang;
uses wincrt;
var d1,m1,y1,d2,m2,y2,h,i,j,k,l:integer;
begin
write('masukkan tanggal lahir=');readln(d1,m1,y1);
write('masukkan tanggal sekarang=');readln(d2,m2,y2);
h:=(y2-y1)*365+(m2-m1)*30+(d2-d1);
i:=h div 365;
j:=h mod 365;
k:=j div 30;
l:=j mod 30;
writeln('umur sekarang=',i,' tahun ',k,' bulan ',l,' hari');
end.

Senin, 07 Desember 2009

MATERI PEMROGRAMAN KOMPUTER 1

A.BAHASA PEMROGRAMAN KOMPUTER

Komputer hanya mempunyai bahasa dasar yang berupaya bahasa mesin. Bahasa mesin adalah bahasa yang mengenal kode biner, yaitu kode yang berisi angka 1 dan 0 saja. Pada dasarnya ada dua golongan bahasa pemrograman komputer, yaitu:
Bahasa pemrograman beraras rendah (low level language).
Bahasa pemrograman beraras tinggi (high level language).

Langkah-Langkah dalam Pemrograman

Tahap pada penulisan program adalah sebagai berikut:
1.Menulis program.
2.Menjalankan program untuk menguji kebenaran program.
Jika ada kesalahan (logika maupun kaidah), program diperbaiki dan kembali ke langkah 2.
Tipe-Tipe Data
1.Integer/ Bilangan bulat
-Terdiri dari ragkaian angka/digit 0 sampai 9.
-Penulisan bilangan bulat negative diawali dengan symbol minus.
2.Real
-Terdiri dari rangkaian digit 0 sampai 9, dilengkapi dengan satu buah titik desimal -diantara rangkaian digit tersebut.
-Penulisan bilangan real negative diawali dengan symbol minus.
-Notasi penulisan: fixed point dan floating point.
3.String / Charakter
-Terdiri dari satu / beberapa rangkain karakter / symbol.
-Penulisan dengan diapit tanda petik tunggal.
-Simbol-simbol yang dapat digunakan diatur label kode ASCII/EBDIC.
4.Boolean / Logikal
-Hanya bernilai true atau false.
-Umumnya diperoleh dari operasi pembandingan dua nilai. Contohnya pernyataan benar salah pada logika.

B.ALGORITMA DAN DIAGRAM ALIR (FLOW CHART)

1.ALGORITMA
Algoritma adalah rangkaian terurut intruksi-intruksi yan disusun untuk menyelesaikan suatu masalah dn mempunyai karakteristik. Karakteristik tersebut antara lain:
a.Setiap intruksi dalam algoritma harus jelas dan bermakna unik/tunggal.
b.Seluruh rangkain intruksi harus selesai dalam waktu yang berhingga.
c.Bersifat umum, artinya dapat dipakai untuk menyelesaikan berbagai masalah yang tipenya serupa tanpa perlu modifikasi.
Sebuah algoritma memuat komponen-komponen antara lain:
a.Masukkan (input)
b.Lankah-langkah
c.Keluaran (output)
Contoh : Buat algoritma untuk menentukan apakah suatu bilangan merupakan bilangan ganjil atau bilangan genap.
Algoritmanya :
1. Bagi bilangan dengan bilangan 2
2. Hitung sisa hasil bagi pada langkah 1.
3. Bila sisa hasil bagi sama dengan 0 maka bilangan itu adalah bilangan genap tetapi bila sisa hasil bagi sama dengan 1 maka bilangan itu adalah bilangan ganjil.
Penulisan algoritma dapat dilakukan dengan dengan dua cara, yaitu:
i.Kode semu (pseudu code)
Contoh: Menghitung sisi miring dengan menggunakan pseudo code.
1.[masukkan / input berupa kedua sisi siku-siku]
Read [siku_1, siku_2]
2.[masukkan kuadrat dari masing-masing sisi siku-siku]
SQ1:=siku_1^2
SQ2:=siku_2^2
3.[menghitung panjang sisi miring]
Hypotenusa
:=SQRT(SQ1+SQ2)
4.[keluaran / output]
Write(‘panjang sisi miring=’,hypotenusa)
5.[mengakhiri allgoritma]
Exit
ii.Diagram alir (flowchart)
Diagram alir (flowchart) akan dijelaskan lebih lanjut pada uraian selanjutnya.

2.DIAGRAM ALIR (FLOWCHART)
Flowchart adalah untain simbol gambar (chart) yang menunjukkan aliran (flow) dari proses terhadap data.
Menurut bentuknya flowchart di bedakan menjadi tiga jenis:
1.Flowchart runtutan, yaitu bentuk flowchart yang bentuknya runtun ke bawah dan biasanya hanya menyelesaikan satu persoalan dengan satu penyelesain.
2.Flowchart memilih, yaitu bentuk flowchart yang bentuknya digunakan untuk menyelesaikan persoalan dengan penelesaian lebih dari satu, biasa memilih satu diantara dua penyelesaian.
3.Flowchart berulang (loop), yaitu bentuk flowchart yang bentuknya digunakan untuk menyelesaikan persoalan dengan bentuk berulang (loop).
Berikut adalah beberapa simbol yang digunakan dalam menggambar suatu flowchart :


Dari contoh algoritma di atas tentang menentukan apakah suatu bilangan adalah bilangan ganjil atau bilangan genap, flowchart dari program adalah sebagai berikut :



C.INTRUKSI UTAMA

Secara garis besar hanya ada tiga macam kategori instruksi utama, yaitu:
1. Instruksi Runtutan
Instruksi runtutan adalah instruksi yang dikerjakan secara beruntun atau berurutan baris per baris mulai dari baris pertama hingga baris terakhir, tanpa ada loncatan atau perulangan.
Contoh: (meghitung luas sebuah segitiga)
program luas_segitiga;
uses wincrt;
var
a,t,L:real;
begin
write('masukkan alas segitiga=');readln(a);
write('masukkan tinggi segitiga=');readln(t);
L:=0.5*a*t;
writeln('Luas segitiga adalah=',L:0:2);
end.

2.Intrusi Pemilihan
Instruksi pemilihan adalah instruksi yang dipakai untuk memilih satu aksi dari beberapa kemungkinan aksi berdasarkan suatu persyaratan. Ada dua bentuk instruksi pemilihan yang sering digunakan, yaitu if/then/else dan case.
a.Instruksi if/then/else
Instruksi if/then/else digunakan untuk memilih alternatif apabila suatu syarat atau kondisi dipenuhi (1 kasus), atau memilih satu alternatif dari dua kemungkinan berdasarkan apakah syarat terpenuhi atau tidak (2 kasus).
Contoh: (Nilai Mahasiswa)
program nilai_mahasiswa;
uses wincrt;
var nama,nim:string;
nt,nm,nf,na:real;
begin
write('nama=');readln(nama);
write('nim=');readln(nim);
write('nilai tugas=');readln(nt);
write('nilai mid=');readln(nm);
write('nilai final=');readln(nf);
na:=(0.20*nt)+(0.30*nm)+(0.50*nf);
writeln('nilai akhir=',na:0:2);
begin
if na>85 then write('nilai A')else
if na<86 then write('nilai B')else
if na<71 then write('nilai C')else
if na<56 then write('nilai D')else
write('nilai C')
end;
end.

b.Instruksi Case
Instruksi case digunakan sebagai instruksi pemilihan di mana aksi akan dilakukan hanya bergantung pada nilai dari satu macam variabel.
Contoh: (Menu Makanan)
program menu;
uses wincrt;
var
x:integer;
begin
gotoxy(20,5);writeln('menu warung top=');
gotoxy(20,6);writeln('================');
gotoxy(20,9);writeln('1.penyet');
gotoxy(20,10);writeln('2.bakso');
gotoxy(20,11);writeln('3.mie ayam');
gotoxy(20,12);writeln('4.pindang tetel');
gotoxy(20,16);writeln('apa menu favorit anda?');
readln(x);
case x of
1:begin
clrscr;
writeln('menu yang anda pilih adalah....');
writeln('penyet');
end;
2:begin
clrscr;
writeln('menu yang anda pilih adalah....');
writeln('bakso');
end;
3:begin
clrscr;
writeln('menu yang anda pilih adalah....');
writeln('mie ayam');
end;
4:begin
clrscr;
writeln('menu yang anda pilih adalah....');
writeln('pindang tetel');
end;
5:begin
clrscr;
writeln('kembali ke menu');
end;
end;
end.

3.Instruksi Perulangan (Looping)
Instruksi perrulangan adalah instrusi yang dapat mengulang pelaksanaan sederetan instruksi-instruksi lainnya berulang-ulang sesuai persyaratan yang ditetapkan.
a.Perulangan Repeat-Until
Makna dari bentuk instruksi repeat-until adalah ulangi pelaksanaan instruksi hingga kondisi terpenuhi.
Contoh 1:
program jumlah_bilangan;
uses wincrt;
var
x,y,jum:integer;
begin
x:=1;
jum:=0;
write('masukkan y=');readln(y);
repeat
write(x);
if x jum:=jum+x;
x:=x+1;
until x>y;
write('=');
write(' ',jum);
end.
Contoh 2:
program perulangan;
uses wincrt;
var
x:integer;
begin
x:=1;
repeat
writeln(x,'. Pemrograman Komputer');
x:=x+1;
until x>5;
end.

b.Perulangan For-to-do
Makna dari bentuk instruksi for-to-do adalah ulangi instruksi-instruksi tersebut berdasarkan variabel perulangan mulai nilai awal hingga nilai akhir dengan perubahan nilai sebesar n.
Contoh:
program perulangan;
uses wincrt;
var
n:integer;
begin
for n:=1 to 5 do
writeln(n,'. Pemrograman Komputer');
end.

c.Perulangan While-Do
Makna dari bentuk instruksi while-do adalah ulangi pelaksanaan instruksi-instruksi selama kondisi yang diberikan masih terpenuhi. Oleh karena itu, perlu adanya suatu proses yang dapat mengontrol kondisi agar dapat menghentikan proses.
Contoh:
program perulangan;
uses wincrt;
var
x:integer;
begin
x:=1;
while x<6 do
begin
writeln(x,'. Pemrograman Komputer');
x:=x+1;
end;
end.

D.ARRAY (LARIK)
Array adalah suatu bentuk struktur data yang menampung satu atau lebih dari satu data yang sejenis (bertipe data sama), yang diwakili oleh satu nama variabel.
Contoh:
program matriks;
uses wincrt;
var
tabel:array[1..3,1..2] of integer;
i,j:integer;
begin
tabel[1,1]:=50;
tabel[1,2]:=55;
tabel[2,1]:=21;
tabel[2,2]:=26;
tabel[3,1]:=10;
tabel[3,2]:=1;
for i:=1 to 3 do
begin
for j:=1 to 2 do
write(tabel [i,j],' ');
writeln;
end;
end.


E.SUB PROGRAM

Subprogram pada turbo pascal ada 2 macam,yaitu:
1.Prosedur
Prosedur adalah bagian dari suatu program yang disusun secara terpisah unntuk melakukan suatu tugas khusus/fungsi tertentu. Prosedur diawali dengan kata cadangan Procedure di dalam bagian deklarasi prosedur. Prosedur dipanggil dan digunakan di dalam blok program lainnya dengan menyebutkan judul prosedurnya.
Ketika suatu prosedur dipanggil maka pada hakikatnya bisa dilakukan pertukaran data antara program utama dan prosedur. Pertukaran ini dilakukan melalui parameter, diantaranya yaitu:
Parameter Aktual adalah parameter yang yang disertakan pada saat prosedur dipanggil untuk dilaksanakan, sering disebut argumen.
Parameter Formal adalah parameter yang dituliskan pada definisi suatu prosedur/fungsi.
Contoh Prosedur:

Procedure Tanya_hitung ;
Var
X,Y : real ;
Begin
Write (‘Nilai X =’) ;
Readln (X) ;
Y : = X * X ;
End ;
Begin
Tanya_hitung ;
Writeln (‘Nilai Y =’, Y : 6 : 2 ) ;
End.

2.Fungsi
Fungsi adalah bagian dari program yang dibuat terpisah untuk melaksanakan fungsi tertentu yang menghasilkan suatu nilai untuk dikembalikan ke program utama.
Contoh fungsi:
program fungsi_x;
uses wincrt;
var
x:integer;
function fungsi (x:real):real;
var
y:real;
begin
write('masukkan nilai x=');readln(x);
y:=x*x+8*x+10;
fungsi:=y;
end;
begin
clrscr;
writeln('hasil dari nilai y nya adalah=',fungsi(x):2:0);
end.


F.REKURSI

Rekursi yaitu procedure atau function yang memanggil dirinya sendiri.  Gunanya untuk melakukan proses berulang yang sulit diketahui kapan akan berakhir. Banyak bahasa pemrograman modern mendukung proses rekursi, misalnya Turbo Pascal, Visual Basic, dll. Contoh paling terkenal dari rekursi adalah proses menghitung nilai faktorial dan mencari deret Fibonacci.
Contoh listing program:
function faktorial(n : integer):integer;
begin
  if (n = 0) then faktorial := 1
  else faktorial := n * faktorial(n - 1);
end;
Deret Fibonacci didefinisikan sebagai deret integer tak berhingga, di mana suatu bilangan adalah penjumlahan dari dua bilangan sebelumnya.
Contoh: 1, 1, 2, 3, 5,  8, 12, 13, 21, 34, 55, 89, 144, ...
Dari data di atas dapat difahami bahwa angka 5 merupakan hasil penjumlahan dari 2 dan 3, sedangkan 12 merupakan 5 + 8.

function fibonacci(n : integer):integer;
begin
  if (n = 1) or (n = 2) then fibonacci := 1
  else fibonacci := fibonacci(n - 1) + fibonacci(n - 2);
end;
Berikut ini adalah contoh rekursi yang mudah dipahami.
program re;
uses wincrt;

procedure rekursi;
begin
if wherex < 80 then
begin
write(' M ');
rekursi;
end;
end;

begin
clrscr;
rekursi;
end.