YZM311 YAZILIM YAPIMI BÖLÜM 5 YAPIM DİLLERİ VE KODLAMA. Yrd. Doç. Dr. Volkan TUNALI Mühendislik ve Doğa Bilimleri Fakültesi / Maltepe Üniversitesi

Ebat: px
Şu sayfadan göstermeyi başlat:

Download "YZM311 YAZILIM YAPIMI BÖLÜM 5 YAPIM DİLLERİ VE KODLAMA. Yrd. Doç. Dr. Volkan TUNALI Mühendislik ve Doğa Bilimleri Fakültesi / Maltepe Üniversitesi"

Transkript

1 YZM311 YAZILIM YAPIMI BÖLÜM 5 YAPIM DİLLERİ VE KODLAMA Yrd. Doç. Dr. Volkan TUNALI Mühendislik ve Doğa Bilimleri Fakültesi / Maltepe Üniversitesi

2 Giriş 2 Yapım Dilleri Programlama Dili Seçimi "Programming into a Language" Kodlama Sınıflar (Classes) Rutinler (Routines) Değişkenler (Variables) Deyimler (Statements)

3 Programlama Dili Seçimi 3 Programlama dili seçimi üretkenliği ve kod kalitesini çeşitli şekillerde etkileyebilir. Programcılar alışkın oldukları bir programlama dili ile alışkın olmadıkları bir dile göre daha üretkendirler. 3+ yıldır kullandıkları dil ile çalışan programcılar, aynı düzeyde deneyime sahip fakat yeni bir programlama diliyle çalışan programcılara göre %30 daha üretkendirler. (Boehm 2000). Yüksek seviyeli dillerle çalışan programcılar düşük seviyeli dillerle çalışan programcılara göre daha yüksek üretkenlik ve kod kalitesi ile çalışırlar. C++, Java, Smalltalk, ve Visual Basic gibi dillerin Assembly ve C gibi düşük seviyeli dillere göre 5-15 kata kadar üretkenliği, güvenilirliği, basitliği ve anlaşılabilirliği arttırdıkları bilinmektedir. (Brooks 1987, Jones 1998, Boehm 2000).

4 Programlama Dili Seçimi 4 Programlama Dili C Diline Oranı C 1 C Fortran 95 2 Java 2.5 Perl 6 Python 6 Smalltalk 6 Microsoft Visual Basic 4.5 Yüksek Seviyeli Dillerdeki Deyimlerin (Statements) Eşdeğer C Koduna Oranları

5 Programming into a Language 5 Programming in a language (Bir dilde programlama) "Bir dilde programlayan" programcılar düşüncelerini o dilin doğrudan sağladığı yapılarla sınırlandırırlar. Eğer dil ve ilgili araçlar ilkelse, programcının düşünceleri de ilkel olur. Programming into a language (Bir dile programlama) "Bir dile programlayan" programcılar öncelikle ifade etmek istedikleri düşüncelere karar verirler, sonra bu düşünceleri söz konusu dilin sağladığı araçlarla nasıl ifade edeceklerini belirlerler.

6 Sınıflar (Classes) 6 Sınıf Temelleri: Soyut Veri Tipleri (SVT) [Abstract Data Types (ADT)] İyi Sınıf Arabirimleri Sınıf Oluşturma Nedenleri Dile Özgü Konular

7 Sınıf Temelleri: Soyut Veri Tipleri (SVT) 7 Bir soyut veri tipi, verilerin ve o veriler üzerinde yapılacak işlemlerin bir koleksiyonudur. SVT'leri anlamak Nesne Yönelimli Programlama'yı anlamanın temelidir. Önce kullanılacak SVT'leri sonra Sınıfları düşünmek "Bir dile programlama"ya örnektir. Bir Bağlı-Listeye (linked-list) bir düğüm (node) eklemek yerine Bir elektronik-tabloya (spreadsheet) bir hücre (cell) eklemek Pencere tipleri listesine yeni bir pencere tipi eklemek Bir tren simülasyonuna başka bir vagon eklemek Düşük seviyeli implementasyon alanında (implementation domain) çalışmak yerine çözümlenecek probleme ilişkin problem alanında (problem domain) çalışılması.

8 SVT Örneği: Yazı Tipi Düzenleme 8 Bir fontu aslında 16 piksel yüksekliğinde olan 12 punto font büyüklüğüne çevirmek için şuna benzer bir kod kullanılabilir: currentfont.size = 16 Eğer bir kod kütüphanesi oluşturduysanız, kod belki şu şekilde daha okunaklı olabilir: currentfont.size = PointsToPixels( 12 ) Veya ilgili özellik için daha spesifik bir isim vermiş olabilirsiniz: currentfont.sizeinpixels = PointsToPixels( 12 ) Bu yazı tipini koyu yapmak için onaltılık tabanındaki 0x02 sabitini mantıksal veya ile uygulayan şuna benzer bir kod kullanabilirsiniz: currentfont.attribute = currentfont.attribute or 0x02 Veya ondan daha iyisi şöyle olabilir: currentfont.attribute = currentfont.attribute or BOLD Veya daha iyisi: currentfont.bold = True

9 SVT Kullanmanın Yararları 9 İmplementasyon detaylarını gizleyebilirsiniz Değişiklikler bütün programı etkilemez Arayüzleri daha anlaşılır ve aydınlatıcı yapabilirsiniz Performası arttırmak daha kolaydır Programın doğruluğu daha açık bir şekilde görülebilir Program kendi kendini dokümante eder hale gelir Programın her yerinde aynı verileri parametre geçirmek zorunda kalmazsınız Düşük seviyeli implementasyon yapılarıyla çalışmak yerine gerçek hayat varlıklarına daha yakın modellerle çalışabilirsiniz

10 SVT Örneği: Yazı Tipi Düzenleme 10 SVT tanımlamak için yazı tipini kontrol eden birkaç rutin tanımlamak yeterli olacaktır. Örneğin: currentfont.setsizeinpoints( sizeinpoints ) currentfont.setsizeinpixels( sizeinpixels ) currentfont.setboldon() currentfont.setboldoff() currentfont.setitalicon() currentfont.setitalicoff() currentfont.settypeface( facename ) Bu rutinlerin içindeki kod muhtemelen kısa olacaktır. Bu rutinlerin içindeki kod muhtemelen daha önceki örnektekiler gibi olacaktır. Bir farkla: düşük seviyeli yazı tipi işlemleri birkaç rutin ile izole edilmiş oldu. Bu yapı yazı tipleriyle çalışmak için çok daha iyi bir soyutlama ve yazı tipi işlemlerinde olabilecek değişikliklere karşı koruyucu bir katmak sağlamış oldu.

11 SVTler ve Sınıflar 11 Soyut veri tipleri sınıf kavramının temelini oluşturmaktadır. Sınıfları destekleyen bir dilde her bir SVT ayrı bir Sınıf olarak implemente edilebilir. Sınıflar ayrıca kalıtım (inheritance) ve çokbiçimlilik (polymorphism) gibi ek kavramlar içermektedir. Bir sınıf, bir soyut veri tipi + kalıtım & çokbiçimlilik olarak düşünülebilir.

12 İyi Sınıf Arabirimleri 12 Yüksek kaliteli sınıf oluşturmanın ilk ve belki de en önemli adımı iyi bir arabirim oluşturmaktır. Bunun için şunlar gerekir: İyi Soyutlama (Abstraction) İyi Sarmalama (Encapsulation)

13 İyi Soyutlama (Abstraction) 13 Sınıf arabiriminde tutarlı bir soyutlama oluşturun. Sınıfın hangi soyutlamayı implemente ettiğini anladığınızdan emin olun. Hizmetleri zıtlarıyla birlikte çiftler halinde sunun. İlgisiz/bağlantısız bilgileri başka sınıflara taşıyın. Arabirim soyutlamasıyla tutarlı olmayan public üyeler eklemeyin. Soyutlama ve Uyumu (cohesion) birlikte düşünün.

14 İyi Sarmalama (Encapsulation) 14 Sınıfların ve üyelerin erişilebilirliğini en aza indirin. Üye verileri public olarak dışarıya açmayın. Gizli implementasyon detaylarını sınıfın arabirimine koymamaya çalışın. Sınıfı kullanacaklarla ilgili varsayımda bulunmayın. Bir rutini sadece public rutinleri kullanıyor diye public arabirime koymayın. Yazma-zamanı kolaylığı yerine okuma-zamanı kolaylığını önemseyin. Sarmalamayı anlamsal (semantic) olarak ihlal edip etmediğinize dikkate edin. Sıkı bağlılığa (tight coupling) dikkat edin.

15 Sınıf Oluşturma Nedenleri 15 Gerçek hayat nesnelerini modellemek Soyut nesneleri modellemek Karmaşıklığı azaltmak Karmaşıklığı izole etmek İmplementasyon detaylarını gizlemek Değişikliklerin etkisinin sınırlandırmak Global veriyi gizlemek

16 Sınıf Oluşturma Nedenleri 16 Parametre geçirmeyi kolaylaştırmak Merkezi denetim noktaları oluşturmak Yeniden kullanılabilir (reusable) kod oluşturmak İlişkili işlemleri bir arada toplamak (package) Belirli bir yeniden düzenlemeyi gerçekleştirmek (refactoring)

17 Uzak Durulacak Sınıflar 17 Tanrı sınıflar (god classes) oluşturmaktan uzak durun İlgisiz sınıfları yok edin Fiillerden yola çıkılarak isimlendirilmiş sınıflardan uzak durun

18 Dile Özgü Konular 18 Kalıtım yoluyla override edilen yapıcı (constructor) ve yıkıcıların (destructor) davranışları İstisna yakalama (exception-handling) koşulları altında yapıcı ve yıkıcıların davranışları Varsayılan yapıcıların önemi (parametresiz yapıcı) Yıkıcı veya sonlandırıcının (finalizer) ne zaman çağrıldığı Atama ve eşitlik karşılaştırması gibi dilin kendi operatörlerinin override edilerek kullanılması Nesneler oluşturulduğu ve yok edildiği zaman ve ayrıca tanımlandıklarında ve kapsam dışı kaldıklarında bellek yönetiminin nasıl yapıldığı

19 Rutinler (Routines) 19 Rutin Oluşturmak için Geçerli Nedenler Rutin Seviyesinde Tasarım İyi Rutin İsimleri Bir Rutin Ne Kadar Uzun Olabilir? Rutin Parametreleri Nasıl Kullanılmalı?

20 Rutin Oluşturmak için Geçerli Nedenler 20 Karmaşıklığı azaltmak Ara düzeyde anlaşılabilir bir soyutlama oluşturmak Kod tekrarından sakınmak Altsınıf türetmeyi desteklemek İşlem sıralarını (sequence) gizlemek İşaretçi (pointer) işlemlerini gizlemek Taşınabilirliği arttırmak (portability) Karmaşık boolen testlerini basitleştirmek Performansı arttırmak

21 Rutin Oluşturmak için Fazlasıyla Basit Görünen İşlemler 21 Küçük rutinlerin bazı avantajları vardır: okunaklılığı arttırırlar points = deviceunits * ( POINTS_PER_INCH / DeviceUnitsPerInch() ) Function DeviceUnitsToPoints ( deviceunits Integer ): Integer DeviceUnitsToPoints = deviceunits * ( POINTS_PER_INCH / DeviceUnitsPerInch() ) End Function points = DeviceUnitsToPoints( deviceunits ) Küçük işlemlerin büyük işlemlere dönüşme eğilimi vardır Function DeviceUnitsToPoints( deviceunits: Integer ) Integer if ( DeviceUnitsPerInch() <> 0 ) DeviceUnitsToPoints = deviceunits * ( POINTS_PER_INCH / DeviceUnitsPerInch() ) else DeviceUnitsToPoints = 0 end if End Function

