Upload
kaan-verdioglu
View
267
Download
1
Embed Size (px)
Citation preview
Bölüm 4 : Program Mantığı Geliştirmek
Bu dersi tamamladığımız zaman şunları yapabileceksiniz;
• Değişken tanımlamak ve kullanmak• Tarihlerle çalışmak• Sayılarla çalışmak• Tip dönüşümleri• Değerleri karşılaştırmak• Stringlerle çalışmak• Listelerle çalışmak• Fonksiyonlar oluşturmak• Koşullu dallanma ifadeleri
ASSIGN dAvailCredit = dCredLimit - dBal.DISPLAY "The available credit on" TODAY "is" dAvailCredit.
Operatör
Değişken
Fonksiyon
Deyim
Bir İfadenin Bileşenleri
Değişkenleri Kullanmak
DEFINE VARIABLE cTelefon AS CHARACTER NO-UNDO.DEFINE VARIABLE lEvet AS LOGICAL NO-UNDO.
cTelefon lEvet
Bellek
Bir Değişkene Değer Atamak
DEFINE VARIABLE cCumle AS CHARACTER INITIAL “Merhaba” NO-UNDO.
ASSIGN cCumle = “Merhaba”.
Çalışma zamanı:
Derleme zamanı:
Ne Tip Bir Değişken Kullanıyorum
c i
dt d
l
Görüntüleme Formatını Değiştirmek
ASSIGN Sayi = 12345.6543
DEFINE VARIABLE Sayi AS
INTEGERDECIMAL FORMAT “>>>>>.9”DECIMAL FORMAT “>>>>>.999”DECIMAL FORMAT “>>,>>>.99”
12346
12345.7
12345.654
12,345.65
Uygulama 1 : Değişken Tanımlamak
Tarih Fonksiyonları
DAY(dtTarih)
DEFINE VARIABLE dtTarih AS DATE INITIAL “01/02/2006” NO-UNDO.
MONTH(dtTarih) YEAR(dtTarih)
2 1 2006
Tarihlerle Çalışmak
Değerlendirme Sırası
Bonus = ((dKota / dTSatis) * TabanOdeme) + 1000.
1. Çarpma 2. Bölme 3. Toplama 4. Çıkarma 5. Modulo
1 2 3
MODULO’yu Nasıl Kullanırım
TRUNCATE((VacationDaysLeft / 5),0)
VacationDaysLeft MODULO 5
Kalan haftalar:
Kalan günler:
Sayısal Veriyi Dönüştürmek
DEFINE VARIABLE dTest AS DECIMAL FORMAT 999.9999 NO-UNDO INITIAL 350.9875 .
Uygulama 2 : Tarihler ve Sayılar
Stringleri Birleştirmek
cTamAd = cİlkAd + " " + cİkinciAd + ". " + cSoyad.
Boşluk
Nokta ve boşluk
Argüman Yerleştirmek
cTamAd = SUBSTITUTE("&1 &2.&3",
cIlkAd,cIkinciAd, cSoyad.
INTEGER Veri Tipini Değiştirmek
INTEGER(Orderline.Price * Orderline.Qty)
Büyük – Küçük Harf Değişimi
ASSIGN cBuyuk = CAPS(Customer.NAME) cKucuk = LC(Customer.NAME).
Stringe Dönüştürmek
ASSIGN
cTarihCumle = “Şu anda tarih " +
STRING(TODAY)
cSaat = STRING(TIME, "hh:mm:ss")
cSaatCumle = “ve saat " + cSaat.
Tarihe Dönüştürmek
/* eDateString.p */
DISPLAY
"Convert to date from integers (2,29,2004):"
DATE(2,29,2004)
SKIP
"Convert to date from string ('2/29/04'):"
DATE('2/29/04').
Karışılaştırma Operatörleri
Sembol Anahtar İşlem
= EQ Eşittir<> NE Eşit değildir > GT Büyüktür < LT Küçüktür>= GE Büyük eşittir<= LE Küçük eşittir
String İşlemleri
ABCDEFG cStringLength: 10
cSubString = BCDE
Üçüncü karakter
cSubString2 = CDEF
cTrimStringLength: 7
ABCDEFG
REPLACE Fonksiyonunu Kullanmak
ASSIGN cDeptList = REPLACE(cDeptList, ",", "|").
İlk liste
Değişen Liste
,100,200,300,400,500,600,700
|100|200|300|400|500|600|700
Listede Bir Girdiyi Bulmak İçin LOOKUP Kullanmak
cListe = “Danışmanlık,Yönetim,Pazarlama,Satış,Eğitim”.
LOOKUP(“Satış”,cliste)
LOOKUP(“Yönetim”,cliste)
2 döndürür
4 döndürür
LOOKUP(“İnsan Kaynakları”,clist)
0 döndürür
Bir Listedeki Girdiler
cListe: girdi1, girdi2, girdi3, girdi4, girdi5, girdi6
NUM-ENTRIES(cListe) =6
ENTRY(3,cListe)
Kaç Girdi Var?
NUM-ENTRIES = 4
GİRDİ numarası
Liste Girdilerini Değiştirmek
North,South,East,West.
Nord, Sud, Est, Ouest.
Uygulama 3 : Veri Tipleri, Karşılaştırmalar, Stringler, Listeler ve Fonksiyonlar
Koşullu Dallanmalar
Bugün ayın ilk günü mü? Öyleyse, aylık raporumu
göndermemin zamanı gelmiş.
Koşullu Dallanma
Kullanılabilir kredi 800’den küçük veya eşit mi? Hayır -- OK
Evet -- reddedildi
DO Bloklarıyla IF THEN ELSE
Kullanılabilir kredi 800’den küçük veya eşit mi?
Hayır – boş bırak
Evet – Uyarı mesajı ekle
CASE ile Koşullu Dallanma
Bir CASE için Varsayılan Davranış
VacationDaysLeft
02
0, 1 ya da 2 değil
IF... THEN ‘in İki Tipi
IF... THEN DO: action1END.ELSE DO: action2END.
IF...THEN expression1
ELSE expression2.
İfade Fonksiyon
Bir Uyarı Kutusuyla Koşullu Dallanma
EVET HAYIR
Adımlar
DO WHILE deyim:Satır1.Satır2.Satır3.
END.
Uygulama 4 : Koşullu Dallanma