BİL325 YAZILIM LAB. Tek

Transkript

BİL325 YAZILIM LAB. Tek
BİL325 YAZILIM LAB.
Tek-Ders Sınavı Projesi
Proje: PL/SQL2JavaScript
- Kullanılacak Programlama Dili ve Projenin Geliştirileceği Platform konusunda serbestsiniz.
- Proje kaynak kodlari (source code) hem CD içerisinde hem de basili çıktı olarak teslim
edilecektir.
- Proje ile alakalı sorularınız için [email protected] adresinden bana ulaşabilirsiniz.
Proje Tanımı ve Yapmanız Gerekenler:
PL/SQL Oracle Veritabanı'nın programlama dilidir. Yapılması istenen şey; girdi olarak bir PL/SQL
kod bloğu verildiğinde, çıktısı aynı işi gören bir JavaScript kod bloğunu oluşturan yazılımdır. PL/SQL
dilinin tüm özellikleri çevrilmeyecektir. Çevrilmesi istenenler şunlardır:
Yapıtaşları
JavaScript Karşılığı
Bunları her zaman çevirmeniz
gerekmeyebilir.
Gerektiği yerlerde küme parantezi
kullanarak çevirebilirsiniz.
Declare, Begin, End PL/SQL
declare
begin
end;
Basit Değişkenler
PL/SQL'deki Varchar2 ve Number data tipleri belli kısıtlamaları kabul eder. Mesela, aşağıdaki örnekte
x değişkenine 25 karakterden daha uzun bir değer girilemez. Böyle bir kısıtlamayı dikkate almadan
JavaScript karşılığını aşağıdaki gibi vermeniz yeterlidir.
PL/SQL
JavaScript Karşılığı
JavaScript'te değişken tanımlarken tip
belirtme yok.
i
x
y
z
var
var
var
var
number;
varchar2(25);
date;
boolean;
i
x
y
z
=
=
=
=
null;
null;
null;
null;
Operatörler
PL/SQL
; komut ayıracı
= eşittir işareti
<> ve != eşit değildir işaretleri
< küçüktür işareti
> büyüktür işareti
:= atama işlemi
|| Metin birleştirme (concatenation)
işareti
-- Tek satır comment işareti
/* */ -- Bir ve birden fazla satır
commentleme
JavaScript Karşılığı
;
==
!=
<
>
=
+
//
/* */
If Komutu
PL/SQL
if (x = 'text' and not z) then
y := 5;
elsif (not z) then
y := 0;
else
y := 1;
end if;
JavaScript Karşılığı
if (x == 'text' && !z) {
y = 5;
} else if (!z) {
y = 0;
}
else y = 1;
Döngü Komutu
Döngüden çıkma “exit” veya “exit when” ile olabilir.
PL/SQL
JavaScript Karşılığı
loop
i := i + 1;
exit when i = 10;
i:=i+2;
end loop;
do {
i = i+1;
if (i == 10) break,
i=i+2;
}while(true);
While Döngüsü Komutu
PL/SQL
JavaScript Karşılığı
while (i < 10 ) loop
i := i + 1;
end loop;
while (i < 10) {
i = i + 1;
}
For Döngüsü Komutu
PL/SQL
JavaScript Karşılığı
for i in 0..10 loop
null;
end loop;
for (var i=0; i<10; i++) {
}
Exceptionlar
İçinde exception tanımlanan butun P/SQL blokları JavaScript'e derlenirken try-catch içerisine
alınmalıdır.
PL/SQL
JavaScript Karşılığı
declare
e_invalidValue exception;
v_total_nr number;
begin
v_total_nr := 1 + 2;
raise e_invalidValue;
exception
when e_invalidValue then
null;
end;
var e_invalidValue = 'invalid
value';
var v_total_nr;
try {
v_total_nr = 1 + 2;
throw e_invalidValue;
} catch(exc) {
if (exc == e_invalidValue) {
}
}
Önemli Kaynaklar:
İnternet'te PL/SQL öğrenmek için çok kaynak var ama aşağıdaki link iyi bir başlangıç olabilir:
http://docs.oracle.com/cd/B19306_01/appdev.102/b14261/fundamentals.htm
JacvaScript için http://www.w3schools.com/js/default.asp adresine bakılabilir.
Yazacağınız programı test edebileceğiniz bazı örnek PL/SQL programları ve çıkması beklenen
JavaScript versiyonlarını aşağıdaki gibidir:
PL/SQL
declare
i number;
begin
i:=1;
loop
i:=i+1;
exit when i=5;
end loop;
if i<10 then
dbms_output.put_line('i 10''dan
küçük');
else
dbms_output.put_line('i 10''dan
büyük');
end if;
end;
declare
i number;
j number;
begin
i:=1;
j:=i+1;
while i<10 loop
loop
j:=j+1;
exit when j>25;
j:=j+1;
end loop;
i := i + 1;
end loop;
if i<5 and j<50 then
dbms_output.put_line('i 5''ten az. j
50''den az');
elsif i<10 and j<100 then
dbms_output.put_line('i 10''dan az. j
100''den az');
else
dbms_output.put_line('i''nin değeri
'||i||'. j''nin değeri '||j||'.');
end if;
end;
JavaScript Karşılığı
var i = null;
i = 1;
do {
i = i+1;
if (i == 5) break;
} while(true);
if (i<10) {
console.log('i 10\'dan küçük');
} else {
console.log('i 10\'dan büyük');
}
var i = null;
va j = null;
i = 1;
j = i + 1;
while (i<10) {
do {
j = j + 1;
if (j > 25) break;
j = j + 1;
} while(true);
i = i + 1;
}
if (i<5 && j<50) {
console.log('x 5\'ten az. j 50\'den
az');
} else if (i<10 && j<100) {
console.log('x 10\'dan az. j 100\'den
az');
} else {
console.log('i\'nin değeri ' + i + '. j\'nin
değeri ' + j + '.');
}
Not: İç içe döngüleri çevirmek ekstra puandır. Birinci dereceden olan döngüleri çevirmeniz
yeterlidir.

Benzer belgeler

Online Katalog

Online Katalog x değişkenine 25 karakterden daha uzun bir değer girilemez. Böyle bir kısıtlamayı dikkate almadan JavaScript karşılığını aşağıdaki gibi vermeniz yeterlidir. PL/SQL

Detaylı