aofsorular.com
BİL107U

Algoritma ve Programlamaya Giriş

1. Ünite 24 Soru
S

Algoritma kavramı nedir?

Algoritma dediğimiz kavram, belirli bir problemi çözmek ya da bir hedefe ulaşmak amacıyla izlenmesi gereken yola verilen isimdir. Bu yolda belirlenen adımlar da mantıksal olarak birbirini takip etmeli, hepsi açık, düzenli ve sıralı bir şekilde ifade edilmelidir. 

S

Algoritmalarda dikkat edilmesi gereken hususlar nelerdir?

Algoritmalarda dikkat edilmesi gereken hususları ise şu şekilde ifade edebiliriz: •İlgili adım, herkesin anlayabileceği gibi net bir şekilde ifade edilmelidir. •Probleme uygun olarak algoritma adımları arasındaki işlem sırasına dikkat edilmelidir. •Tüm olası durumları içerecek kadar genel olmalıdır. •Başlangıç-bitiş adımlarını içermeli, sonlu sayıda işlem adımına sahip olmalı ve belirli bir sürede bitmelidir.

S

Algoritma neden önemlidir?

Algoritma neden önemlidir?

•Problem çözümü herkes tarafından anlaşılabildiği için takım çalışmasını da kolaylaştırır.

•Projeyi tasarlayan haricinde bir başka kişi tarafından da kodu yazılabilir.

•Kodlama öncesi kontrollerin yapılarak mantıksal hataların tespit edilmesini kolaylaştırır.

S

Bilgisayar problemleri kavramı nasıl oluşmuştur?

İnsan gücü ile çok uzun zaman alacak ya da çözülemeyecek sorunların bilgisayar vasıtası ile çözülmek istenmesi ile bilgisayar problemleri kavramı oluşmuştur.

S

Belirlenen problemin bilgisayar ortamında çözüm aşamaları nelerdir?

Belirlenen problemin bilgisayar ortamında çözüm aşamaları Problemi Tanımlama (İnceleme, Analiz), Girdi ve Çıktıların Belirlenmesi, Alternatif Çözüm Yolları, Çözümün Sınanması ve İyileştirilmesi, Algoritmanın Kodlanması, Kodun Sınanması ve İyileştirilmesi şeklindedir.

S

Belirlenen problemin bilgisayar ortamında çözüm aşamalarından Problemi Tanımlama (İnceleme, Analiz) aşamasını açıklayınız.

Problemi Tanımlama (İnceleme, Analiz): Algoritmanın amacı problemi çözmektir. Çözülecek problem ne kadar iyi anlaşılır ise algoritmayı geliştirmek o kadar kolay olacaktır.

S

Belirlenen problemin bilgisayar ortamında çözüm aşamalarından "Kodun Sınanması ve İyileştirilmesi" aşamasını açıklayınız.

Kodun Sınanması ve İyileştirilmesi: Yazılan kod da tıpkı algoritmada olduğu gibi sınanmalıdır. Bu seferki sınama, belirlenen girdiler için belirlenen çıktıların alınmasının kontrol edilmesi amacıyla kodun çalıştırılmasıdır. Bu aşamada da performans ve olası hataların düzeltilmesi beklenmektedir.

S

Belirlenen problemin bilgisayar ortamında çözüm aşamalarından "Algoritmanın Kodlanması" aşamasını açıklayınız.

Algoritmanın Kodlanması: Problemin çözümü için geliştirilen algoritma, bilgisayar üzerinde çalışabilmesi için ihtiyaca uygun olarak belirlenen bir programlama dili ile kodlanır.

S

Belirlenen problemin bilgisayar ortamında çözüm aşamalarından "Çözümün Sınanması ve İyileştirilmesi" aşamasını açıklayınız.

