PROGRAMLAMA Temel Kavramlar - PowerPoint PPT Presentation

programlama temel kavramlar n.
Download
Skip this Video
Loading SlideShow in 5 Seconds..
PROGRAMLAMA Temel Kavramlar PowerPoint Presentation
Download Presentation
PROGRAMLAMA Temel Kavramlar

play fullscreen
1 / 90
PROGRAMLAMA Temel Kavramlar
423 Views
Download Presentation
sylvie
Download Presentation

PROGRAMLAMA Temel Kavramlar

- - - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript

  1. PROGRAMLAMATemel Kavramlar PROF.DR.YALÇIN ÇEBİ Dokuz Eylül Üniversitesi Bilgisayar Mühendisliği Bölümü Buca/İzmir E-posta: yalcin@cs.deu.edu.tr

  2. PROGRAM • Bilgisayarın veriyi bilgiye çevirebilmesi için takip etmesi gereken deyimler grubu (Instruction Set). • Herhangi bir programlama dilinin deyimleri kullanılarak yazılmış olabilir. • Programlama: Program geliştirme sürecinin tümü. • Bu süreç “Yazılım Geliştirme (Software Development)” olarak da adlandırılmaktadır. Prof.Dr.Yalçın ÇEBİ

  3. Program Standartları (1) • Günümüzde, bilgisayarların hayatın hemen her alanında kullanılır olması, değişik ortamlarda çalışabilecek programların hazırlanması gerekliliğini de beraberinde getirmektedir. • Eğitimli eleman azlığı, programlama maliyetlerini arttırmaktadır. • Daha yüksek programcı verimi sağlamak amacıyla programlama standartlarının düşürülmekte, standart dışı programlar ortaya çıkmaktadır. Prof.Dr.Yalçın ÇEBİ

  4. Program Standartları (1) • Bu programlar bir bilgisayar ortamından diğerine taşınırken sorunlar ortaya çıkmakta ve hatalar oluşmaktadır. • Sorun ve hataların giderilmesi için daha fazla işgücü ve kaynak ayırılmaktadır. • Programların geliştirilmesindeki gereklilikler: • Belirli standartların konulması ve bunlara uyulması. • Nitelikli elemanlarla çalışılması. Prof.Dr.Yalçın ÇEBİ

  5. İyi Program- Düşük Maliyet ? • İyi kalitedeki bir programa her zaman gereksinim duyulmakta, ancak programlama maliyetlerinin de düşürülmesi gerekmektedir. • Maliyetleri düşürmek için: • Kötü tasarlanmış bir programı çalıştırmak için uğraşmamalı, • Program tasarlama süreçlerine daha fazla özen gösterilerek tasarlanmış programların yazılmasını sağlamalıdır. • Program geliştirme sürecinde program tasarım aşaması daha da önem kazanmaktadır. Prof.Dr.Yalçın ÇEBİ

  6. Program Tasarım Hedefleri • Güvenilirlik (Reliability): Program her zaman için kendisinden beklenen işlemi gerçekleştirmelidir. • Bakım yapılabilirlik (Maintainability): Gerek duyulduğunda program kolaylıkla değiştirilebilinmeli ve düzeltilebilinmelidir. • Taşınabilirlik (Portability): Program başka bir bilgisayar sistemine en az değişiklikle taşınabilmelidir. • Okunabilirlik (Readability): Program, başka bir programcı tarafından da okunabilir ve anlaşılabilir olmalıdır. • Verim (Performance): Programın yerine getirmesi gereken işlemler çabuk ve verimli olarak gerçekleşmelidir. • Kaynak tasarrufu (Storage Saving): Program gereksiz ölçüde uzun ve kaynak harcayıcı olmamalıdır. Prof.Dr.Yalçın ÇEBİ

  7. “Doğru” Program • Bir program hazırlanırken, kendisinden beklenen hedefler doğrultusunda geliştirmeler yapılmakta ve program düzenlenmektedir. • Program, hedeflenen özellikleri sağlıyorsa “doğru” olarak nitelendirilmekte ve kullanılmaktadır. Prof.Dr.Yalçın ÇEBİ

  8. “Doğru” Program =“Uygun” Program? • Bazen, • Program özelliklerinde programdan gerçekten istenilenler tam olarak belirtilmemektedir. • Bu özelliklere göre geliştirilen program “doğru”, ancak “uygun” olmamaktadır. • Bazen; • Program özelliklerinin tanımlanması doğru olarak yapılmaktadır. • Program geliştirme yöntemlerinden kaynaklanan hatalar nedeniyle program yanlış olabilmektedir. • Program geliştirme sürecinin çok dikkatli ve ayrıntılı olarak hazırlanması ve takip edilmesi gerekmektedir. Prof.Dr.Yalçın ÇEBİ

  9. Program Yaşam Döngüsü (1)(Program Life Cycle) • Altı ana aşamadan oluşmaktadır. • Bu aşamalardan yalnızca bir tanesi programın bilgisayara kaydedilmesidir. • Diğerleri ise bilgi toplama, programı tasarlama, deneme, belgeleme ve bakım gibi işlemleri içermektedir. • Bir programın bilgisayara bir programlama dilinde aktarılması toplam işin yalnızca %20’sidir. Prof.Dr.Yalçın ÇEBİ

  10. Program Yaşam Döngüsü (2) • Program Özellikleri (Program Specification): Programın hedefleri, girdiler, çıktılar ve işlem gereksinimleri belirlenmektedir. • Program Tasarımı (Program Design): Çeşitli programlama teknikleri kullanılarak program için çözümler geliştirilmektedir. Prof.Dr.Yalçın ÇEBİ

  11. Program Yaşam Döngüsü (3) • Program Yazımı (Program Coding): Bir veya bir’den fazla programlama dilinde program yazılmaktadır. • Program Deneme (Program Testing): Program, yazım veya mantık hataları açısından kontrol edilmektedir. Prof.Dr.Yalçın ÇEBİ

  12. Program Yaşam Döngüsü (4) • Program Belgeleme (Program Documentation): • Programın geliştirilmesine başlandığı andan itibaren devam eden ve etmesi gereken bir süreçtir. • Programın geliştirilmesi sırasındaki her aşama belgelenmektedir. Prof.Dr.Yalçın ÇEBİ

  13. Program Yaşam Döngüsü (4) • Program Bakımı (Program Maintenance): • Tamamlanmış olan programlar, belirli aralıklarla duyarlılık, verimlilik, standartlaştırma ve kullanım kolaylığı sağlama yönlerinden gözden geçirilmektedirler. • Gerekli görüldüğü anda programda değişiklikler yapılmaktadır. Prof.Dr.Yalçın ÇEBİ

  14. Yazılım Ekibi • Program yaşam döngüsünü yazılım mühendisleri (Software Engineer) veya programcılar (programmer) uygulamaktadırlar. • Yaşam döngüsünün dördüncü aşamasında, • Programcılar sistem çözümleyicilerle (System Analyst) birlikte çalışmaktadır. • Bilgi sistemleri için gereken yazılımı hazırlamaktadırlar. Prof.Dr.Yalçın ÇEBİ

  15. Program Özellikleri (1) • Program yaşam döngüsünün ilk aşaması • Programın tanımlanması veya programın incelenmesi • Problemin anlaşılması olarak da tanımlanabilmektedir. • Programcı veya çözümleyiciden beklenenler: • Programın hedefleri, • İstenen çıktı, • Gerekli olan girdiler, • İşlem gereksinimleri, • Belgeleme. Prof.Dr.Yalçın ÇEBİ

  16. Program Özellikleri (2) • Bir programın hedefleri belirlenirken gerçekleştirilen çalışmalar da gündelik hayattaki çalışmalardan farklı değildir. • Çözümlenecek olan problemin net bir tanımı yapılmalı, problemin ne olduğu açıkça ortaya konulmalıdır. • Daha sonra problemin çözümü için gereken diğer aşamalara geçilebilmektedir. Prof.Dr.Yalçın ÇEBİ

  17. Program Özellikleri (3) • Bir problemin çözümüne başlarken, • Problemi çözmek için hazırlanacak olan programdan hangi çıktıların isteneceği belirtilmelidir. • Belirlenen çıktıların elde edilmesi için hangi girdilerin olması gerektiği belirlenmektedir. • Programın kullanıcısı olan kişilerin, programdan bekledikleri çıktıyı kağıt üzerinde yazarak veya çizerek ifade etmeleri gerekmektedir. • Bu sayede programcılar hangi hedefe erişmeleri gerektiğini rahatlıkla anlayabilmektedirler. Prof.Dr.Yalçın ÇEBİ

  18. Program Özellikleri (4) • Çıktılar tanımlandıktan sonra, gerekli verilerin ve bu verilerin hangi kaynaktan girileceğinin belirlenmesi gerekmektedir. • Verilerin • türleri, • yapıları, • hangi ortamdan toparlanacağı, • nasıl toparlanacağı, • bilgisayar sistemine nasıl girileceği gibi soruların cevaplandırılacağı çalışmalar bu aşamada gerçekleştirilmektedir. • Girilen verilerin, istenilen çıktıyı verebilecek şekilde nasıl işleneceğinin belirlenmesi de bu aşamada gerçekleştirilen işlerden birisidir. Prof.Dr.Yalçın ÇEBİ

  19. Program Özellikleri (5) • Program geliştirmenin her aşamasında belgeleme (dokümantasyon) gerçekleştirilmelidir. • Belgelemenin, bu aşamadan başlayarak her aşamayı ayrıntılı olarak kapsayan bir şekilde hazırlanması gerekmektedir. • Bu aşamada programın özelliklerini, girdi, çıktı ve gereken işlemleri içeren bir belge hazırlanmaktadır. Prof.Dr.Yalçın ÇEBİ

  20. Program Tasarımı (1) • Problemin çözüm yöntemini ve bu yöntemin geliştirilme işlemlerini içermektedir. • Program yaşam döngüsünün en önemli aşamasıdır. • Bu aşamada; • Bir çözüm yöntemi planlanmakta, • Bu çözüm yöntemi uygun çözüm, program geliştirme yöntem ve araçları ile geliştirilmektedir. Prof.Dr.Yalçın ÇEBİ

  21. Program Tasarımı (2) • Hazırlanan çözüm içinde; • Programın nasıl geliştirileceği, • Programın nasıl bölümlendirileceği, • Programın hangi bölümünde hangi programlama dilinin kullanılacağı, • Programın hangi bölümünün kim tarafından kodlanacağı (seçilen programlama dilinde bilgisayara aktarılacağı) ayrıntılı olarak belirtilmelidir. Prof.Dr.Yalçın ÇEBİ

  22. Program Tasarımı (3) • Özellikle büyük programlarda, program “parça” veya “modül” olarak adlandırılan bölümlere ayrılmaktadır. • Her parça ayrı programcılar tarafından ve bazen de ayrı programlama dillerinde yazılmaktadır. • Birbirinden bağımsız olarak hazırlanan ve denenen bu modüllerin, bütünleştirme sürecinde birbirleri ile birleştirilmeleri ve bir bütün olarak denenmeleri gerekmektedir. Prof.Dr.Yalçın ÇEBİ

  23. Yapısal Programlama Teknikleri • Yukarıdan Aşağıya (Top-down) yöntemi • Aşağıdan Yukarıya (Bottom-up) yöntemi • Sözde kod (Pseudocode) • Akım Şeması (Flowchart) • Mantıksal Yapılar (Logic Structures) Prof.Dr.Yalçın ÇEBİ

  24. Aşağıdan-Yukarı Yöntemi (1) • Programlama ve sistem tasarımında karşılaşılan problemler, hep bir arada çözülemeyecek kadar büyük olabilmektedirler. • Nereden başlanacağı konusunda bir soru işareti doğmaktadır. • Eğer karşılaşılan problem, daha önce karşılaşılan türden bir problem değilse; • Problemin anlaşılan bir bölümünü çözmek, • Böylece problemin diğer bir tarafının anlaşılmasını kolaylaştırmak, • Daha sonra o parçayı çözmek ve • Sırasıyla tüm parçaları çözüme kavuşturmak gerekebilir. Prof.Dr.Yalçın ÇEBİ

  25. Aşağıdan-Yukarı Yöntemi (2) • Her bir parça ayrı ayrı çözümlendiği için daha sonra birleştirilmeleri ve birlikte düzgün çalışıp çalışmadıklarının denenmesi gerekmektedir. • Bu yönteme “Aşağıdan Yukarıya (Bottom-up)” adı verilmektedir. • Bu yöntemin en büyük sorunu: • Problemin çözüm aşamasında her bir parça ayrı ayrı çözüme kavuşturulmakta, • Program parçaları arasındaki ilişki kısmen de olsa gözardı edilmektedir. • Bunun sonucunda program içinde bütünlük sağlamak için yeniden düzenlemeler gerekmekte, programın bütünleştirilmesi sırasında yoğun bir ek çalışmaya gereksinim duyulmaktadır. Prof.Dr.Yalçın ÇEBİ

  26. Yukarıdan-Aşağı Yöntemi (1) • Karmaşık problemler • Parçalara ayrılarak • Aşama aşama çözümlenebilecek bölümler halinde ele alınarak çok daha kolay çözümlenebilirler. • Programlamada geliştirilen modern yöntemler bunu öngörmektedir. • Her aşamada problem küçük parçalara bölünmekte ve ayrıntılardan mümkün olduğunca kaçınılmaktadır. Prof.Dr.Yalçın ÇEBİ

  27. Yukarıdan-Aşağı Yöntemi (2) • Bu yaklaşımda, programın tüm parçaları arasındaki ilişkiler çözüme başlanmadan önce ayrıntılı olarak tanımlanmakta, böylece parçaların birleştirilme aşaması kolaylıkla geçilebilmekte ve istendiği gibi çalışan bir program elde edilmektedir. • Bu genel yaklaşım, Yukarıdan Aşağıya Yöntemi (Top-down Method) olarak adlandırılmaktadır. Prof.Dr.Yalçın ÇEBİ

  28. Sözde Kod (Pseudocode) • Yazılacak olan programın mantıksal akışının yazı ile ifade edilmesidir. • Programın yazılmasından önce bir özetinin yapılmasına benzemektedir. • Örneğin; • Ekrandan girilen “n” tane sayının okutulması, toplatılması, aritmetik ortalamasının alınması ve sonucun yazdırılması: • Sözde kodda, yapılacak olan işlem genel hatları ile tariflenmektedir. • Bu koda bakarak istenilen bir programlama dilinde bu işlemi gerçekleştiren bir program geliştirmek mümkündür. Prof.Dr.Yalçın ÇEBİ

  29. Örnek Sözde Kod • İşleme Başla • n değerini oku • adet’e ve toplam’a sıfır değerini ata • a sayısını oku • a sayısını toplam ile topla ve sonucu toplam’a ata • adet’in değerini 1 arttır. • Eğer adet’in değeri n’den küçükse yeni sayıyı okumak üzere 4.aşamaya git. • toplam değerini adet değerine bölerek aritmetik ortalamayı bul ve bu değeri ortalama’ya aktar • toplam, adet ve ortalama değerlerini yazdır • İşlemi bitir Prof.Dr.Yalçın ÇEBİ

  30. Akım Şeması (Flowchart) • Bir programlama probleminin çözümü için gerekli ayrıntılı aşamaları grafiksel olarak gösteren bir çizimdir. • Akım şemalarında her simge belirli bir işlemi ifade etmektedir. Prof.Dr.Yalçın ÇEBİ

  31. Akım Şeması Simgeleri Prof.Dr.Yalçın ÇEBİ

  32. Programın Parçalar Halinde Gösterimi • Ancak, büyük çaplı programlarda akım şeması hazırlanması oldukça zor olmaktadır. • Yukarıdan aşağıya programlama yöntemi sayesinde programın parçalara ayrılması yarar sağlamaktadır. • Böylece her program parçasının akım şeması ayrı hazırlanmakta, hazırlanan bu akım şemaları ise daha üst seviyeli bir akım şeması ile gösterilebilmektedir. Prof.Dr.Yalçın ÇEBİ

  33. Örnek Program Akım Şeması Prof.Dr.Yalçın ÇEBİ

  34. Akım Şeması Türleri-Çerçeve Akım Şeması • Çerçeve akım şeması ve ayrıntılı akım şeması farklı seviyelerdeki ayrıntıları vermektedir. • Çerçeve akım şemalarında, programcı programı genel hatları ile anlayabilmektedir. • Sistem akım şemasının program akım şemasına çevrilmiş hali bulunmaktadır. • Bu akım şemasında gerçekleştirilecek işlemlerin ana hatları bulunmaktadır. Prof.Dr.Yalçın ÇEBİ

  35. Akım Şeması Türleri-Ayrıntılı Akım Şeması • Ayrıntılı akım şemaları çerçeve akım şemaları temel alınarak hazırlanmakta ve özel işlemlerin yapılabilmesi için gerekli ayrıntıları içermektedirler. • Bu akım şemasından yararlanarak programcı program kodlama sayfalarını hazırlama imkanını bulabilmektedir. Bu akım şemaları genellikle değişik programcılar tarafından hazırlanabilmektedir. Prof.Dr.Yalçın ÇEBİ

  36. Çerçeve ve Ayrıntılı Akım Şeması Prof.Dr.Yalçın ÇEBİ

  37. Günümüzde Akım Şemaları • Akım şemaları, orijinalinde problemleri çözümleme ve bilgisayar destekli çözümler üretilmesine yardımcı olmak amacıyla geliştirilmişlerdir. • Yazılım teknolojisinin gelişimi ile birlikte, akım şemaları can sıkıcı ve yetersiz araçlar olarak algılanmaya başlamışlardır. • Daha yeni seçenekler geliştirilmiş ve uygulamaya konmuşlardır. Prof.Dr.Yalçın ÇEBİ

  38. Akım Şemalarının Zorlukları • Farklı seviyelerdeki ayrıntılar kolaylıkla karıştırılabilmektedirler. • Örneğin, özel bir uygulamanın ayrıntıları tasarımın ilk başlarında verilmek zorunda kalınabilmektedir. • Bir seviyedeki akım şemasından diğer bir seviyedeki akım şemasına açıkça geçilememektedir. • Yapılacak işin nasıl yapıldığının teknik ayrıntıları arasında hangi işin yapıldığı gözden kaçabilmektedir. • Akım şemaları, kolay takip edilebilmektedir. • Bir dildeki yazılı anlatım kadar anlaşılır değildir. • Programcı, bu akım şemasından yararlanarak programı geliştirememektedir. Prof.Dr.Yalçın ÇEBİ

  39. Mantıksal Yapılar • Bir programın geliştirilmesi sırasında değişik özelliklere sahip mantıksal yapıların (Logical Structures) kullanımı gerekmektedir. • En çok kullanılanları, • sıralanma (sequence), • seçim (selection) • Döngü (loop). • Bu yapıların kullanımı ile yapısal olarak düzenlenmiş programlar yazılabilinmektedir. Prof.Dr.Yalçın ÇEBİ

  40. Sıralanmalar • Sıralanmalarda, bir program deyimini diğer bir program deyimi takip etmektedir. • Bir deyimin işlenmesi bittiğinde program bir sonraki deyime geçmekte ve işlemler sırası ile gerçekleştirilmektedir. Prof.Dr.Yalçın ÇEBİ

  41. Seçimler • Karar verme durumu sözkonusu olduğunda gündeme gelmektedir. • Karar verme işleminin sonucuna göre program iki ayrı deyime yönlendirilmekte ve o duruma uygun deyim işlenmektedir. • Daha sonra program bir sonraki deyime geçmektedir. • Bu yapı IF_THEN_ELSE yapısı olarak da adlandırılmaktadır. Prof.Dr.Yalçın ÇEBİ

  42. Döngüler • Bir işlemin veya işlem grubunun belirli bir şarta bağlı olarak tekrarlanması gerektiğinde kullanılan yapılara ise “döngü” adı verilmektedir. • Bu yapılar, işlemler arka arkaya sürekli tekrarlandıklarından aynı zamanda “iterasyon” olarak da adlandırılabilmektedir. Prof.Dr.Yalçın ÇEBİ

  43. Döngü Türleri • Döngüler, genel olarak • Belirli bir sayıda işlem yapılması istendiğinde kullanılan FOR_NEXT, • Belirli bir şarta bağlı olarak kullanılan DO_UNTIL ve DO_WHILE döngüleri olarak gruplandırılabilir. Prof.Dr.Yalçın ÇEBİ

  44. FOR_NEXT Döngüsü • Belirli bir sayıda tekrar edilmesi gereken işlemler FOR ve NEXT deyimleri arasına yazılmaktadır. • NEXT deyimi, genellikle BASIC programlama dilinde kullanılmakta, diğer programlama dillerinde ise bu deyimin yerini başka deyim ve/veya işaretler almaktadır. • Bu yapı, IF_THEN yapısı ile kurulan döngülerin daha sadeleştirilmiş bir şeklidir. Prof.Dr.Yalçın ÇEBİ

  45. DO_UNTIL; DO_WHILE • DO_UNTIL ve DO_WHILE yapıları birbirlerine benzemektedirler. • DO_UNTIL en çok kullanılan döngü yapısıdır. • Yapı içinde bulunan deyim grubu, kontrol şartı sağlanıncaya kadar ardışık olarak işlenmektedir. • DO_WHILE yapısında döngü içinde bulunan deyimler, şart sağlandığı müddetçe işlenmektedirler. Prof.Dr.Yalçın ÇEBİ

  46. Tasarımı Belgeleme • Program geliştirme sürecinin her aşamasında gerekli olan belgeleme işlemlerine bu aşamada da devam edilmektedir. • Bu belgeleme işlemi sırasında hazırlanacak olan belgelerin içerisinde sözde kod, akım şemaları ve mantıksal yapılar ayrıntılı olarak yer almalıdır. Prof.Dr.Yalçın ÇEBİ

  47. Program Yazımı (1) • “Kodlama” olarak da tanımlanabilen program yazım aşamasına kadar yalnızca sistem çözümleyiciler çalışmış, programcılar henüz hiç bir çalışmaya başlamamışlardır. • Bu aşamaya gelinceye kadar, programın yazılabilmesi için gerekli bütün hazırlıklar tamamlanmıştır. • Artık, programın yazımına başlanabilecektir. Prof.Dr.Yalçın ÇEBİ

  48. Program Yazımı (2) • Yanlış bir yaklaşım olmasına karşın, “programlama” denildiğinde akla gelen tek şey program yazım aşaması olmaktadır. • Program yazım aşaması, program geliştirmenin yalnızca bir bölümüdür. • Genel olarak program geliştirme sürecinin yaklaşık %20’lik bir bölümünü içermektedir. Prof.Dr.Yalçın ÇEBİ

  49. Program Yazımı (3) • Geliştirilen bir program birçok yönden “iyi” olarak kabul edilmelidir. • Bir program : • Güvenilir olmalıdır; • Birçok şart altında çalışabilmelidir; • Açık ve genel girdi hatalarını yakalayabilmelidir; • İyi bir şekilde belgelenmelidir; • Diğer programcılar tarafından da anlaşılır olmalıdır; • Yapısal olarak düzenlenmelidir. • Yapısal olarak hazırlanan programlar yalnız çok amaçlı olmamakta, aynı zamanda programın doğru çalışmasını kontrol etmek amacıyla yapılan denemeler sırasında da kolaylık sağlamaktadırlar. Prof.Dr.Yalçın ÇEBİ

  50. Programın Sunumu • Programın yazımı sırasında dikkat edilmesi gereken kuralları içermektedir. • Program sunumunda dikkat edilmesi gerekenler: • Program, altprogram, değişken ve sabitler için yeterince uzun ve anlamlı tanımlayıcılar kullanılmalıdır. • Programda, programın yapısını yansıtacak şekilde girintiler kullanılmalıdır. • Uygun program yapıları kullanılmalıdır. • Programdaki altprogramlar yönetilebilir uzunluklarda düzenlenmelidir. • Program içine, ne yapıldığı ve ne için yapıldığını anlatan açıklayıcı bilgiler yazılmalıdır. Prof.Dr.Yalçın ÇEBİ