yapısal programlama (structured programming)
yazan: Şadi Evren ŞEKER
yapısal programlama 1900lü yılların ortalarında programlama taleplerinin artması ile gelişen bir programlama felsefesidir. Buna göre programların analizi, tasarımları, kodlaması ve testleri arasındaki mantık uyumunu sağlamak amacıyla bir standarda gidilmiş ve aşağıdaki yapı çıkmıştır. Yapısal programlama amaç problemi alt parçalara bölerek bu parçaların çözümlerinin birleştirilmesidir. Bu yönüyle parçala fethet (Divide and conquere) yaklaşımı olarak kabul edilebilir.
yapısal programlamanın ortaya atılmasındaki sebepler:
1. goto komudunun karmaşıklığı: goto (atla, git veya jump) satırı bir kodun analizi, okunabilirliği ve testlerini neredeyse imkansız hale sokabilecek kadar karışmasını sağlayabilir. Bunun en basit sebebi akışların kontrol edilemez halde olmasıdır. Her ne kadar tersi iddialar da bulunsa güncel dillerin pek çoğu goto komutlarını sakıncalı bulmuş olsalar gerek bu komdu dilin doğal bir özelliği değil ama ek bir özelliği gibi barındırmaktadırlar.
2. tasarımda kullanılan yöntemlerin uyarlanma zorluğu: yapısal programlama öncesinde tam olarak ortaya atılmış ve genel kullanıma sahip, formal bir analiz ve tasarım sistemi bulunmuyordu. Yapısal programlama düşünme mantığında bir yenilik getirmesi hasebiyle tasarım ve analiz aşamalarında da güncel akış çizelgeleri (flow chart) öncülük etmiştir.
Yapısal programlama sahip bir dilde kontrol işlemleri (şartlar) aşağıdaki şekilde üçe ayrılırlar:
1. Akış (sequence) bir alt programdan diğerine geçiş işlemi. (fonksiyon veya prosedür, bkz. prosedürel programlama )
2. iki alt programdan birisini bir bool mantık işlemine göre çalıştırmak. ( if , eğer )
3. bir şart sağlanana kadar bir alt programın çalıştırılması (döngüler, loop , iteration, for, while)
yukarıdaki şartları destekleyen bir dil yapısal programlama mantığına sahiptir denilebilir. Yukarıdakilerden birisinin eksik olması yapısal programalaya sahip olmaması için yeterlidir. Günümüzde gelişen ihtiyaçlar ile artık tek bir yaklaşıma sahip diller yoktur. Bunun yerine pek çok farklı yaklaşımlara sahip diller bulunmaktadır. Örneğin C, C++, JAVA gibi diller yapısal programlayı yukarıdaki şartları destekledikleri için barındırmaktadırlar. Ancak bu diller farklı yaklaşımları da bünyelerinde barındırmaktadır.
Aşağıda yapısal programlama yaklaşımına göre tasarım yapmayı ve bir akış çizelgesi (flow chart) çizmeyi adımlara bölmüş yaklaşım verilmiştir:
1. Yapılması istenen adımları basit bloklara böl
2. Her bloğu tek bir çıkışı olacak şekilde yeniden tasarla veya böl
3. Bu çıkış noktlarını kullanarak blokları birbirine bağla
4. Tekrarlı bloklar için döngüleri ve döngülerin koşullarını tanımla
5. Çatallanma (dallanma, fork) için şartları tanımla (if)
6. Bağlantı eksikleri bulunan blokların son bağlantılarını tamamla
Yukarıdaki adımlar tanımlandıktan sonra basit yorumlar yapılabilir. Örneğin bir değişken tanımlayarak ilk değer olarak 0 atasak, her bloğa girişinde bir arttırsak ve her bloktan çıkışında bir azaltsak program sonunda değişkenin değerinin 0 olması beklenir.
Yapısal programlama, bir programlama yaklaşımı olup, güncel gelişmelerle birlikte kullanılmaya devam etmektedir. Örneğin nesne yönelimli programlama yaklaşımlarını kullanan dillerin neredeyse tamamı yapısal programlamayı da bünyelerinde barındırmaktadır.
« http (hyper text transfer protocol, hipermetin transfer protokolü) | fonksiyonel programlama (functional programming) »
Yorumlar
Bilgisayar Kavramları üzerinde şu anda okumakta olduğunuz 'yapısal programlama (structured programming)' isimli yazı 18 Dec 2007 tarihinde, saat: 07:39 'de Şadi Evren ŞEKER tarafından gönderilmiş, toplam 1408 defa okunmuştur.
Benzer yazıları Bilgisayar Kavramları, C/C++, Derleyiciler, JAVA, Nesne Yönelimli Programlama, Programlama Dilleri, Temel Bilimler, bilgisayar felsefesi kategorilerinden okuyabilirsiniz. Yazar ile irtibat kurmak için email gönderebilirsiniz. Yazıya yorum yapabilir ya da yapılan yorumları RSS 2.0 ile takibe alabilirsiniz.
Yazarın Kitabı
Bu yazının yazarı Şadi Evren ŞEKER'in son çıkan kitabı "Programlama ve Veri Yapılarına giriş (C, C++ ve JAVA ile)" hakkında bilgi almak için Buraya tıklayabilirsiniz.
Eklenen Son Yazılar
- Visual Basic ile Gösterici (Pointer) Kullanımı
- Hasse Çizgeleri (Hasse Diagrams)
- Zeki Vekiller (Akıllı Ajanlar, Intelligent Agents, Zeki Etmenler )
- Integral Kriptoanalizi ( Toplam Tecessüsü , Integral Cryptoanalysis)
- Diferansiyel Kriptoanalizi ( Fark Tecessüsü , Differential Cryptoanalysis)
- Sierpinski Üçgeni (Sierpinski Triangle)
- C ile programlamaya giriş final sınavı çözümleri
- Çok Seviyeli Sıralar (Multi Level Queues)
- Çift Özetleme (Double Hashing)
- İkinci Dereceden Sondalama (Quadratic Probing)
Yapılan Son Yorumlar
- Şadi Evren ŞEKER: Null, NULL, nil veya null olarak...
- Fatih Kabakci: hocam merhabalar,...
- kara: Çok güzel anlatılmış gerçekten teşekkürler...
- Şadi Evren ŞEKER: Bahsettiğiniz şekil dönüşümü...
- Caner: Kullanıcıdan açı girdisi almıyorsanız...
- Furkan Yediyildiz: Algoritmanin mantigi cok güzel...
- havva: çok sağolun çok güzel açıklamalar var tşk...
- Şadi Evren ŞEKER: typedef komutu, bir yapıdan yeni bir...
- fatih kabakci: hocam ben structures ile ilgili bir sorum...
- Şadi Evren ŞEKER: evet, yukarıda açıklanan, herhangi...
- Abdurrahman ulusoy: fi açısından teta kadar döndürme...
- Şadi Evren ŞEKER: Hayır yok, bir noktanın, herhangi...
- Abdurrahman ulusoy: Bu durumda yukarıdaki formüllerin...
- Abdurrahman ulusoy: Merhaba hocam Üstteki mesajımda...
- mustafa ekmekcioğlu: merhaba şadi bey ben hacettepe...
- Şadi Evren ŞEKER: Talebiniz üzerine...
- Evren Kocaturk: ve bunu matlab üzerinde, gerekli...
- Evren Kocaturk: teşekkürler, işime yarayacak gibi,...
- tuncay çavuşoğlu: Şadi bey teşekkürler.Kısa ve...
- attila: hocam bunun bir örneginide Visual Basic diliyle...
Yakın Yazılar
fonksiyonel programlama (functional programming)
Sonsuz Döngü (Fasit Daire, Kısır Döngü, Infinite Loop)
Tembel Programlama (Lazy Programming)
otomat yönelimli programlama (automata based programming)
Etiket ve gitme komuları (Label and GOTO)
alt program (subprogram, subroutine)
yapısal programlama (structured programming)
Nesne Yönelimli Programlama (Object Oriented Programming)
Emirli Programlama (Imperative Programming)
Birleşim Noktaları (JoinPoints)
Bağlantılar
[...] programlama, yapısal programlamanın gerektirdiği bir yaklaşımdır. Buna göre fonksiyonel programlama kullanılan bütün diller [...]
[...] de görüleceği üzere her if, else, fonksiyon veya döngü parçasıdır. Daha fazla bilgi için yapısal programlama başlığına [...]