Çözümün Sınanması ve İyileştirilmesi: Hazırlanan algoritmanın kodlamadan önce nasıl çalışacağının adım adım incelenmesi, varsa eksik ve hataların giderilmesi ve gerekli görülen değişikliklerin yapılması gerekmektedir. Bu işlemler sırasında işlemci ve bellek kullanımı konusunda görülen iyileştirme imkânları da mutlaka göz önünde bulundurulmalıdır.

S

Belirlenen problemin bilgisayar ortamında çözüm aşamalarından "Alternatif Çözüm Yolları" aşamasını açıklayınız.

Alternatif Çözüm Yolları: Bir problemin birden fazla çözüm yolu olduğu unutulmamalıdır. Zamana ve insan kaynağına göre en uygun çözüm yolu belirlenmelidir. Algoritma, seçilen çözümü adımlara ayrıştırıp birbirleri ile ilişkilerinin düzgün biçimde kurulmasını sağlayacak şekilde dizayn edilmelidir.

S

Belirlenen problemin bilgisayar ortamında çözüm aşamalarından "Girdi ve Çıktıların Belirlenmesi" aşamasını açıklayınız.

Girdi ve Çıktıların Belirlenmesi: Problemi iyi tanımlayabilmek için başlangıç ve bitiş noktaları belirlenmiş, sistemin girdi ve çıktı parametrelerinin ortaya konulmuş olması beklenmektedir.

S

Akış diyagramı nedir?

Akış diyagramları algoritmanın, görsel ve şekilsel olarak ifade edilmesi için kullanılır. Algoritmadan farklı olarak programın başlangıcından bitişine kadar olan tüm adımlar, geometrik şekillerle gösterilmektedir. Her bir geometrik şekil ve simge, bir iş veya komuta karşılık gelmektedir. Bu yüzden algoritmadaki gibi her adım için açıklama yapma zorunluluğu yoktur. Algoritmadaki adımlar arası geçişler, akış diyagramında oklar ile temsil edilmektedir. Akış diyagramında kullanılan şekillerin uluslararası geçerliliği olduğundan, herkes tarafından rahatça anlaşılabilir.

S

Akış diyagramlarından Doğrusal (Sıralı) akış diyagramını açıklayınız.

Doğrusal (Sıralı): Akış içerisinde giriş, hesaplama ve çıkış biçiminde sıralı bir olay kurgusu vardır. Her işlem bir diğerini takip ederken işlemler içinde koşul veya döngü gerçekleşmez.

S

Akış diyagramlarından Mantıksal (Koşullu) akış diyagramını açıklayınız.

Mantıksal (Koşullu): Akışın yönünün bazı kural ve koşullara göre değiştiği akış şemalarıdır. Ayrıca koşulların durumuna göre bazı adımlar gerçekleşmez.

S

Akış diyagramlarından Döngüsel (Tekrarlı) akış diyagramını açıklayınız.

Döngüsel (Tekrarlı): Mantıksal akış şemasının özelleşmiş bir versiyonu olduğu söylenebilir.Koşula göre bazı adımların tekrarlandığı akış şemalarıdır.

S

Sözde Kod(Pseudo Code) kavramını açıklayınız.

Problem çözümü için tasarlanan algoritmanın kodlanması gerekmektedir. Sözde Kod(Pseudo Code),bu algoritmanın bir programlama diline dönüştürülmeden önceki bir ara formu olarak düşünülebilir. Bu ara form, algoritmanın yarı programlama dili yarı konuşma dili şeklinde ifade edilmesidir. Sözde kod şeklinde verilen bir algoritmada, veri yapıları gibi detaylar göz ardı edilerek daha çok algoritmanın davranışı üzerine odaklanılır. Ayrıca sözde kod oluşturulurken herhangi bir söz dizimi kuralı yoktur. Böylece algoritmamız, daha fazla kişi tarafından anlaşılabilecek ve sözde kodu alan bir yazılımcı da ihtiyaca göre seçilen programlama dilinde kolay bir şekilde kodlayabilecektir. Sözde kodun hazırlanmasının bir diğer faydası da, kodlama bilmeyen kişilerin de yapılacak işin akışını ve mantığını kavramalarında kolaylık sağlamasıdır. Burada dikkat edilmesi gereken en önemli nokta, metnin anlaşılır ve kolaylıkla bir programlama diline uyarlanabilir olmasıdır.