22 İyi Rutin İsimleri 22 Rutinin yaptığı herşeyi açıklayın Anlamsız, belirsiz ve boş fiillerden uzak durun HandleCalculation(), PerformServices(), OutputUser(), ProcessInput(), DealWithOutput() Rutin isimlerini yalnızca sayı ile farklılaştırmayın OutputUser(), OutputUser1(), OutputUser2() Rutin isimlerini gerektiği kadar uzun tutun Bir fonksiyonu isimlendirmek için dönüş değerinin açıklamasını kullanın cos(), customerid.next(), printer.isready(), pen.currentcolor() Bir prosedürü isimlendirmek için, bir nesne ile devam eden güçlü bir fiil kullanın PrintDocument(), CalcMonthlyRevenues(), CheckOrderlnfo() Zıtları doğru şekilde kullanın add/remove, open/close, start/stop, get/set Ortak işlemler için isimlendirme standartları oluşturun

23 Bir Rutin Ne Kadar Uzun Olabilir? 23 Çoğunlukla rutinlerin küçük olması tercih edilir. Genellikle bir rutinin satıra kadar büyümesine izin verilebilir. (Satır ile kastedilen yorum olmayan ve boş olmayan kod satırı kastedilmektedir.) Rutin uzunluğundan daha önemli şeyler var: Rutinin uyumu (cohesion) İç içe yuvalanma derinliği Değişkenlerin sayısı Karar noktalarının sayısı Rutini açıklamak için kullanılan yorum satırlarının sayısı Karmaşıklıkla ilgili şeyler

24 Rutin Parametreleri Nasıl Kullanılmalı? 24 Parametereleri giren-değişen-çıkan (input-modify-output) sırasında kullanın Benzer parametre dizilimini birden çok rutin kullanıyorsa, bunları tüm rutinlerde tutarlı bir sırayla kullanın Rutine geçirilen tüm parametreleri rutinde kullanın Durum (status) veya hata (error) değişkenlerini en sona koyun Rutin parametrelerini yerel değişkenler gibi kullanmayın Parametrelerle ilgili varsayımları dokümante edin Parameterelerin yalnızca-giren, değişen, ya da yalnızca-çıkan olduğu Parametrelerin birimleri (inç, cm, feet, metre, vb.) Durum ve hata kodlarının anlamları (enum tipler kullanılmıyorsa) Beklenen değer aralıkları Asla olmaması gereken spesifik değerler Rutinin parametre sayısını ortalama 7 olarak sınırlandırın Parametreler için giren-değişen-çıkan olmasına göre bir isimlendirme standardı kullanın

25 Değişkenler (Variables) 25 Değişken Bildirimleri (Variable Declarations) Değişkenlerin İlk Değerinin Verilmesi (Initializing Variables) Her Bir Değişkenin Yalnızca Tek Amaç İçin Kullanılması Değişkenlerin İsimlendirilmesi

26 Değişken Bildirimleri (Variable Declarations) 26 Varsayılan (implicit) bildirimleri devre dışı bırakın acctno, acctnum Tüm değişkenler için bildirimde bulunun İsimlendirme standartları kullanın Değişken isimlerini kontrol edin