S

Yazılım geliştirme sürecinin aşamaları nelerdir?

Yazılım geliştirme sürecinin aşamalarını ise şu şekilde gösterebiliriz:

  • Taleplerin Belirlenmesi
  • Planlama ve Analiz
  • Tasarım
  • Kodlama
  • Test ve Entegrasyon
  • Bakım
S

Yazılım geliştirme sürecinin aşamalarından "Taleplerin Belirlenmesi" aşamasını açıklayınız.

Taleplerin Belirlenmesi: Yazılım geliştirmenin ilk başta ele alınması gereken ve en önemli adımıdır. İhtiyacın belirlenerek buna uygun çözümün geliştirilmesi için, odaklanılması gereken yerler doğru tespit edilmelidir. Yazılım geliştirme sürecinin ilk adımı olduğu ve bundan sonraki tüm adımları doğrudan etkilediği için, tüm ihtiyaçların net olarak anlaşılması gerekmektedir. Gereksinimlerin belirlenmesi esnasında, süreçler anlaşılabilir bir şekilde iş akış diyagramları ile desteklenmelidir. Eğer akışlar içinde karmaşık süreçler varsa, küçük parçalara ayrılarak çözülmesi denenmelidir. Tüm iş modelleri şeffaf bir şekilde belirlenerek karışıklığa izin verilmemelidir. İş süreçleri mümkünse konu hakkında en uzman kişilerle görüşülerek analiz edilmelidir. Ortaya çıkarılan gereksinimlerin bir önem sırasına sokulması da yazılımın geliştirilmesi açısından önemli bir adımdır. Tamamlanan gereksinim analizi raporu, iş sahibi ile mutabık kalınarak tüm sınırların çizilmesinde kullanılacaktır. Bu doküman bir referans olarak kabul edilir ve dokümanda yazmayan istekler, kapsam dışı ek talepler olarak değerlendirilir.

S

Yazılım geliştirme sürecinin aşamalarından "Planlama ve Analiz" aşamasını açıklayınız.

Planlama ve Analiz: Bu aşamada, ilk adımda ortaya çıkarılan modüller detaylı olarak analiz edilmeli, projenin hedefleri ve amaçları detaylandırılmalıdır. Çözümden elde edilen tüm çıktılar ve beklentilerin neler olduğu kesin olarak belirtilmelidir. Yine bu aşamada, projede zaman kaybına neden olacak önemli görülmeyen ve acil olmayan özellikler, sonraki fazlara aktarılabilir. Burada yazılımın nasıl geliştirileceğinden ziyade, ihtiyaçların neler olduğuna odaklanılmalıdır. Aynı zamanda, isteklerin mevcut teknoloji ve bütçe ile karşılanabilme durumu kontrol edilmelidir. Yazılım geliştirme ekibi ile en uygun yazılım dili, mimari yapı ve sunucu özelliklerine karar verilmelidir. Burada amaç, sistemin geliştirilmesi için en uygun yöntemin ortaklaşa bir kararla belirlenmesidir. Analiz kısmında oluşturulacak belge oldukça sade olmalı ve herkesin anlayabileceği şekilde yazılmalıdır. Çünkü bu doküman vasıtası ile; •Yazılım geliştiriciler, müşterinin ihtiyacını tam olarak anlayabilmeli, •Tasarım ekibi, sistem tasarımını bu ihtiyaçlara göre ele alabilmeli, •Test ekibi, oluşturulan analize göre test senaryolarını hazırlayabilmelidir. İyi dokümante edilmiş bir analiz raporu, iş sahibi ve yazılımcı arasında varılacak mutabakat ile imza altına alınmış olmalıdır. Böylece gerektiğinde ihtilafa düşülen durumlarda yol gösterici bir rehber olarak yardımcı olacaktır.

S

Yazılım geliştirme sürecinin aşamalarından "Tasarım" aşamasını açıklayınız.

Tasarım: Bu aşamada ise hazırlanan projenin teknik kısımları ele alınmaktadır. Kullanıcılara yüzleri, veri tabanı şemaları, UML(Unified Modelling Language—Birleşik Modelleme Dili) diyagramları hazırlanır. Tasarımlar yapılırken yazılım standartlarına uygun şekilde dizayn edilmesi gerekmektedir. Ara yüz tasarımlarında kullanıcı deneyimi ve kullanım kolaylığı göz önüne alınarak hareket edilmelidir. Kullanıcının istediği sayfaya kolaylıkla ulaşabileceği, en az tıklama ile girebileceği şekilde sayfalar dizayn edilmelidir. Genişletilebilir bir yazılım mimarisi ile, ileride gelebilecek taleplerin de kolaylıkla karşılanabilmesi hedeflenmelidir. Ayrıca proje takip sistemleri kullanarak ekiplerin takım çalışması içerisinde yönetilmesi, gerektiği yerde kodların kontrolü, çalışma raporları ve iş süreçleri takibinin daha rahat şekilde yapılması sağlanmalıdır. Bu süreçte de müşteri, Bilgi İşlem(IT) ve yazılım ekiplerinin tüm sorularına cevap aranmalı; tüm detaylar, çizimler ve gerekli tasarımlarla dokümana eklenmelidir. Bu süreç sonucunda oluşan doküman da yine tüm taraflarca onaylanmalıdır. Alınan onayın ardından diğer aşamaya geçilmelidir.

S

Yazılım geliştirme sürecinin aşamalarından "Kodlama" aşamasını açıklayınız.

Kodlama: Bu aşamada ise tasarım aşamasında oluşturulan tüm dokümanlar ve istekler yazılım geliştirme ekibine iletilmektedir. Yazılım geliştirme süreci de kod yazım standartlarına uyularak yazılım geliştirme ekibi tarafından gerçekleştirilir. Kodlama süresince, hazırlanan akışlarla ilgili karşılaşılan problem ve sorunları, yazılımcılar tarafından tasarım ekibi ile koordineli bir şekilde çözmeleri beklenmektedir. Böylece kodlama yaparken daha önce düşünülmemiş bir durumla karşılaşıldığında, anında müdahale ile çözüm sağlanacaktır. Her ne kadar kısa bir süreçmiş gibi gözükse de kodlama kısmı olayın merkezinde yer almaktadır. Müşterinin ihtiyaçlarının çözüme kavuştuğu ve işin somut bir hâle geldiği aşamadır. Mümkünse yazılım mimarisine bağlı olarak her modülde müşteri ile onaylı gidilmeli, olası mantıksal sorunların müşterinin kullanımı sırasında ortaya çıkması önlenmelidir.

S

Yazılım geliştirme sürecinin aşamalarından "Test ve Entegrasyon" aşamasını açıklayınız.