27 Değişkenlerin İlk Değerinin Verilmesi 1/3 27 Değişkenlere bildirim yapıldığı anda ilk değer verin float studentgrades[ MAX_STUDENTS ] = { 0.0 ; Değişkenlere ilk kullanıldıkları yere yakın yerde ilk değer verin KÖTÜ UYGULAMA ' declare all variables Dim accountindex As Integer Dim total As Double Dim done As Boolean İYİ UYGULAMA Dim accountindex As Integer accountindex = 0 ' code using accountindex ' initialize all variables accountindex = 0 total = 0.0 done = False ' code using accountindex ' code using total Dim total As Double total = 0.0 ' code using total Dim done As Boolean done = False ' code using done While Not done ' code using done While Not done

28 Değişkenlerin İlk Değerinin Verilmesi 2/3 28 İdeal olarak, değişken bildirim ve tanımlamalarını ilk kullanıldıkları yere yakın yerde yapın int accountindex = 0; // code using accountindex double total = 0.0; // code using total boolean done = false; // code using done while (! done ) { Mümkünse final veya const kullanın Sayaç ve kümülatif değişkenlere özellikle dikkat edin Sınıfın üyelerini yapıcı içinde ilklendirin Yeniden ilk değer vermeye gerek olup olmadığını kontrol edin

29 Değişkenlerin İlk Değerinin Verilmesi 3/3 29 İsimlendirilmiş sabitleri yalnızca bir kez ilklendirin; değişkenleri ise çalışan kod ile ilklendirin Varsa tüm değişkenleri otomatik olarak ilklendiren derleyici seçeneklerini kullanın Derleyici uyarı (warning) mesajlarından yararlanın Girdi türündeki parametrelerin geçerliliğini kontrol edin (doğru ilklendirilmemiş olma olasılığına karşı).

30 Her Bir Değişkenin Yalnızca Tek Amaç İçin Kullanılması 30 Her bir değişkenin yalnızca tek amaç için kullanın KÖTÜ UYGULAMA // Compute roots of a quadratic equation. // This code assumes that (b*b-4*a*c) is // positive. temp = Sqrt( b*b - 4*a*c ); root[o] = ( -b + temp ) / ( 2 * a ); root[1] = ( -b - temp ) / ( 2 * a ); İYİ UYGULAMA // Compute roots of a quadratic equation. // This code assumes that (b*b-4*a*c) is // positive. discriminant = Sqrt( b*b - 4*a*c ); root[0] = ( -b + discriminant ) / ( 2 * a ); root[1] = ( -b - discriminant ) / ( 2 * a ); // swap the roots temp = root[0]; root[0] = root[1]; root[1] = temp; // swap the roots oldroot = root[0]; root[0] = root[1]; root[1] = oldroot; Gizli anlamlar içeren değişkenlerden uzak durun Bildirimi yapılan tüm değişkenlerin kullanıldığından emin olun

31 Değişkenlerin İsimlendirilmesi 1/6 31 Kod yazıldığından daha fazla okunur. Yazma zamanını kolaylaştırmak yerine okuma zamanını kolaylaştıran isimler seçmeye özen gösterin. Örneğin: KÖTÜ UYGULAMA x = x - xx; xxx = fido + SalesTax( fido ); x = x + LateFee( x1, x ) + xxx; x = x + Interest( x1, x ); İYİ UYGULAMA balance = balance - lastpayment; monthlytotal = newpurchases + SalesTax( newpurchases ); balance = balance + LateFee( customerid, balance ) + monthlytotal; balance = balance + Interest( customerid, balance ); En önemli isimlendirme kuralları: Değişkenin ismi, değişkenin temsil ettiği varlığı tam olarak ve net bir şekilde açıklamalıdır. Nasıl? Değişkenin temsil ettiği şeyi sözcüklerle ifade edin. Değişkenin ismi olabildiğine spesifik olmalıdır.

32 Değişkenlerin İsimlendirilmesi 2/6 32 Değşkenin Amacı Running total of checks written to date Velocity of a train Current date İyi İsimler, İyi Tanımlayıcılar Kötü İsimler, Zayıf Tanımlayıcılar runningtotal, checktotal velocity, trainvelocity, velocityinmph currentdate, todaysdate written, ct, checks, CHKTTL, x, x1, x2 velt, v, tv, x, x1, x2, train cd, current, c, x, x1, x2, date Lines per page linesperpage lpp, lines, l, x, x1, x2

33 Değişkenlerin İsimlendirilmesi 3/6 33 Optimum İsim Uzunluğu x ile maximumnumberofpointsinmodernolympics değişkenlerinin uzunlukları arasında bir yerde olmalı. Çok kısa isimler anlamı yeterince iletmiyor. Çok uzun isimleri yazmak zordur ve programın görsel yapısını belirsizleştirir. Çok uzun: Çok kısa: Uygun: numberofpeopleontheusolympicteam numberofseatsinthestadium maximumnumberofpointsinmodernolympics n, np, ntm n, ns, nsisd m, mp, max, points numteammembers, teammembercount numseatsinstadium, seatcount teampointsmax, pointsrecord

34 Değişkenlerin İsimlendirilmesi 4/6 34 Değişken İsimlerinde Hesaplanan-Değer Niteleyicileri Eğer bir ismi Total, Sum, Average, Max, Min, Record, String, or Pointer gibi bir niteleyici ile değiştirirseniz, niteleyiciyi ismin sonuna ekleyin. Değişkenin anlamının önemli kısmı önde kalmış olur. İlişkili değişkenler arasında hoş bir simetri oluşur. revenuetotal, expensetotal, revenueaverage, expenseaverage Bu kuralın istisnası: Num niteleyicisini en başa koyun. numcustomers: toplam müşteri sayısı customernum: geçerli müşterinin numarası!!!

35 Değişkenlerin İsimlendirilmesi 5/6 35 Ne Zaman İyi Bir İsimlendirme Standardınız Olmalı? Bir projede birden çok programcı çalışıyorsa Değişiklik ve bakım amacıyla bir programı başka bir programcıya yönlendirmeniz gerekirse (nerdeyse her zaman böyle olur) Programlarınız kurum içindeki başka programcılar tarafından gözden geçiriliyorsa Programınız bir seferde tamamına odaklanamayacak kadar büyükse ve bu nedenle parçalar halinde çalışmanız gerekiyorsa Kodlarınız üzerinde haftalar ya da aylar sonra yeniden çalışmanız gerekecekse Programınızda projeye ilişkin çok sayıda pek alışık olmadığınız terimler varsa ve kodlarken standart terimler ve kısaltmalar kullanmak istiyorsanız

36 Değişkenlerin İsimlendirilmesi 6/6 36 Dilden Bağımsız İsimlendirme Kuralları İçin Öneriler: Değişken isimleriyle rutin isimlerini farklılaştırın: variablename, RoutineName(). Sınıflarla nesneleri farklılaştırın: Widget widget; Global değişkenleri belirginleştirin: g_runningtotal Sınıf üyelerini belirginleştirin: m_birthdate Tip tanımlamalarını belirginleştirin: TCustomer İsimlendirilmiş sabitleri belirginleştirin: LINES_PER_PAGE_ MAX Enum tiplerinin elemanlarını belirginleştirin Zorlayıcı kuralı olmayan dillerde sadece-girdi olan değişkenleri belirginleştirin Okunaklılığı arttırmak için isimleri biçimlendirin: GYMNASTICSPOINTTOTAL gymnasticspointtotal veya gymnastics_point_total

37 Deyimler (Statements) 37 Şart İfadelerinin Kullanımı (Conditionals) if Deyimleri case Deyimleri Döngüleri Kontrol Etmek Döngü Türünü Seçmek Döngüyü Kontrol Etmek Denetimle İlgili Genel Konular Boolean İfadeler Tehlikeli Biçimde Derin İç İçe İfadeler Kontrol Yapıları ve Karmaşıklık

38 if Deyimleri 1/8 38 Düz if-then Deyimleri Önce kodun nominal yolunu yazın; olağandışı ya da nadir durumları sonra yazın Eşitlik durumunda doğru dallanıldığından emin olun Normal durumu if 'ten sonraya koyun, else 'ten sonraya değil if 'ten sonra anlamlı bir deyim koyun boş deyim kullanmayın else durumunu hesaba katın else bölümünün doğruluğunu test edin if ve else bloklarının ters olup olmadığını kontrol edin

39 if Deyimleri 2/8 39 Normal durumu if 'ten sonraya koyun, else 'ten sonraya değil KÖTÜ UYGULAMA OpenFile( inputfile, status ) If ( status = Status_Error ) Then errortype = FileOpenError Else ReadFile( inputfile, filedata, status ) If ( status = Status_Success ) Then SummarizeFileData( filedata, summarydata, status ) If ( status = Status_Error ) Then errortype = ErrorType_DataSummaryError Else PrintSummary( summarydata ) SaveSummaryData( summarydata, status ) If ( status = Status_Error ) Then errortype = ErrorType_SummarySaveError Else UpdateAllAccounts() EraseUndoFile()a errortype = ErrorType_None End If End If Else errortype = ErrorType_FileReadError End If End If İYİ UYGULAMA OpenFile( inputfile, status ) If ( status = Status_Success ) Then ReadFile( inputfile, filedata, status ) If ( status = Status_Success ) Then SummarizeFileData( filedata, summarydata, status ) If ( status = Status_Success ) Then PrintSummary( summarydata ) SaveSummaryData( summarydata, status ) If ( status = Status_Success ) Then UpdateAllAccounts() EraseUndoFile() errortype = ErrorType_None Else errortype = ErrorType_SummarySaveError End If Else errortype = ErrorType_DataSummaryError End If Else errortype = ErrorType_FileReadError End If Else errortype = ErrorType_FileOpenError End If

40 if Deyimleri 3/8 40 if 'ten sonra anlamlı bir deyim koyun boş deyim kullanmayın KÖTÜ UYGULAMA if ( sometest ) ; else { // do something İYİ UYGULAMA if (! sometest ) { // do something else durumunu hesaba katın İYİ // if color is valid if ( COLOR_MIN <= color && color <= COLOR_MAX ) { // do something BETTER PRACTICE // if color is valid if ( COLOR_MIN <= color && color <= COLOR_MAX ) { // do something else { // else color is invalid // screen not written to // safely ignore command

41 if Deyimleri 4/8 41 Zincirleme if-then-else Deyimleri Karmaşık boolean test ifadelerini boolean fonksiyon çağrılarıyla basitleştirin En olası durumları ilk sıralara koyun Bütün olasılıkları dikkate aldığınızdan emin olun Eğer kullandığınız dil destekliyorsa if-then-else zincirlerini başka yapılara dönüştürün

42 if Deyimleri 5/8 42 Karmaşık boolean test ifadelerini boolean fonksiyon çağrılarıyla basitleştirin KÖTÜ UYGULAMA if ( inputcharacter < SPACE ) { charactertype = CharacterType_ControlCharacter; else if ( inputcharacter == ' ' inputcharacter == ',' inputcharacter == '.' inputcharacter == '!' inputcharacter == '(' inputcharacter == ')' inputcharacter == ':' inputcharacter == ';' inputcharacter == '?' inputcharacter == '-' ) { charactertype = CharacterType_Punctuation; else if ( '0' <= inputcharacter && inputcharacter <= '9' ) { charactertype = CharacterType_Digit; else if ( ( 'a' <= inputcharacter && inputcharacter <= 'z' ) ( 'A' <= inputcharacter && inputcharacter <= 'Z' ) ) { charactertype = CharacterType_Letter; İYİ UYGULAMA if ( IsControl( inputcharacter ) ) { charactertype = CharacterType_ControlCharacter; else if ( IsPunctuation( inputcharacter ) ) { charactertype = CharacterType_Punctuation; else if ( IsDigit( inputcharacter ) ) { charactertype = CharacterType_Digit; else if ( IsLetter( inputcharacter ) ) { charactertype = CharacterType_Letter;

43 if Deyimleri 6/8 43 En olası durumları ilk sıralara koyun KÖTÜ UYGULAMA if ( IsControl( inputcharacter ) ) { charactertype = CharacterType_ControlCharacter; else if ( IsPunctuation( inputcharacter ) ) { charactertype = CharacterType_Punctuation; else if ( IsDigit( inputcharacter ) ) { charactertype = CharacterType_Digit; else if ( IsLetter( inputcharacter ) ) { charactertype = CharacterType_Letter; İYİ UYGULAMA if ( IsLetter( inputcharacter ) ) { charactertype = CharacterType_Letter; else if ( IsPunctuation( inputcharacter ) ) { charactertype = CharacterType_Punctuation; else if ( IsDigit( inputcharacter ) ) { charactertype = CharacterType_Digit; else if ( IsControl( inputcharacter ) ) { charactertype = CharacterType_ControlCharacter;

44 if Deyimleri 7/8 44 Bütün olasılıkları dikkate aldığınızdan emin olun KÖTÜ UYGULAMA if ( IsLetter( inputcharacter ) ) { charactertype = CharacterType_Letter; else if ( IsPunctuation( inputcharacter ) ) { charactertype = CharacterType_Punctuation; else if ( IsDigit( inputcharacter ) ) { charactertype = CharacterType_Digit; else if ( IsControl( inputcharacter ) ) { charactertype = CharacterType_ControlCharacter; İYİ UYGULAMA if ( IsLetter( inputcharacter ) ) { charactertype = CharacterType_Letter; else if ( IsPunctuation( inputcharacter ) ) { charactertype = CharacterType_Punctuation; else if ( IsDigit( inputcharacter ) ) { charactertype = CharacterType_Digit; else if ( IsControl( inputcharacter ) ) { charactertype = CharacterType_ControlCharacter; else { DisplayError( "Unexpected character detected." );

45 if Deyimleri 8/8 45 Eğer kullandığınız dil destekliyorsa if-then-else zincirlerini başka yapılara dönüştürün KÖTÜ UYGULAMA if ( inputcharacter < SPACE ) { charactertype = CharacterType_ControlCharacter; else if ( inputcharacter == ' ' inputcharacter == ',' inputcharacter == '.' inputcharacter == '!' inputcharacter == '(' inputcharacter == ')' inputcharacter == ':' inputcharacter == ';' inputcharacter == '?' inputcharacter == '-' ) { charactertype = CharacterType_Punctuation; else if ( '0' <= inputcharacter && inputcharacter <= '9' ) { charactertype = CharacterType_Digit; else if ( ( 'a' <= inputcharacter && inputcharacter <= 'z' ) ( 'A' <= inputcharacter && inputcharacter <= 'Z' ) ) { charactertype = CharacterType_Letter; İYİ UYGULAMA Select Case inputcharacter Case "a" To "z" charactertype = CharacterType_Letter Case " ", ",", ".", "!", "(", ")", ":", ";", "?", "-" charactertype = CharacterType_Punctuation Case "0" To "9" charactertype = CharacterType_Digit Case FIRST_CONTROL_CHARACTER To LAST_CONTROL_CHARACTER charactertype = CharacterType_Control Case Else DisplayInternalError( "Unexpected character detected." ) End Select

46 case Deyimleri 46 case seçeneklerini alfabetik ya da nümerik olarak sıralayın Normal durumu ilk sıraya koyun case seçeneklerini çalıştırılma sıklıklarına göre sıralayın case bloklarının yaptığı işleri basit tutun default case bloğunu yalnızca geçerli varsayılan durum için kullanın default case bloğunu hata tespiti için kullanın C++ ve Java'da case deyimlerinin sonundan aşağı düşme tehlikesine dikkat edin C++'ta case deyiminden aşağı devam söz konusuysa açıkça ve hatasız bir şekilde bunu belirtin

47 Döngü Türünü Seçmek 47 Döngü Türü Esneklik Şart Test Yeri for esnek başta while esnek başta do-while, esnek sonda repeat-until foreach katı başta Döngünün kaç kere tekrar edeceği belli değilse while döngüsü kullanın. Belli sayıda tekrar edecek işlemler için for döngüsü iyi bir seçimdir. foreach döngüsü veya diğer dillerdeki eşdeğerleri (foreach in C#, For-Each in Visual Basic, for-in in Python) bir array veya koleksiyonun elemanları üzerinde işlem yapmak için çok uygundur.

48 Döngüyü Kontrol Etmek 48 Döngüye Giriş Döngünün Ortasını İşleme Döngüden Çıkış Döngü Değişkenlerinin Kullanımı Bir Döngü Ne Kadar Uzun Olmalı?

49 Döngüye Giriş 49 Döngüye yalnızca bir yerden girin İlklendirme kodunu döngünün hemen üzerine koyun Sonsuz döngü için while( true ) kullanın Eğer uygunsa for döngüsünü tercih edin while döngüsü daha uygunsa for döngüsü kullanmayın KÖTÜ UYGULAMA // read all the records from a file recordcount = 0; for ( inputfile.movetostart();!inputfile.endoffile(); inputfile.getrecord() ) { recordcount++; İYİ UYGULAMA // read all the records from a file inputfile.movetostart(); recordcount = 0; while (!inputfile.endoffile() ) { inputfile.getrecord(); recordcount++;

50 Döngünün Ortasını İşleme 50 Döngü deyimlerini çevrelemek için { ve kullanın Boş döngülerden uzak durun KÖTÜ UYGULAMA while ( ( inputchar = datafile.getchar() )!= CharType_Eof ) { ; İYİ UYGULAMA do { inputchar = datafile.getchar(); while ( inputchar!= CharType_Eof ); Döngünün idaresiyle ilgili işleri döngü başında ya da döngü sonunda yapın İYİ UYGULAMA namecount = 0; totallength = 0; while (!inputfile.endoffile() ) { // do the work of the loop inputfile >> inputstring; names[ namecount ] = inputstring; // prepare for next pass through the loop--housekeeping namecount++; totallength = totallength + inputstring.length(); Her bir döngünün yalnızca bir fonksiyon gerçekleştirmesini sağlayın

51 Döngüden Çıkış 1/2 51 Döngünün sona ereceğinden emin olun Döngü sonlanma koşullarının açıkça belirgin olmasını sağlayın Döngüyü sonlandırmak için for döngüsünün sayaç değişkeniyle oynamayın for ( int i = 0; i < 100; i++ ) { // some code if ( ) { i = 100; KÖTÜ UYGULAMA // more code

52 Döngüden Çıkış 2/2 52 Döngünün sayaç değişkeninin son değerine bağımlı kod yazmaktan sakının KÖTÜ UYGULAMA for ( recordcount = 0; recordcount < MAX_RECORDS; recordcount++ ) { if ( entry[ recordcount ] == testvalue ) { break; // lots of code if ( recordcount < MAX_RECORDS ) { return( true ); else { return( false ); İYİ UYGULAMA found = false; for ( recordcount = 0; recordcount < MAX_RECORDS; recordcount++ ) { if ( entry[ recordcount ] == testvalue ) { found = true; break; // lots of code return( found ); break ve continue komutlarını dikkatle kullanın

53 Döngü Değişkenlerinin Kullanımı 1/2 53 Diziler ve döngüler üzerinde sınır değişkeni olarak ordinal veya enum kullanın İç içe döngülerin okunaklı ve anlaşılır olması için anlamlı değişken isimleri kullanın KÖTÜ UYGULAMA for ( int i = 0; i < numpaycodes; i++ ) { for ( int j = 0; j < 12; j++ ) { for ( int k = 0; k < numdivisions; k++ ) { sum = sum + transaction[ j ][ i ][ k ]; İYİ UYGULAMA for ( int paycodeidx = 0; paycodeidx < numpaycodes; paycodeidx++ ) { for (int month = 0; month < 12; month++ ) { for ( int divisionidx = 0; divisionidx < numdivisions; divisionidx++ ) { sum = sum + transaction[ month ][ paycodeidx ][ divisionidx ];

54 Döngü Değişkenlerinin Kullanımı 2/2 54 Döngü sayaçlarının karışmaması için anlamlı ve ayırdedici isimler kullanın KÖTÜ UYGULAMA for ( i = 0; i < numpaycodes; i++ ) { // lots of code for ( j = 0; j < 12; j++ ) { // lots of code for ( i = 0; i < numdivisions; i++ ) { sum = sum + transaction[ j ][ i ][ k ]; Döngü sayaç değişkenlerinin kapsamını yalnızca döngü içiyle sınırlandırın İYİ UYGULAMA for ( int recordcount = 0; recordcount < MAX_RECORDS; recordcount++ ) { // looping code that uses recordcount

55 Bir Döngü Ne Kadar Uzun Olmalı? 55 Döngünün tamamının bir bakışta görülebilecek uzunlukta olmasına çalışın İç içe döngülerin seviyesi en fazla 3 olmalıdır Uzun döngülerin iç kısımlarını rutinlerle yeniden düzenleyin Uzun döngüleri özellikle açık ve sade hale getirin

56 Boolean İfadeler 56 Boolean değerleri true ve false ile üstü kapalı biçimde karşılaştırın KÖTÜ UYGULAMA while ( done == false ) İYİ UYGULAMA while (!done ) while ( (a > b) == true ) Karmaşık testleri yeni boolean değişkenlerle kısmi testlere bölüştürün Karmaşık ifadeleri boolean fonksiyonlarla sadeleştirin Boolean testlerini olumsuzlarıyla sadeleştirmek için DeMorgan yasalarını uygulayın KÖTÜ UYGULAMA if (!displayok!printerok ) Boolean ifadeleri netleştirmek için parantez kullanın KÖTÜ UYGULAMA if ( a < b == c == d ) Boolean ifadelerin nasıl değerlendirildiğini bilin KÖTÜ UYGULAMA if ((denominator!= 0 ) & ((item / denominator) > MIN_VALUE)) while ( a > b ) Java'da a==b ile a.equals(b) arasındaki farkı bilin İYİ UYGULAMA if (!( displayok && printerok ) ) İYİ UYGULAMA if ( ( a < b ) == ( c == d ) ) İYİ UYGULAMA if ((denominator!= 0) && ((item / denominator) > MIN_VALUE))

57 Tehlikeli Biçimde Derin İç İçe İfadeler 1/5 57 İç içe if deyimlerini, koşulun bazı kısımlarını yeniden test ederek sadeleştirin KÖTÜ UYGULAMA if ( inputstatus == Success ) { // lots of code if ( printerroutine!= NULL ) { // lots of code if ( SetupPage() ) { // lots of code if ( AllocMem( &printdata ) ) { // lots of code İYİ UYGULAMA if ( inputstatus == Success ) { // lots of code if ( printerroutine!= NULL ) { // lots of code if ( ( inputstatus == Success ) && ( printerroutine!= NULL ) && SetupPage() ) { // lots of code if ( AllocMem( &printdata ) ) { // lots of code

58 Tehlikeli Biçimde Derin İç İçe İfadeler 2/5 58 İç içe if deyimlerini, break bloğu kullanarak sadeleştirin KÖTÜ UYGULAMA if ( inputstatus == Success ) { // lots of code if ( printerroutine!= NULL ) { // lots of code if ( SetupPage() ) { // lots of code if ( AllocMem( &printdata ) ) { // lots of code İYİ UYGULAMA do { // begin break block if ( inputstatus!= Success ) { break; // break out of block // lots of code if ( printerroutine == NULL ) { break; // break out of block // lots of code if (!SetupPage() ) { break; // break out of block // lots of code if (!AllocMem( &printdata ) ) { break; // break out of block // lots of code while (FALSE); // end break block

Yazılım Kodlama ve İ simlendirme Standartları v1.0

Yazılım Kodlama ve İ simlendirme Standartları v1.0 Yazılım Kodlama ve İ simlendirme Standartları v1.0 İçerik Yazılım Kodlama ve İsimlendirme Standartları... 2 1. Amaç... Hata! Yer işareti tanımlanmamış. 2. Kapsam... Hata! Yer işareti tanımlanmamış. 3.

Detaylı

2013-14 GÜZ YY. - MKT103 - GÖRSEL PROGRAMLAMA DERSİ - ARA SINAVI

2013-14 GÜZ YY. - MKT103 - GÖRSEL PROGRAMLAMA DERSİ - ARA SINAVI 2013-14 GÜZ YY. - MKT103 - GÖRSEL PROGRAMLAMA DERSİ - ARA SINAVI KOÜ Mekatronik Mühendisliği Bölümü/MKT-103-Görsel Programlama Dersi - Ara Sınav J-grubu Ad-Soyad:...No:... J GRUBU-süre:70dk 1.) Aşağıdaki

Detaylı

Görsel Programlama DERS 03. Görsel Programlama - Ders03/ 1

Görsel Programlama DERS 03. Görsel Programlama - Ders03/ 1 Görsel Programlama DERS 03 Görsel Programlama - Ders03/ 1 Java Dili, Veri Tipleri ve Operatörleri İlkel(primitive) Veri Tipleri İLKEL TİP boolean byte short int long float double char void BOYUTU 1 bit

Detaylı

Önemli noktalar. Paradigma Nesnelere Giriş Mesajlar / Ara bağlantılar Bilgi Gizleme (Information Hiding ) Sınıflar(Classes) Kalıtım/Inheritance

Önemli noktalar. Paradigma Nesnelere Giriş Mesajlar / Ara bağlantılar Bilgi Gizleme (Information Hiding ) Sınıflar(Classes) Kalıtım/Inheritance Önemli noktalar Paradigma Nesnelere Giriş Mesajlar / Ara bağlantılar Bilgi Gizleme (Information Hiding ) Sınıflar(Classes) Kalıtım/Inheritance public class Test { // çalışır İnsan insan = new Çiçekçi();

Detaylı

PASCAL PROGRAMLAMA DİLİ YAPISI

PASCAL PROGRAMLAMA DİLİ YAPISI BÖLÜM 3 PASCAL PROGRAMLAMA DİLİ YAPISI 3.1. Giriş Bir Pascal programı en genel anlamda üç ayrı kısımdan oluşmuştur. Bu kısımlar bulunmaları gereken sıraya göre aşağıda verilmiştir. Program Başlığı; Tanımlama

Detaylı

1 PROGRAMLAMAYA GİRİŞ

1 PROGRAMLAMAYA GİRİŞ İÇİNDEKİLER IX İÇİNDEKİLER 1 PROGRAMLAMAYA GİRİŞ 1 Problem Çözme 1 Algoritma 1 Algoritmada Olması Gereken Özellikler 2 Programlama Dilleri 6 Programlama Dillerinin Tarihçesi 6 Fortran (Formula Translator)

Detaylı

PostgreSQL ve PL/pgSQL

PostgreSQL ve PL/pgSQL PostgreSQL ve PL/pgSQL Adnan DURSUN Uygulama tasarım ve geliştiricisi @ : adnandursun.at.asrinbilisim.com.tr : +AdnanDURSUN Sunum Akışı PL/pgSQL nedir PL/pgSQL neden kullanmalıyız PL/pgSQL in yapısı Saklı

Detaylı

ORACLE DA KÜRSÖRLER. Gerekli sistem değişkenleri

ORACLE DA KÜRSÖRLER. Gerekli sistem değişkenleri ORACLE DA KÜRSÖRLER Gerekli sistem değişkenleri SQL%ISOPEN : kürsör açıksa değeri true, kapalı ise değeri false SQL%ROWCOUNT : sql ile işlem gören kayıt sayısı bulunur. SQL%FOUND : sql işlemi sonucu, en

Detaylı

Bölüm 11. Soyut veri tipleri ve kapsülleme kavramları ISBN 0-321-49362-1

Bölüm 11. Soyut veri tipleri ve kapsülleme kavramları ISBN 0-321-49362-1 Bölüm 11 Soyut veri tipleri ve kapsülleme kavramları ISBN 0-321-49362-1 11. Bölüm konuları Soyutlama kavramı Veri soyutlamasına giriş Soyut veri tipleri için tasarım konuları Dil örnekleri Parametreli

Detaylı

Bölüm 10. Altprogramların gerçeklenmesi ISBN 0-0-321-49362-1

Bölüm 10. Altprogramların gerçeklenmesi ISBN 0-0-321-49362-1 Bölüm 10 Altprogramların gerçeklenmesi ISBN 0-0-321-49362-1 10. Bölüm konuları Çağırma / geri dönme semantiği Yığıt-dinamik yerel değişkeni olan altprogramların gerçeklenmesi İçiçe altprogramlar Statik

Detaylı

Eclipse, Nesneler ve Java 2 Java Nereden Çıktı? 2

Eclipse, Nesneler ve Java 2 Java Nereden Çıktı? 2 1 Eclipse, Nesneler ve Java 2 Java Nereden Çıktı? 2 Eclipse Mimarisi 4 Java Teknolojisine Genel Bir Bakış 6 Taşınabilirlik 6 Java Derleyicisi ve Bytecode 6 Java Sanal Makinası (Java Virtual Machine - JVM)

Detaylı

Programın Akışının Denetimi. Bir arada yürütülmesi istenen deyimleri içeren bir yapıdır. Söz dizimi şöyledir:

Programın Akışının Denetimi. Bir arada yürütülmesi istenen deyimleri içeren bir yapıdır. Söz dizimi şöyledir: Programın Akışının Denetimi Bir program komutların yazıldığı sırada akar. Ama çoğunlukla, bu akışı yönlendirmek gerekir. Bu iş için denetim yapılarını kullanırız. Bunlar iki gruba ayrılabilir: Yönlendiriciler

Detaylı

Algoritmalar ve Programlama. Algoritma

Algoritmalar ve Programlama. Algoritma Algoritmalar ve Programlama Algoritma Algoritma Bir sorunu / problemi çözmek veya belirli bir amaca ulaşmak için gerekli olan sıralı mantıksal adımların tümüne algoritma denir. Algoritma bir sorunun çözümü

Detaylı

1 JAVASCRIPT NEDİR? 1

1 JAVASCRIPT NEDİR? 1 İÇİNDEKİLER IX İÇİNDEKİLER 1 JAVASCRIPT NEDİR? 1 2 TEST ORTAMINI TANIMAK (FİREFOX VE FİREBUG) 5 Firefox 6 Firebug 8 CSS Sekmesi 10 DOM Sekmesi 11 Net ve Çerezler Sekmeleri 11 Script Sekmesi 11 Konsol Sekmesi

Detaylı

İsimler ve Kapsam. 24 Şubat 2011. Programlama Dilleri - Pamukkale Üniversitesi 1

İsimler ve Kapsam. 24 Şubat 2011. Programlama Dilleri - Pamukkale Üniversitesi 1 İsimler ve Kapsam Tanım: Bir değişkenin kapsamı (scope) değişkenin görülebilir olduğu komutların alanıdır. Görülebilir olduğu alan, bir komut içinde belirlenen değerle kullanılabildiği alandır. Tanım:

Detaylı

5. HAFTA KBT204 İNTERNET PROGRAMCILIĞI II. Öğr.Gör. Hakan YILMAZ. hakanyilmaz@karabuk.edu.tr

5. HAFTA KBT204 İNTERNET PROGRAMCILIĞI II. Öğr.Gör. Hakan YILMAZ. hakanyilmaz@karabuk.edu.tr 5. HAFTA KBT204 İNTERNET PROGRAMCILIĞI II Öğr.Gör. Hakan YILMAZ hakanyilmaz@karabuk.edu.tr Karabük Üniversitesi Uzaktan Eğitim Uygulama ve Araştırma Merkezi 2 İçindekiler STRING FONKSİYONU... 3 SPLIT FONKSİYONU...

Detaylı

PROGRAMLAMAYA GİRİŞ. Öğr. Gör. Ayhan KOÇ. Kaynak: Algoritma Geliştirme ve Programlamaya Giriş, Dr. Fahri VATANSEVER, Seçkin Yay.

PROGRAMLAMAYA GİRİŞ. Öğr. Gör. Ayhan KOÇ. Kaynak: Algoritma Geliştirme ve Programlamaya Giriş, Dr. Fahri VATANSEVER, Seçkin Yay. PROGRAMLAMAYA GİRİŞ Öğr. Gör. Ayhan KOÇ Kaynak: Algoritma Geliştirme ve Programlamaya Giriş, Dr. Fahri VATANSEVER, Seçkin Yay., 2007 Algoritma ve Programlamaya Giriş, Ebubekir YAŞAR, Murathan Yay., 2011

Detaylı

5.HAFTA. Sınıf ve Nesne Kavramı, Metot Oluşturma, Kurucu Metot, this Deyimi

5.HAFTA. Sınıf ve Nesne Kavramı, Metot Oluşturma, Kurucu Metot, this Deyimi 5.HAFTA Sınıf ve Nesne Kavramı, Metot Oluşturma, Kurucu Metot, this Deyimi Sınıf Kavramı: Sınıf (class) soyut bir veri tipidir. Nesne (object) onun somutlaşan bir cismidir. Java da sınıf (class) kavramını

Detaylı

İlk Konsol Uygulamamız 2 İlk Windows Uygulamamız 9.Net Framework Yapısı 18 Neler Öğrendik 19. Veri Tipleri 24 Tanımlı Veri Tipleri 27 Basit Tipler 28

İlk Konsol Uygulamamız 2 İlk Windows Uygulamamız 9.Net Framework Yapısı 18 Neler Öğrendik 19. Veri Tipleri 24 Tanımlı Veri Tipleri 27 Basit Tipler 28 ix 1 İlk Konsol Uygulamamız 2 İlk Windows Uygulamamız 9.Net Framework Yapısı 18 Neler Öğrendik 19 23 Veri Tipleri 24 Tanımlı Veri Tipleri 27 Basit Tipler 28 Kayan Nokta Tipleri 30 Sayısal Veri Tipi Dönüşümleri

Detaylı

Yazılım Nedir? 2. Yazılımın Tarihçesi 3. Yazılım Grupları 4 Sistem Yazılımları 4 Kullanıcı Yazılımları 5. Yazılımın Önemi 6

Yazılım Nedir? 2. Yazılımın Tarihçesi 3. Yazılım Grupları 4 Sistem Yazılımları 4 Kullanıcı Yazılımları 5. Yazılımın Önemi 6 ix Yazılım Nedir? 2 Yazılımın Tarihçesi 3 Yazılım Grupları 4 Sistem Yazılımları 4 Kullanıcı Yazılımları 5 Yazılımın Önemi 6 Yazılımcı (Programcı) Kimdir? 8 Yazılımcı Olmak 9 Adım Adım Yazılımcılık 9 Uzman

Detaylı

İNTERNET PROGRAMCILIĞI DERSİ ÇALIŞMA SORULARI

İNTERNET PROGRAMCILIĞI DERSİ ÇALIŞMA SORULARI İNTERNET PROGRAMCILIĞI DERSİ ÇALIŞMA SORULARI 1) Aşağıdaki seçeneklerin hangisinde PHP kod yazımı doğru olarak verilmiştir? A) B) C).. D) 2) PHP ile hazırlanmış

Detaylı

YZM211 YAZILIM TASARIMI

YZM211 YAZILIM TASARIMI BÖLÜM 4 MÜHENDİSLİK TASARIMI ÇÖZÜMLEMESİ YZM211 YAZILIM TASARIMI Yrd. Doç. Dr. Volkan TUNALI Mühendislik ve Doğa Bilimleri Fakültesi / Maltepe Üniversitesi Amaçlar 2 Mimari tasarım ve ayrıntılı tasarım

Detaylı

1. Aşağıdaki program parçacığını çalıştırdığınızda result ve param değişkenlerinin aldığı en son değerleri ve programın çıktısını yazınız.

1. Aşağıdaki program parçacığını çalıştırdığınızda result ve param değişkenlerinin aldığı en son değerleri ve programın çıktısını yazınız. 1. Aşağıdaki program parçacığını çalıştırdığınızda result ve param değişkenlerinin aldığı en son değerleri ve programın çıktısını yazınız. [10 puan] int param = 30; int result = 300; if (param > 45) result

Detaylı

Bölüm1. İlk Bilgiler ISBN 0-321-49362-1

Bölüm1. İlk Bilgiler ISBN 0-321-49362-1 Bölüm1 İlk Bilgiler ISBN 0-321-49362-1 Bölüm 1 Konuları Niye Programlama Dilleri prensiplerini öğreniyoruz? Programlama alanları Dil değerlendirme kriterleri Dit tasarımına etkiler Dil kategorileri Dil

Detaylı

BİL-141 Bilgisayar Programlama I (Java)

BİL-141 Bilgisayar Programlama I (Java) 1 BİL-141 Bilgisayar Programlama I (Java) Hazırlayan: M.Ali Akcayol Gazi Üniversitesi Bilgisayar Mühendisliği Bölümü Not: Bu dersin sunumları, Java Bilgisayar Programlamaya Giriş, A. Yazıcı, E. Doğdu,

Detaylı

Java da Soyutlama ( Abstraction ) ve Çok-biçimlilik ( Polymorphism )

Java da Soyutlama ( Abstraction ) ve Çok-biçimlilik ( Polymorphism ) Java da Soyutlama ( Abstraction ) ve Çok-biçimlilik ( Polymorphism ) BBS-515 Nesneye Yönelik Programlama Ders #9 (16 Aralık 2009) Geçen ders: Java Applet lerde bileşen yerleştirme türleri ( applet layouts

Detaylı

Bölüm 1. Ön Hazırlıklar ISBN 0-321-49362-1

Bölüm 1. Ön Hazırlıklar ISBN 0-321-49362-1 Bölüm 1 Ön Hazırlıklar ISBN 0-321-49362-1 Bölüm 1 Konular Programlama Dilleri Kavramlarının Çalışılma Nedenleri Programlama Alanları Dil Değelendirme Kriterleri Dil Tasarımındaki Etkileri Dil Kategorileri

Detaylı

Bilgisayarda Programlama. Temel Kavramlar

Bilgisayarda Programlama. Temel Kavramlar Bilgisayarda Programlama Temel Kavramlar KAVRAMLAR Programlama, yaşadığımız gerçek dünyadaki problemlere ilişkin çözümlerin bilgisayarın anlayabileceği bir biçime dönüştürülmesi / ifade edilmesidir. Bunu

Detaylı

Gereksiz Kodlar. burada if deyiminin else bölümüne gerek var mı? İfade doğruysa zaten fonksiyon geri dönüyor. Bu aşağıdakiyle tamamen eşdeğerdir:

Gereksiz Kodlar. burada if deyiminin else bölümüne gerek var mı? İfade doğruysa zaten fonksiyon geri dönüyor. Bu aşağıdakiyle tamamen eşdeğerdir: Gereksiz Kodlar Kaan Aslan 9 Temuz 1997 Kapalı spor salonu, durak yeri, taşıt aracı, en optimum, geri iade etmek, davranış biçimi Bu ifadelerde bir gariplik var, değil mi? Açık spor salonu göreniniz var

Detaylı

Program AkıĢ Kontrol Yapıları

Program AkıĢ Kontrol Yapıları C PROGRAMLAMA Program AkıĢ Kontrol Yapıları Normal Ģartlarda C dilinde bir programın çalıģması, komutların yukarıdan aģağıya doğru ve sırasıyla iģletilmesiyle gerçekleģtirilir. Ancak bazen problemin çözümü,

Detaylı

Sunum İçeriği. Programlamaya Giriş 22.03.2011

Sunum İçeriği. Programlamaya Giriş 22.03.2011 Programlamaya Giriş Nesne Tabanlı Programlamaya Giriş ve FONKSİYONLAR Sunum İçeriği Nesne Tabanlı Programlama Kavramı Fonksiyon tanımlama ve kullanma Formal Parametre nedir? Gerçel Parametre nedir? Fonksiyon

Detaylı

Nesneye Dayalı Programlama Laboratuvarı

Nesneye Dayalı Programlama Laboratuvarı 2013 2014 Nesneye Dayalı Programlama Laboratuvarı Ders Sorumlusu: Yrd. Doç. Dr. Salih GÖRGÜNOĞLU Laboratuvar Sorumluları: M. Zahid YILDIRIM İÇİNDEKİLER Deney 1: Visual Studio ve C++'a Giriş Uygulamaları...

Detaylı

Fonksiyonlar (Altprogram)

Fonksiyonlar (Altprogram) Fonksiyonlar (Altprogram) C Programlama Dili fonksiyon olarak adlandırılan alt programların birleştirilmesi kavramına dayanır. Bir C programı bir ya da daha çok fonksiyonun bir araya gelmesi ile oluşur.

Detaylı

Algoritma ve Programlama: Karar Yapıları ve Döngüler

Algoritma ve Programlama: Karar Yapıları ve Döngüler Algoritma ve Programlama: Karar Yapıları ve Döngüler Bir algoritma, herhangi bir programlama dili (C, C++, Pascal, Visual Basic, Java gibi) ile kodlandığında program haline gelir. Algoritmada yer alan

Detaylı

Doğu Akdeniz Üniversitesi Bilgisayar Mühendisliği Bölümü. BLGM 318 Ara Sınavı 2012 2013 Đlkbahar Dönemi 13 Nisan 2013. Ad, Soyad Öğrenci No.

Doğu Akdeniz Üniversitesi Bilgisayar Mühendisliği Bölümü. BLGM 318 Ara Sınavı 2012 2013 Đlkbahar Dönemi 13 Nisan 2013. Ad, Soyad Öğrenci No. Doğu Akdeniz Üniversitesi Bilgisayar Mühendisliği Bölümü BLGM 318 Ara Sınavı 2012 2013 Đlkbahar Dönemi 13 Nisan 2013 Ad, Soyad Öğrenci No. : : Öğretim Üyesi: Doç. Dr. Zeki BAYRAM Süre: 100 dakika Talimatlar:

Detaylı

İÇİNDEKİLER İÇİNDEKİLER KODLAB

İÇİNDEKİLER İÇİNDEKİLER KODLAB İÇİNDEKİLER IX İÇİNDEKİLER 1 GİRİŞ 1 Kitabın Amacı 1 Algoritmanın Önemi 2 Bilgisayarın Doğuşu ve Kullanım Amaçları 3 Programlama Dili Nedir? 3 Entegre Geliştirme Ortamı (IDE) Nedir? 4 2 ALGORİTMA VE AKIŞ

Detaylı

İçerik. Temel Kavramlar. Nesne Nedir? 1. Nesne : Örnek. Nesne Nedir? 2. Geçen hafta: Bu hafta: BBS-515 Nesneye Yönelik Programlama

İçerik. Temel Kavramlar. Nesne Nedir? 1. Nesne : Örnek. Nesne Nedir? 2. Geçen hafta: Bu hafta: BBS-515 Nesneye Yönelik Programlama İçerik Temel Kavramlar BBS-515 Nesneye Yönelik Programlama Geçen hafta: Nesneye yönelik programlama Ne demektir, nasıl ortaya çıkmıştır? Nesneye yönelik dil olarak JAVA ve ilişkili kavramlar Bu hafta:

Detaylı

JAVASCRIPT JAVASCRIPT DİLİ

JAVASCRIPT JAVASCRIPT DİLİ JAVASCRIPT JAVASCRIPT DİLİ Netscape Navigator 2.0 ile birlikte geliştirilen JavaScript dili istemci taraflı (client-side) script dilidir. Web sayfalarında dinamik içerik sağlamak ya da kullanıcıyla iletişim

Detaylı

Temel Kavramlar BBS-515 Nesneye Yönelik Programlama

Temel Kavramlar BBS-515 Nesneye Yönelik Programlama Temel Kavramlar BBS-515 Nesneye Yönelik Programlama Ders #2 (2 Kasım 2009) İçerikç Geçen hafta: Nesneye yönelik programlama Ne demektir, nasıl ortaya çıkmıştır? Nesneye yönelik dil olarak JAVA ve ilişkili

Detaylı

10/17/2007 Nesneye Yonelik Programlama 3.1

10/17/2007 Nesneye Yonelik Programlama 3.1 Procedure-Based Programming in C++ Çoğu gerçek dünya problemleri binlerce kod satırı gerektirir ( MS Windows NT 5.0 25 million dan fazla kod satırından oluşmaktadır). Yazılımın tasarımı, kodlanması ve

Detaylı

SPSS (Statistical Package for Social Sciences)

SPSS (Statistical Package for Social Sciences) SPSS (Statistical Package for Social Sciences) SPSS Data Editor: Microsoft Excel formatına benzer satır ve sütunlardan oluşan çalışma sayfası (*sav) Data Editör iki arayüzden oluşur. 1. Data View 2. Variable

Detaylı

Yeni bir proje açarken File New - Web Site diyoruz. Gelen ekranda Visual Basic veya C# seçilebilir. Biz ders kapsamında C# programlama dilini seçtik.

Yeni bir proje açarken File New - Web Site diyoruz. Gelen ekranda Visual Basic veya C# seçilebilir. Biz ders kapsamında C# programlama dilini seçtik. ASP.NET DERS 1 Yeni bir proje açarken File New - Web Site diyoruz. Gelen ekranda Visual Basic veya C# seçilebilir. Biz ders kapsamında C# programlama dilini seçtik. Gelen ekranda Visual C# seçildikten

Detaylı

BĠLGĠSAYAR PROGRAMLAMA II C++ Programlamaya GiriĢ http://www.cplusplus.com/doc/tutorial/ Published by Juan Soulié

BĠLGĠSAYAR PROGRAMLAMA II C++ Programlamaya GiriĢ http://www.cplusplus.com/doc/tutorial/ Published by Juan Soulié BĠLGĠSAYAR PROGRAMLAMA II C++ Programlamaya GiriĢ http://www.cplusplus.com/doc/tutorial/ Published by Juan Soulié DERSİN WEB SİTESİ: http://nucleus.istanbul.edu.tr/~bilprog2/ DeğiĢkenler ve Data Türleri

Detaylı

Öğr. Gör. Serkan AKSU http://www.serkanaksu.net. http://www.serkanaksu.net/ 1

Öğr. Gör. Serkan AKSU http://www.serkanaksu.net. http://www.serkanaksu.net/ 1 Öğr. Gör. Serkan AKSU http://www.serkanaksu.net http://www.serkanaksu.net/ 1 JavaScript JavaScript Nedir? Nestcape firması tarafından C dilinden esinlenerek yazılmış, Netscape Navigator 2.0 ile birlikte

Detaylı

BİL-142 Bilgisayar Programlama II

BİL-142 Bilgisayar Programlama II BİL-142 Bilgisayar Programlama II (C/C++) Hazırlayan: M.Ali Akcayol Gazi Üniversitesi Bilgisayar Mühendisliği Bölümü Konular Giriş Kontrol Yapıları if Seçme Deyimi if... else Seçme Deyimi while Tekrar

Detaylı

Bil101 Bilgisayar Yazılımı I. M. Erdem ÇORAPÇIOĞLU Bilgisayar Yüksek Mühendisi

Bil101 Bilgisayar Yazılımı I. M. Erdem ÇORAPÇIOĞLU Bilgisayar Yüksek Mühendisi Bil101 Bilgisayar Yazılımı I Bilgisayar Yüksek Mühendisi Editör Disk 1)Kaynak kodlar editör aracılığı ile oluşturulur. (.c) Kaynak dosya Önişleyici Disk 2)Önişleyici kodlar içerisindeki ilk işleme işini

Detaylı

NESNE TABANLI PROGRAMLAMA

NESNE TABANLI PROGRAMLAMA NESNE TABANLI PROGRAMLAMA Temel Kavramlar Vize Hazırlık Ders Notları 1 NESNE TABANLI PROGRAMLAMA 1. NESNE TABANLI PROGRAMLAMA (OBJECT ORIENTED PROGRAMMING) NEDİR? Nesne tabanlı programlama, daha öncelerde

Detaylı

«BM364» Veritabanı Uygulamaları

«BM364» Veritabanı Uygulamaları HAFTA 6 T-SQL ile Programlar Yazmak" Yaşar GÖZÜDELİ ygozudeli@verivizyon.com http://blog.verivizyon.com/ygozudeli «BM364» Veritabanı Uygulamaları Konu Akışı Programlama dili olarak T-SQL Fonksiyonlar Programlamak

Detaylı

Bölüm 9. Altprogramlar ISBN 0-321-49362-1

Bölüm 9. Altprogramlar ISBN 0-321-49362-1 Bölüm 9 Altprogramlar ISBN 0-321-49362-1 9. Bölüm konuları Giriş Altprogram temelleri Yerel atıf ortamları (local referencing environments) Parametre geçme yöntemleri Altprogram olan parametreler Çok anlamlı

Detaylı

ENF102 TEMEL BİLGİSAYAR BİLİMLERİ VE C/ C++ PROGRAMLAMA DİLİ. Gazi Üniversitesi Mühendislik Fakültesi Bilgisayar Mühendisliği Bölümü

ENF102 TEMEL BİLGİSAYAR BİLİMLERİ VE C/ C++ PROGRAMLAMA DİLİ. Gazi Üniversitesi Mühendislik Fakültesi Bilgisayar Mühendisliği Bölümü ENF102 TEMEL BİLGİSAYAR BİLİMLERİ VE C/ C++ PROGRAMLAMA DİLİ Gazi Üniversitesi Mühendislik Fakültesi Bilgisayar Mühendisliği Bölümü Konular Giriş math Kütüphane Fonksiyonları Çok Parametreyle Fonksiyon

Detaylı

enum bolumler{elektronik, insaat, bilgisayar, makine, gida};

enum bolumler{elektronik, insaat, bilgisayar, makine, gida}; BÖLÜM 12: Giriş C programlama dilinde programcı kendi veri tipini tanımlayabilir. enum Deyimi (Enumeration Constants) Bu tip, değişkenin alabileceği değerlerin belli (sabit) olduğu durumlarda programı

Detaylı

5. PROGRAMLA DİLLERİ. 5.1 Giriş

5. PROGRAMLA DİLLERİ. 5.1 Giriş 5. PROGRAMLA DİLLERİ 8.1 Giriş 8.2 Yazılım Geliştirme Süreci 8.3 Yazılım Geliştirme Sürecinde Programlama Dilinin Önemi 8.4 Programlama Dillerinin Tarihçesi 8.5 Programlama Dillerinin Sınıflandırılması

Detaylı

=~ Metodu 92 Karakter Sınıfları 94 sub ve gsub metotları 101 Hızlı Tekrar 102 Kontrol Noktası 103 Düello 106 Sonraki Bölümde 109

=~ Metodu 92 Karakter Sınıfları 94 sub ve gsub metotları 101 Hızlı Tekrar 102 Kontrol Noktası 103 Düello 106 Sonraki Bölümde 109 vii 1 Neden Ruby? 2 Ruby Kurulumu 5 Windows ta Ruby Kurulumu 5 Linux ve Mac OS ta Ruby Kurulumu 6 Doğru Geliştirme Ortamının Seçimi 6 Diğer Ruby Uyarlamaları 9 Örnek Kodlar Hakkında 10 İnternet Adresi

Detaylı

NESNEYE YÖNELİK PROGRAMLAMA Temel Kavramlar

NESNEYE YÖNELİK PROGRAMLAMA Temel Kavramlar NESNEYE YÖNELİK PROGRAMLAMA Temel Kavramlar Özlem AYDIN Trakya Üniversitesi Bilgisayar Mühendisliği Bölümü Not: Bu sunumda Prof. Dr. Yılmaz KILIÇASLAN ın Nesneye Yönelik Programlama dersi sunumlarından

Detaylı

Döngü (Loop) Deyimleri / Veri Belirleyicileri / Matematiksel Fonksiyonlar

Döngü (Loop) Deyimleri / Veri Belirleyicileri / Matematiksel Fonksiyonlar Bölüm 5 Döngü (Loop) Deyimleri / Veri Belirleyicileri / Matematiksel Fonksiyonlar İçindekiler 5.1 Formatlı Yazdırma............................ 34 5.2 Döngü Deyimleri............................. 34 5.2.1

Detaylı

Göstericiler (Pointers)

Göstericiler (Pointers) C PROGRAMLAMA Göstericiler (Pointers) C programlama dilinin en güçlü özelliklerinden biridir. Göstericiler, işaretçiler yada pointer adı da verilmektedir. Gösterici (pointer); içerisinde bellek adresi

Detaylı

Genel Kullanılış 1: [değişken ismi] = [değişken ismi] [işlem] [sayı veya string ifade veya değişken]

Genel Kullanılış 1: [değişken ismi] = [değişken ismi] [işlem] [sayı veya string ifade veya değişken] Sayaçlar Düzenli olarak artan (+) veya azalan (-) sayı veya string ifadeler elde etmek için kullanılırlar. Eşitliğin her iki tarafındaki değişken isminin aynı olmasına dikkat edin. Bu durum matematik olarak

Detaylı

SQL PROGRAMLAMA. Bir batch, bir arada bulunan bir dizi SQL deyimidir. Batch ayıracı GO deyimidir.

SQL PROGRAMLAMA. Bir batch, bir arada bulunan bir dizi SQL deyimidir. Batch ayıracı GO deyimidir. SQL PROGRAMLAMA BATCH Bir batch, bir arada bulunan bir dizi SQL deyimidir. Batch ayıracı deyimidir. SELECT. UPDATE...... DELETE.. BATCH BATCH Özellikleri 1- Bir batch içinde bir deyimde yazım hatası olduğunda

Detaylı

Ders 8 Konu Özeti ve Problemler

Ders 8 Konu Özeti ve Problemler Ders 8 Konu Özeti ve Problemler C# ve Nesne Yönelimli Programlamanın 3 Prensibi Kapsülleme (Encapsulation) Nesne yönelimli programlamanın ilk prensibi kapsülleme (encapsulation) olarak adlandırılır. Bu

Detaylı

TEMPLATES. Binnur Kurt kurt@cs.itu.edu.tr. Bilgisayar Mühendisliği Bölümü İstanbul Teknik Üniversitesi. C++ ile Nesneye Dayalı Programlama 1

TEMPLATES. Binnur Kurt kurt@cs.itu.edu.tr. Bilgisayar Mühendisliği Bölümü İstanbul Teknik Üniversitesi. C++ ile Nesneye Dayalı Programlama 1 PARAMETRİKÇOKŞEKİLLİLİK: TEMPLATES Binnur Kurt kurt@cs.itu.edu.tr Bilgisayar Mühendisliği Bölümü İstanbul Teknik Üniversitesi C++ ile Nesneye Dayalı Programlama 1 Sınıf Yapısı Kalıtım Çok Şekillilik Templates

Detaylı

Bölüm 12. Nesne yönelimli programlama desteği

Bölüm 12. Nesne yönelimli programlama desteği Bölüm 12 Nesne yönelimli programlama desteği 12. Bölüm konuları Giriş Nesne yönelimli programlama Nesne yönelimli diller için tasarım konuları C++ dilinde nesne yönelimli programlama desteği Nesne yönelimli

Detaylı

Algoritma ve Akış Diyagramları

Algoritma ve Akış Diyagramları Algoritma ve Akış Diyagramları Bir problemin çözümüne ulaşabilmek için izlenecek ardışık mantık ve işlem dizisine ALGORİTMA, algoritmanın çizimsel gösterimine ise AKIŞ DİYAGRAMI adı verilir 1 Akış diyagramları

Detaylı

Java dili, aşağıdakiler de dahil olmak üzere çok çeşitli denetleyici türlerine sahiptir.

Java dili, aşağıdakiler de dahil olmak üzere çok çeşitli denetleyici türlerine sahiptir. PART 5 5. Denetleyici Türleri Java dili, aşağıdakiler de dahil olmak üzere çok çeşitli denetleyici türlerine sahiptir. Java Erişim Kontrol Denetleyicileri (Access Control Modifiers) Erişim Harici Denetleyiciler

Detaylı

Maltepe Üniversitesi Bilgisayar Mühendisliği Bölümü BİL 203 Veri Yapıları ve Algoritmalar I

Maltepe Üniversitesi Bilgisayar Mühendisliği Bölümü BİL 203 Veri Yapıları ve Algoritmalar I Maltepe Üniversitesi Bilgisayar Mühendisliği Bölümü BİL 203 Veri Yapıları ve Algoritmalar I GENEL DERS BİLGİLERİ Öğretim Elemanı : İzzet TAMER Ofis : MUH 311 Ofis Saatleri : Pazartesi: 14:10 15:00, Salı:

Detaylı

SE311 YAZILIM YAPIMI BÖLÜM 3 YAPIM TASARIMI. Yrd. Doç. Dr. Volkan TUNALI Mühendislik ve Doğa Bilimleri Fakültesi / Maltepe Üniversitesi

SE311 YAZILIM YAPIMI BÖLÜM 3 YAPIM TASARIMI. Yrd. Doç. Dr. Volkan TUNALI Mühendislik ve Doğa Bilimleri Fakültesi / Maltepe Üniversitesi SE311 YAZILIM YAPIMI BÖLÜM 3 YAPIM TASARIMI Yrd. Doç. Dr. Volkan TUNALI Mühendislik ve Doğa Bilimleri Fakültesi / Maltepe Üniversitesi Giriş 2 Yazılım Tasarımı Tasarımın Zorlukları Temel Tasarım Kavramları

Detaylı

BLG4134 Görsel Programlama III. Öğr. Grv. Aybike ŞİMŞEK

BLG4134 Görsel Programlama III. Öğr. Grv. Aybike ŞİMŞEK BLG4134 Görsel Programlama III Öğr. Grv. Aybike ŞİMŞEK CV_EKLE isimli bir veritabanı oluşturun. CV isimli tabloyu aşağıdaki şekilde oluşturun. Aşağıdaki kod ile bir stored procedure oluşturun. Bunun için

Detaylı

2007-2008 Bahar. BM 211 Programlama Dilleri 3 1

2007-2008 Bahar. BM 211 Programlama Dilleri 3 1 Programlama Dilleri III 2007-2008 Bahar BM 211 Programlama Dilleri 3 1 Ders Hakkında Ders Sorumlusu Öğr.Gör. Bora UĞURLU Ders Slaytları İçin http://members.comu.edu.tr/boraugurlu/ Dersle İlgili İletişim

Detaylı

Öğr. Gör. Cansu AYVAZ GÜVEN VERİTABANI-II. Değişken Tanımlama Ve Akış Kontrol Deyimleri

Öğr. Gör. Cansu AYVAZ GÜVEN VERİTABANI-II. Değişken Tanımlama Ve Akış Kontrol Deyimleri Öğr. Gör. Cansu AYVAZ GÜVEN VERİTABANI-II Değişken Tanımlama Ve Akış Kontrol Deyimleri Değişken Tanımlama Değişken isimlerinin başında @ sembolü bulunur. @ad, @soyad, @tarih değişken isimlerine birer örnektir.

Detaylı

C Programlama Dilininin Basit Yapıları

C Programlama Dilininin Basit Yapıları Bölüm 2 C Programlama Dilininin Basit Yapıları İçindekiler 2.1 Sabitler ve Değişkenler......................... 13 2.2 Açıklamalar (Expresions)........................ 14 2.3 İfadeler (Statements) ve İfade

Detaylı

Ders 8: Metotlar. barisgokce.com

Ders 8: Metotlar. barisgokce.com Ders 8: Metotlar Hazırlayan : Öğr. Grv.. Barış GÖKÇE Đletişim im : www.barisgokce barisgokce.com Metotlar C# içerisinde bir veya birden fazla kod bulunduran kod bloklarıdır. Bir nesnenin veya sınıfın programı

Detaylı

EBG101 PROGRAMLAMA TEMELLERİ VE ALGORİTMA

EBG101 PROGRAMLAMA TEMELLERİ VE ALGORİTMA 6. HAFTA EBG101 PROGRAMLAMA TEMELLERİ VE ALGORİTMA Öğr. Gör. S. M. Fatih APAYDIN apaydin@beun.edu.tr EMYO Bülent Ecevit Üniversitesi Kdz. Ereğli Meslek Yüksekokulu ALGORİTMA ÖRNEK1: İki sayının toplamı

Detaylı

Kullanıcı tanımlı fonksiyonlar SQL2000 ile gelen özelliklerden biridir. Fonksiyonlar tek bir değer veya tablo döndürmek için kullanılır.

Kullanıcı tanımlı fonksiyonlar SQL2000 ile gelen özelliklerden biridir. Fonksiyonlar tek bir değer veya tablo döndürmek için kullanılır. KULLANICI TANIMLI FONKSİYONLAR Kullanıcı tanımlı fonksiyonlar SQL2000 ile gelen özelliklerden biridir. Fonksiyonlar tek bir değer veya tablo döndürmek için kullanılır. Fonksiyonları veritabanı programlamada

Detaylı

Her veri tipine yetecek ve ancak o kadar anabellek alanı ayrılır. Programcı, ana bellekte ayrılacak adresin büyüklüğünü bilerek değişkenlerini

Her veri tipine yetecek ve ancak o kadar anabellek alanı ayrılır. Programcı, ana bellekte ayrılacak adresin büyüklüğünü bilerek değişkenlerini 1 Veri Tipleri Bazı diller veri tiplerini önceden ayırır, bazıları ayırmaz. Teknik olarak, veri tipini önceden belirleyen diller, anabelleğe yerleşecek verileri, orada kapsayacakları alanlara göre gruplara

Detaylı

Lab7 DOĞU AKDENİZ ÜNİVERSİTESİ BİLGİSAYAR VE TEKNOLOJİ YÜKSEKOKULU BİLGİSAYAR PROGRAMCILIĞI. BTEP212 Java. Uygulama1: package javaapplication58;

Lab7 DOĞU AKDENİZ ÜNİVERSİTESİ BİLGİSAYAR VE TEKNOLOJİ YÜKSEKOKULU BİLGİSAYAR PROGRAMCILIĞI. BTEP212 Java. Uygulama1: package javaapplication58; BTEP212 Java DOĞU AKDENİZ ÜNİVERSİTESİ BİLGİSAYAR VE TEKNOLOJİ YÜKSEKOKULU BİLGİSAYAR PROGRAMCILIĞI Lab7 bazen bir metodun içinde o metodun ait olduğu sınıftan yaratılacak nesneyi veya o nesnenin bir alt

Detaylı

ELN1001 BİLGİSAYAR PROGRAMLAMA I

ELN1001 BİLGİSAYAR PROGRAMLAMA I ELN1001 BİLGİSAYAR PROGRAMLAMA I DEPOLAMA SINIFLARI DEĞİŞKEN MENZİLLERİ YİNELEMELİ FONKSİYONLAR Depolama Sınıfları Tanıtıcılar için şu ana kadar görülmüş olan özellikler: Ad Tip Boyut Değer Bunlara ilave

Detaylı

Sorgudan elde edilen değerin değişkenlere aktarılmasını sağlar. Sorgudan tek satır dönmesi gerekir. Çok satır dönerse hata verir.

Sorgudan elde edilen değerin değişkenlere aktarılmasını sağlar. Sorgudan tek satır dönmesi gerekir. Çok satır dönerse hata verir. Oracle (Devam) SELECT INTO Deyimi Sorgudan elde edilen değerin değişkenlere aktarılmasını sağlar. Sorgudan tek satır dönmesi gerekir. Çok satır dönerse hata verir. Genel ifade: SELECT kolonisimler INTO

Detaylı

abstract Sınıflar 1 Sınıf sınıf1 new class Ama aşağıdaki şekilde referans alınabilir;

abstract Sınıflar 1 Sınıf sınıf1 new class Ama aşağıdaki şekilde referans alınabilir; abstract Sınıflar 1 Özet sınıflar ya da özet metotlar abstract anahtar sözcüğü kullanılarak tanımlanırlar. Bir temel sınıf içinde bildirilen abstract metotların içeriği boştur. Kendisinden yeni bir instance

Detaylı

BÖLÜM 3 OPERAT A ÖRLER - 19 -

BÖLÜM 3 OPERAT A ÖRLER - 19 - BÖLÜM 3 OPERATÖRLER - 19 - 3.1 Operatörler Hakkında Yukarıdaki örnekleri birlikte yaptıysak = işaretini bol bol kullandık ve böylece PHP'nin birçok operatöründen biriyle tanıştık. Buna PHP dilinde "atama

Detaylı

TESİ. indeks. söylenebilir?? bir ilişkidir d) Hiçbiri. veya somutlaştırılmış. düzeyidir? sağlayabilir? sına. d) Hepsi. olabilir? c) Verilerin d) Hepsi

TESİ. indeks. söylenebilir?? bir ilişkidir d) Hiçbiri. veya somutlaştırılmış. düzeyidir? sağlayabilir? sına. d) Hepsi. olabilir? c) Verilerin d) Hepsi 1. 2. 3. 4. 5. 6. Görünüm (view) için özellikle aşağıdakilerden hangisi söylenebilir?? a) Veritabanındaki kayıtlı verileri düzenlemek, yönetmek ve elde etmek için kullanılan bir dildir b) Bir ilişkinin

Detaylı

Java Dersi. Altuğ Bilgin Altıntaş

Java Dersi. Altuğ Bilgin Altıntaş Java Dersi Altuğ Bilgin Altıntaş Bu Dönem Hakkında Corba Servlet RMI Temel Kısım EJB JSP XML 2 JDBC JNI Çalışma Evreleri 6 Çalışma Evreleri 7 Java dosyasının hali 7 İlk Java uygulaması 7 Ciddi bir uygulama

Detaylı

MAT213 BİLGİSAYAR PROGRAMLAMA I DERSİ Ders 1: Programlamaya Giriş

MAT213 BİLGİSAYAR PROGRAMLAMA I DERSİ Ders 1: Programlamaya Giriş MAT213 BİLGİSAYAR PROGRAMLAMA I DERSİ Ders 1: Programlamaya Giriş Yard. Doç. Dr. Alper Kürşat Uysal Bilgisayar Mühendisliği Bölümü akuysal@anadolu.edu.tr Ders Web Sayfası: http://ceng.anadolu.edu.tr/ders.aspx?dersid=101

Detaylı

8 Oracle da tablo yapısı içinde otomatik artan kolon yoktur. (identity kolon

8 Oracle da tablo yapısı içinde otomatik artan kolon yoktur. (identity kolon ORACLE GİRİŞ Oracle ile SQL Server ın karşılaştıralım. 1 Oracleda veritabanı yerine kullanıcı oluşturulur. Kullanıcılar veritabanı gibi davranır. 2 Tablo oluşturma, değiştirme ve silme kodları aynı. 3

Detaylı

6. HAFTA KBT204 İNTERNET PROGRAMCILIĞI II. Öğr.Gör. Hakan YILMAZ. hakanyilmaz@karabuk.edu.tr

6. HAFTA KBT204 İNTERNET PROGRAMCILIĞI II. Öğr.Gör. Hakan YILMAZ. hakanyilmaz@karabuk.edu.tr 6. HAFTA KBT204 İNTERNET PROGRAMCILIĞI II Öğr.Gör. Hakan YILMAZ hakanyilmaz@karabuk.edu.tr Karabük Üniversitesi Uzaktan Eğitim Uygulama ve Araştırma Merkezi 2 İçindekiler For Each... Next... 3 Döngüyü

Detaylı

Bölüm 5. Adlar(Names), Bağlamalar(Binding s),tip Kontrolleri (Type Checking), ve Etki Alanları ( Scopes) ISBN 0-321-49362-1

Bölüm 5. Adlar(Names), Bağlamalar(Binding s),tip Kontrolleri (Type Checking), ve Etki Alanları ( Scopes) ISBN 0-321-49362-1 Bölüm 5 Adlar(Names), Bağlamalar(Binding s),tip Kontrolleri (Type Checking), ve Etki Alanları ( Scopes) ISBN 0-321-49362-1 Bölüm 5 Konular Giriş Adlar(Names) Değişkenler(Variables) Bağlama Kavramı(The

Detaylı

Bu amaçla, if ve switch gibi karar verme deyimleri, for, while, do..while gibi döngü deyimleri kullanılır.

Bu amaçla, if ve switch gibi karar verme deyimleri, for, while, do..while gibi döngü deyimleri kullanılır. PHP de Program Denetimi Belli durumlarda örneğin değişkenlerin aldığı değerlere veya sayfaya yapılan ziyaretlere göre PHP programının nasıl davranacağına karar vermemiz gerekir. Bu yönlendirmeleri, program

Detaylı

Dr. Fatih AY Tel: 0 388 225 22 55 fatihay@fatihay.net www.fatihay.net

Dr. Fatih AY Tel: 0 388 225 22 55 fatihay@fatihay.net www.fatihay.net Bilgisayar Programlama Ders 6 Dr. Fatih AY Tel: 0 388 225 22 55 fatihay@fatihay.net www.fatihay.net Fonksiyon Prototipleri Fonksiyon Prototipleri Derleyici, fonksiyonların ilk hallerini (prototiplerini)

Detaylı

OMNET++ 4.2.2. Ağ Benzetim Yazılımı (Network Simulation Framework) BİL 372 Bilgisayar Ağları. GYTE - Bilgisayar Mühendisliği Bölümü

OMNET++ 4.2.2. Ağ Benzetim Yazılımı (Network Simulation Framework) BİL 372 Bilgisayar Ağları. GYTE - Bilgisayar Mühendisliği Bölümü Bilgisayar Mühendisliği Bölümü OMNET++ 4.2.2 Ağ Benzetim Yazılımı (Network Simulation Framework) BİL 372 Bilgisayar Ağları OMNET++ OMNET++ (Objective Modular Network Testbed in C++), nesneye yönelik (objectoriented)

Detaylı

How to ASP Language. Elbistan Meslek Yüksek Okulu 2011 2012 Bahar Yarıyılı. Öğr. Gör. Murat KEÇECĠOĞLU. 29 Eki. 1 Kas. 2013

How to ASP Language. Elbistan Meslek Yüksek Okulu 2011 2012 Bahar Yarıyılı. Öğr. Gör. Murat KEÇECĠOĞLU. 29 Eki. 1 Kas. 2013 How to ASP Language Elbistan Meslek Yüksek Okulu 2011 2012 Bahar Yarıyılı 29 Eki. 1 Kas. 2013 Öğr. Gör. Murat KEÇECĠOĞLU Fonksiyonlar, kendilerini göreve çağıran VBScript komutlarına ve işlemlerine bir

Detaylı

FONKSİYONLAR. Gerçek hayattaki problemlerin çözümü için geliştirilen programlar çok büyük boyutlardadır.

FONKSİYONLAR. Gerçek hayattaki problemlerin çözümü için geliştirilen programlar çok büyük boyutlardadır. C PROGRAMLAMA FONKSİYONLAR Gerçek hayattaki problemlerin çözümü için geliştirilen programlar çok büyük boyutlardadır. Daha büyük programlar yazmanın en kolay yolu onları küçük parçalar halinde yazıp sonra

Detaylı

İstanbul Teknik Üniversitesi IEEE Öğrenci Kolu

İstanbul Teknik Üniversitesi IEEE Öğrenci Kolu PROGRAM AKIŞ DENETİMİ Program akış denetimi konusu temel olarak 2 e ayrılır. Bunlar; 1)Koşul Deyimleri 2)Döngü Deyimleri KOŞUL DEYİMLERİ Koşul deyimleri temel olarak programı kontrol etmeye yararlar. Bunlara

Detaylı

Java C.Thomas Wu 2004b kitabından Türkçeleştirilerek ve örneklendirilerek hazırlanmıştır.

Java C.Thomas Wu 2004b kitabından Türkçeleştirilerek ve örneklendirilerek hazırlanmıştır. Ders İçeriği An introduction to Object-oriented programming with Java Third Edition Update Java C.Thomas Wu 2004b kitabından Türkçeleştirilerek ve örneklendirilerek hazırlanmıştır. Nesneye Yönelik Öğr.

Detaylı

Bigisayar Programlama

Bigisayar Programlama Bigisayar Programlama (GÜZ 2015) DERS-02: C de Programlamaya Giriş Yrd. Doç Dr. Yakup EMÜL Cumhuriyet Üniv., Teknoloji Fakültesi Yazılım Mühendisliği Bölümü yakupemul@cumhuriyet.edu.tr Ofis Saatleri :

Detaylı

Değişkenler tanımlanırken onlara ne tür veriler atanabileceği de belirtilir. Temel veri türleri oldukça azdır:

Değişkenler tanımlanırken onlara ne tür veriler atanabileceği de belirtilir. Temel veri türleri oldukça azdır: C VERİ TÜRLERİ BASİT VERİ TÜRLERİ Değişkenler, program içinde üzerinde işlem yapılan, veri saklanan ve durumlarına göre programın akışı sağlanan nesnelerdir. C de bir değişken kullanılmadan önce tanımlanmalıdır.

Detaylı

8. İŞARETCİLER (POINTERS)

8. İŞARETCİLER (POINTERS) 8. İŞARETCİLER (POINTERS) Verilerin bilgisayar hafızasında tutulduğu fiziki alan adres olarak tanımlanabilir. Adres, hem donanımla hem de yazılımla ilişkilidir. Donanımsal açıdan adres bellekte yer gösteren

Detaylı

TEKRARLAMA DEYİMLERİ BÖLÜM 9. 9.1 Giriş. 9.2 For-Do

TEKRARLAMA DEYİMLERİ BÖLÜM 9. 9.1 Giriş. 9.2 For-Do BÖLÜM 9 TEKRARLAMA DEYİMLERİ 9.1 Giriş Bu bölümde program içerisinde belirli blokların herhangi bir şarta bağlı olarak veya şarttan bağımsız bir şekilde ardışık olarak çalıştırılması için kullanılan deyimler

Detaylı

1. PL/SQL de kontrol yapıları

1. PL/SQL de kontrol yapıları 1. PL/SQL de kontrol yapıları PL/SQL de kontrol yapıları genel olarak IF, CASE LOOP, WHILE, FOR ile gerçekleştirilir. Tabi bu deyimlerinde kendi içinde alt basamakları bulunmaktadır. Şimdi sırası ile bu

Detaylı

Dr. Fatih AY Tel: 0 388 225 22 55 fatihay@fatihay.net www.fatihay.net

Dr. Fatih AY Tel: 0 388 225 22 55 fatihay@fatihay.net www.fatihay.net Bilgisayar Programlama Ders 1 Dr. Fatih AY Tel: 0 388 225 22 55 fatihay@fatihay.net www.fatihay.net Bilgisayar Programlamaya C ile Programlamaya Yazılım: Bilgisayarın işlemler yapması ve karar vermesi

Detaylı

PL/pgSQL SQL Yordamsal Dili

PL/pgSQL SQL Yordamsal Dili PL/pgSQL SQL Yordamsal Dili Devrim GÜNDÜZ devrim@gunduz.org devrim@postgresql.org Teknoloji Destek Merkezi http://www.tdmsoft.com http://seminer.linux.org.tr http://www.gunduz.org/seminer/plpgsql Bu sunu,

Detaylı

Aynı tipten çok sayıda değişken topluluğudur. X Y Score1 Score2 (0) (1) (2)...

Aynı tipten çok sayıda değişken topluluğudur. X Y Score1 Score2 (0) (1) (2)... Array (Diziler) Array Aynı tipten çok sayıda değişken topluluğudur. Birden fazla aynı tipteki değerle işlem yapmayı kolaylaştırır. X Y Score1 Score2 40 56 Grade 40 56 80 (0) (1) (2)... (13) Array tanımlama:

Detaylı