Test ve Entegrasyon: Geliştirilen modüller, paketler ve akışların, müşterinin taleplerine uygun şekilde hazırlanan senaryolara göre test ekibince test edildiği aşamadır. Esasında, yazılım testleri kodlamanın her aşamasında yapılmalıdır. Analiz sırasında yapılan mantıksal hatalar, kodsal yapılan kontrol hataları, devreye alım sırasında sistemsel oluşabilecek hataların tümü test aşamasında ele alınmalıdır. Yazılım geliştirme ekiplerince birim testler, kodlama sırasında yapılmalıdır. Bununla birlikte, modüller ve akışların iletişimleri de test edilmelidir. Test ekipleri ise tüm sistem ele alınarak oluşturulan senaryolar ile tüm süreçleri kontrol etmelidir. Testin en son aşamasında ise müşterinin kabul testi yer almaktadır. Teknik detaya girmeden, müşterinin isteklerinin karşılanıp karşılanmadığı kontrol edilir. Bu sürece kadar somut bir şey görmeyen müşteri için, ihtiyaçlarının ne oranda karşılandığını göreceği aşama burasıdır. Bu aşama da geçilince sistemin devreye alım için hazır olduğu ifade edilebilir. Devreye alım süreci ise imkân varsa öncelikle pilot bir uygulama olarak müşteriye sunulmalıdır. Genellikle büyük ölçekli, çok kullanıcılı sistemlerde bu yol izlenmektedir. Karşılaşılan hatalar, sistemsel kısıtlar gibi sorunlar bu süreçte giderilerek sorunsuz bir sistem tüm kullanıcılara hizmet vermeye hazır hâle gelecektir. Devreye alımda önemli bir nokta da sistemin kullanımına yönelik oluşturulan kullanma kılavuzları, yönergelerin hazırlanması ve sürekli güncel tutulmasıdır. Bu belgeler, sisteme yeni dâhil olan kullanıcılar için de önemli bir kaynak olacaktır.

S

Yazılım geliştirme sürecinin aşamalarından "Test ve Entegrasyon" aşamasını açıklayınız.

Test ve Entegrasyon: Geliştirilen modüller, paketler ve akışların, müşterinin taleplerine uygun şekilde hazırlanan senaryolara göre test ekibince test edildiği aşamadır. Esasında, yazılım testleri kodlamanın her aşamasında yapılmalıdır. Analiz sırasında yapılan mantıksal hatalar, kodsal yapılan kontrol hataları, devreye alım sırasında sistemsel oluşabilecek hataların tümü test aşamasında ele alınmalıdır. Yazılım geliştirme ekiplerince birim testler, kodlama sırasında yapılmalıdır. Bununla birlikte, modüller ve akışların iletişimleri de test edilmelidir. Test ekipleri ise tüm sistem ele alınarak oluşturulan senaryolar ile tüm süreçleri kontrol etmelidir. Testin en son aşamasında ise müşterinin kabul testi yer almaktadır. Teknik detaya girmeden, müşterinin isteklerinin karşılanıp karşılanmadığı kontrol edilir. Bu sürece kadar somut bir şey görmeyen müşteri için, ihtiyaçlarının ne oranda karşılandığını göreceği aşama burasıdır. Bu aşama da geçilince sistemin devreye alım için hazır olduğu ifade edilebilir. Devreye alım süreci ise imkân varsa öncelikle pilot bir uygulama olarak müşteriye sunulmalıdır. Genellikle büyük ölçekli, çok kullanıcılı sistemlerde bu yol izlenmektedir. Karşılaşılan hatalar, sistemsel kısıtlar gibi sorunlar bu süreçte giderilerek sorunsuz bir sistem tüm kullanıcılara hizmet vermeye hazır hâle gelecektir. Devreye alımda önemli bir nokta da sistemin kullanımına yönelik oluşturulan kullanma kılavuzları, yönergelerin hazırlanması ve sürekli güncel tutulmasıdır. Bu belgeler, sisteme yeni dâhil olan kullanıcılar için de önemli bir kaynak olacaktır.

S

Yazılım geliştirme sürecinin aşamalarından "Bakım" aşamasını açıklayınız.

Bakım: Her ne kadar son sistem test araçları kullanılsa da, birim ve sistem testleri başarılı bir şekilde geçse de, operasyon sırasında kullanıcılar hata alabilirler. Burada önemli olan alınan hatalar için hızlı bir şekilde ve kalıcı çözüm üretebilmektir. Bakım süreci, projenin büyüklüğüne göre şekillenmektedir. Operasyon kısmında artık sorun alınmadığı zaman bu süreç de sonlandırılarak, standart bakım sürecine geçilebilir.