14 Kasım 2016 Pazartesi

Örnek-4: 0 girilene kadar, girilmiş tüm sayıların toplanması...

  • Girilen sayı tam sayı olacaktır. Bu tam sayı dışarıdan okunacaktır.
  • Girilen sayı 0 olmadığı sürece yeni sayı girilmeye devam edilecektir.
  • Her yeni sayı bir önceki ile toplanacak ve toplam saklanacaktır.
Örnek:
Bir sayi giriniz: 2
Bir sayi giriniz: 3
Bir sayi giriniz: 4
Bir sayi giriniz: 0
Toplam: 9

Örnek-3: Girilen bir sayının faktöriyel değerinin hesaplanması…

#include<stdio.h>
#include<stdlib.h>

int main()
{
    int sayi,i;
    int faktoriyel = 1;

    printf("Faktoryeli hesaplanacak sayiyi giriniz: ");
    scanf("%d",&sayi);

    if(sayi>=0)
    {
        for(i=sayi; i>0; i--)
        {
          faktoriyel*=i;
        }
        printf("\n%d! = %d dir\n",sayi, faktoriyel);
    }
    else
        printf("HATA: Sayi 0'dan kucuk olamaz!\n");
    return 0;
}

Örnek-2: Başlangıç bitiş değişkenleri arasındaki sayıların toplamı

Döngünün başlangıç ve bitiş değeri tam sayı olacaktır.

Döngünün başlangıç ve bitiş değerleri dışarıdan girilmelidir. Kullanıcıya başlangıç ve bitiş değeri sorulmalıdır.

Örnek:
Başlangıç değeri giriniz: 2
Bitiş değeri giriniz: 5
Toplam: 14


Döngünün başlangıç ve bitiş değeri tam sayı olacaktır.

Döngünün başlangıç ve bitiş değerleri dışarıdan girilmelidir. Kullanıcıya başlangıç ve bitiş değeri sorulmalıdır.

Örnek:
Başlangıç değeri giriniz: 2
Bitiş değeri giriniz: 5
Toplam: 14

Örnek-1: 1-10 arasındaki sayıların yazdırılması


10 Kasım 2016 Perşembe

8 Kasım 2016 Salı

Scratch Programı: Programlama Öğrenmeye Bir Başlangıç

Scratch; kendine has dili ve akış diyagramı mantığı  ile çok kolay ve eğlenceli bir şekilde oyun geliştirmeye izin veren bir programdır. Scratch ile çizgi filmler hikayeler ve hatta animasyonlar kolayca geliştirilebilir. Scratch programı kendi sitesinden ücretsiz olarak  indirebilir yada web taracıcı üzerinden kullanabilirsiniz.  Ayrıca Scratch ile geliştirilmiş 17 Milyondan fazla uygulamanın akış şemasına da bakabilirsiniz.






7 Kasım 2016 Pazartesi

Yazılım Metrikleri


Yazılımların ölçülebilen veya yapılan ölçümlere göre hesaplanan değerlerine yazılım metrikleri denir. Bu bilgileri elde etmek için yazılım metriklerini otomatik olarak hesaplayan araçlar kullanılabilmektedir. Bu sayede milyonlarca kod satırından oluşan bir yazılım projesi ve bu projenin çalışma alanı hakkında detaylı bilgilere ulaşılabilmektedir.



Bu kapsamda Source Monitor programı ücretsiz olarak yazılımlar ile ilgili metriklere ulaşabileceğimiz yararlı bir program. Çoklu dil desteği olan program sayesinde  oluşturduğunuz farklı dillerdeki yazılımların kaç satırdan oluştuğu, karmaşıklık değeri, yazılımın derinliği, yeteri kadar yorum satırı bulunup bulunmadığı gibi çok sayıda hesaplanan yazılım ölçütünü kolayca görebilirsiniz. 

Program içerisinde ayrıca yazılımın ölçütleri kullanılarak hazırlanan Kiviat grafiğini, Block histogram çubuk grafiğine de bakabilirsiniz.

Eğer yazılımınızın kodlarından elde edilen yazılım metrikleri Kiviat grafiğindeki yeşil alanı içerisinde değilse o kodları tekrardan inceleye bilirsiniz. Yine aynı şekilde yazılım kalitesi için Block Histogramda 9+ alanda bir karmaşıklık değerine sahip kodlarınız varsa o kodları tekrar yazmak isteyebilirsiniz.




Bir Kara Kutu Test Örneği

Arama rutin özellikler

procedure Search (Key : INTEGER ; T: array 1..N of INTEGER;
       Found : BOOLEAN; L: 1..N) ;

Ön Koşul
    -- En azından bir değere sahip olmalı
    1 <= N
Sonraki durum
    --
    ( Found and T (L) = Key)
    Yada
    -- Eğer değer eşleşmiyorsa
    ( not Found and
           not (exists i, 1 >= i >= N, T (i) = Key ))





Girişleri olan ön koşullar uygundur. Giriş Burada bir ön koşul tutmaz. Girişleri nerede kilit unsur dizinin üyesidir. Girişleri kilit unsur dizinin bir üyesi değildir nerede.



Garbage-In Garbage-Out

“Garbage-In = Garbage-Out” yazılım testler içerisinde kullanılan bir terimdir.
Bize yazılımın başarısız olduğundan başka bir ifadesi yoktur.
İyi kurulum doğru geçerlileme
Kötü veri için sistem toleransı
Sistemlerin ara yüzleri ve özelliklerinin sağlam olması gerektiğinden. Doğru ve etkili  veri girişi ve doğrulama kontrolleri olmalıdır.

Sınır Giriş verileri.


Sınır koşulları yazılımın planlı çalışma limitlerini kenarında durumlardır.
Örnek: negatif sayılar, giriş alanı uzunluğu aşan, pozitif sayılar.
Sınır değerlerine sahip olan veri datalarını seç(Eşitlik üstlük değerlerini de kullan)
Geçerli test verisi sınır değerlerini içersin.
Son geçerli değerler ile test et.
Sınır değerlerinin üzerinde olan veriler ile test işlemini gerçekleştir.
Buffer overflow saldırıları gibi güvenlik açıklarına karşı dizi tampon sınırları yararlanabilir.

Veri Testi

Eğer bir programı bir fonksiyon gibi düşünüyorsanız, Programın girişi onun etki alanıdır.
Veri giriş örnekleri
Resim dosyaları
Word belgeleri
Excele girilen veriler
DB-Dosyaları


Veri Test Örnek (Syntax Testing)

Sistem veri girişleri tekrardan onaylanmalıdır. Dahili ve harici girişler ve formatları ile uyumlu hale getirilmelidir.
Kullanıcıların veri giriş metin biçimi.
Dosya formatları.
Veritabanı şemaları.
Data biçimleri kolay bir şekilde test programları vasıtası ile dönüştürülerek veri testleri yapılabilir.

Denklik Bölümlendirme

Denklik Bölümlerdirme: Program içerisine girilen değerler ile çıkış değerlerinin karşılaştırılmasına denir.






Test to Pass & Test to Fail


Tamamlanan Test: Yazılımın belirlenen test senaryolarında başarılı olduğunu gösteren durum.
Programın temel anlamda çalıştığından emin olmak.
Kapasitesini zorlamamak
Yapısını kolay ve yapıyı çok zorlamayan test durumları ile test etmek.
Programı çökertmeye çalışmamak.
Tamamlanamayan Test:
Yazılımın çalışmasını bozmak için daha komplike test durumları oluşturmak.
Yazılımın güçsüz olduğu noktaları seçmek ve buralara saldırmak.


Tartışma

Neden yazılımcı teste test to  pass ile başlar?
Zaman kaybı değil mi?
 Tess To pass’ın bize ne kazandırır?
Yazılım test uzmanı tess to pass yapmalımı?

Dinamik Black box Testi

Dinamik çünkü program çalıştırılırken yapılıyor.
Kara kutu çünkü kod ile ilgili hiçbir bilgi bilinmeden gerçekleştiriliyor.
Bu test davranış testi olarakta bilinmektedir.
Test için gerekenler
Çalışan bir program ve tanımlamalar( Kullanıcı klavuzu)
Belirlenmiş test durumları( Giriş ve değer testleri gibi)

Test Datası ve Test Durumları

Test Datası:Sistem için belirlenmiş ve seçilmiş olan  veriler.
Test Case(Durum): Belirlenmiş test senaryolarını kullanarak yazılımları çalıştırmak. Elde edilen verilere bakılarak durumları değerlendirmek.

Kara kutu testinin karakteristiği

Test Planı erkenden olmalı.
Program bir kara kutu gibi ele alınmalı.
Uygulamanın detayları sorun olmamalı.
İsterler son kullanıcı düşünülerek yapılmalı.
Kriterler kesin olamaz.


Bir hastane sisteminin oluşturulması ile ilgili isterleri belirleme.


Alt Süreç belirleme(Hasta ve Hasta istek takipleri modülü)

1.Adım: Birinci aşama(İnceleme için aktif tanımlamaları hazırla.)
Hangi kriterlere sahip olacağımızı düşün!
İyi bir yapı
Kolay
İşler için yeterli
Esnek
Pratik
Geliştirilmesi Kolay
Standardizyona sahip

2.Adım Dokümantasyonu Hazırla
Varsayımlar açık olun
Bir hastaya ait bilgileri kaydedebilirsiniz.
Bir hasta için tüm randevuları elde etmek mümkündür.
Sistem tarafından rezervasyon belirleyebilir ve randevu durumunu değiştirilebilir.
Bir  randevu aktif veya iptali durumuna karşı açıktır.
Yanlış kullanımı Varsayımlar
Randevu eklemek veya silme işleminden sonra öğeleri kaldırabilir miyim.
Randevu iptal edildiğinde, durumu tekrar aktif olarak ayarlanmış olamaz.
Bir öğe her zaman bir düzene göre eklenir.

3.Adım Tanımlamaları Belirle
Veri yeterliliği(İstenilen bütün dataların program tarafından elde edilip edilmediğine bak)
Verilerin istenilen şekilde alındığını kontrol et.


4.Adım İhtiyaçları Yorumla
Farklı bakış açıları ve uzmanlığa sahip kişiler yorumcular olarak gereklidir.
Programcılar  ve müşteriler , sisteminin diğer özellikleri üzerinde çalışmalı ve yapıyı analizetmelidir.
Programcılar ve analistler genelde hastane bilgi sistemleri ile ilgili bilgisi bulunan kişilerden olmalıdır.

5.Adım Tasarım Anketleri
Yorumcular aktif bir rol almalıdır.
Yorumcular  o ana kadar oluşturulan belgeleri kullanarak yorum oluşturmalıdırlar. Ayrıca sistem hakkındaki bilgileride kullanmalıdırlar.
İstisna durumlar var ise tasarım anketleri içerisinde belirlenmelidir.
Örneğin, yerine "oluşabilir istisnalar yazınız" her bir program için tanımlanan istisnaları var mı? "

Adım 6: Davranış inceleme
Şartname yazarları, doldurulan anketlerle inceleme ve sorularıçözmek için yorumcular ile buluşuyor.
Yorumcular gerektiği gibi özellikleri yazarlar ile toplantı, onların değerlendirmeleri tamamlandı.
Şartname yazarların belirlediği yeni sürümü üretmek.

Belirlediği nitelik kontrol listesi

Tamlık Doğruluk Hassas Tutarlılık Ilgi Fizibilite Kod / Tasarım-özgür Test edilebilir

Şartname terminoloji kontrol listesi
 
Her, hepsi, hiçbiri, hiçbir zaman her zaman ... (kesinlikle emin misin?)
Kesinlikle, bu nedenle, açıkça, belli ki, alışıldığı gibi, en ...
Bazı, bazen, sık sık, genellikle, normal koşullarda, geleneklere göre,en ... (belirsiz)
Vb, vb, vb, gibi ... (test edilebilir değil)
Hızlı İyi, ucuz, verimli, küçük, istikrarlı, ... (ölçülebilir mi?)Işlenmiş Kulplu, reddedilen atlanmış, yok ...Eğer ... sonra ... (başka eksik)


Yorumcular  için en iyi değerlendirme yeri onlara en   uygun olan  bölgelerdir.
Bu kısımlara odaklanmalıdırlar.
Bu sayede Zaman tüm katılımcılar için daha akıllıca kullanılır.
Daha fazla hata bulunması muhtemeldir.
Şartname yazarları ile Bire bir iletişim ve  konuşma çok önemlidir.
Birkaç hatanın bulunması mutlaka şartname iyi
olduğunu göstermez . (Belkide inceleme süreci etkili değildi.)

Şartnamenin Amacı

İşlenmeyen kullanıcı gereksinimleri genellikle şunlardır

Belirsiz
Çelişkili
Pratik veya uygulanması imkansız
Aşırı muğlak ifadeler
Şartnamenin amacı; hangi sistem gereksinimleri ile tasarlandığını bilmek. En az "sürpriz" ile gereksinimleri kullanışlı bir şekilde oluşturmak.

Şartname belge
Sistem geliştiricilerin kullanacakları yazılımın anlatımı içeren bir açıklama bulunmalıdır.
Sistem modelleri, gereksinimlerini tanımlama ve gereksinimleri özellikleri içermelidir.
Bir tasarım belgesi değildir.
fonksiyonel ve fonksiyonel olmayan gereksinimleri içermelidir.
Bakım için bir referans belgesi olarak hizmet vermektedir.


Şartnamedeki gereksimimler ile ilgili olarak.

Gereksinimleri değiştirmek için yapı kolay bir şekilde tasarlanmalıdır.
Sistem değişiklikleri gibi değişikliklere uygun olmalıdır.
Hangi işletim sistemi üzerinde çalışacak?
İşletim sisteminin sonraki versiyonları için uyum olacak mı?
Eskiden sahip olunan verileri dönüştürebilecek mi?

Spesifikasyon özeti

İşletin nasıl uygulanacağı ve ne şekilde yapılacağı belirlenmelidir.
Şartname’ye isterlerin doğru alınması zordur; iyi iletişim becerisi gerektirir.
Gereksinimler zaman içinde değişebilir. Yeni gereksinimler şartname içerisinde iterasyon gerektirir.
Müşteri çoğu zaman ne istediğini iyi bilmez ve kavrayamaz. Gereksinimler aşamasında oluşturulan Bugsların sonradan düzeltmek zordur.

Şartname yorumları
Şartname içerisindeki hatalar olabileceği düşüncesi ile (kusurları keşfetme amacı ile) şartname incelenmesi gerekmektedir.
Yazılım içerisinde ortaya sık çıkan hatalara dikkat edilmelidir. (Yazılım içerisinde ortaya çıkma olasılığı çoktur.)
Hataları keşfetmek için etkili yöntemdir.

Değerlendirme ve test
 
Kesin bir şartname mevcut olmalıdır.
Ekip üyeleri kuruluşun standartlara aşina olması gerekir.
Yönetim kadrosu değerlendirme için yorum kullanmamalıdır.

Belirtim incelemesi nedir?
Bir yazılım sisteminin şartnamede hataları belirleme işlemidir.

Gereksinim: Bir Bakış

Gereksinim: Bir Bakış
 
Temel amacı: Kullanıcı tarafından söylenen sorunu doğru anlamak.
Etkinlikler( Şartnamede sorun çıkartacaktır dikkat edilmelidir.)
Gereksiz ayrıntı ile şartname karmaşıklaştırılmamalıdır.
Önceden belirlediği tasarım kısıtlanmamalıdır.
Şartname yapıldıktan sonra, yazılım tasarımı yapın: çözüm odaklı olunmalı nasıl uygulamaya ne şekilde uygulayacağız sorularına ilk bakış şartname ile yapılmalı.
Gereksinimlerin düzgün olması için anahtar; yazılımcı ile müşterinin arasındaki iletişimin düzgün olmasıdır.
Kılavuz olarak hazırlanan belge varsa o belgedeki sıra ile gereksinimleri belirlemeye çalışın.


Gereksinim

Önerilen yazılım sistemi ile ilgili; tespit ve müşteri beklentilerini tam olarak belirleme sürecidir.
İki tür gereksinim
Işlevsel(Fonksiyonal): Hassas görevler veya fonksiyonlar içeren sistemler için yapmaktır. Örneğin, bir uçuş rezervasyon sisteminin ayrıntıları
Fonksiyonel olmayan(Nonfunctional): Genellikle, sistem ya da yapı üzerinde belirlenen bazı özellikler. örneğin, beklenen performans ve bellek gereksinimleri, süreç modeli kullanılmış, uygulama dil ve platform, diğer araçlar, son başvuru tarihleri ?? ile uyumluluk, ...





Şartname yapısı içerisinde neler olur?

Giriş (sistem için ihtiyaç açıklayın)
Fonksiyonel Gereksinimleri
Non-Fonksiyonel Gereksinimleri
Sistem Evolution (beklenen değişikliklerin açıklayın)
Sözlüğü (teknik ve / veya yeni jargon)
Ekler
Indeks

Çalışma Örnekleri




? Karşılaştırma Operatörü Örnek:


? Karşılaştırma Operatörü Örnek:

    int sayi = 15;
    x = ( sayi < 10 ) ? printf("yazi1") : printf("yazi2");

Girilen il plaka koduna göre ekrana ilgili şehir ismi yazdırılacaktır.


Program tarafından desteklenecek iller:
ANKARA
İSTANBUL
İZMİR
MANİSA

Bunların dışında bir plaka kodu girilirse «TANIMSIZ PLAKA KODU» şeklinde hata mesajı verilecektir.



Girdiğiniz ay bilgisine göre hangi mevsimde olduğumuzu bulan bir program yazınız.



Girdiğiniz ay bilgisine göre hangi mevsimde olduğumuzu bulan bir program yazınız. Yazılacak C programında switch-case karşılaştırma deyimi kullanılacaktır.

·         12, 1, 2. aylar için ekran çıktısı à “Girdiginiz ay kis mevsimindedir”
·         3, 4, 5. aylar için ekran çıktısı à “Girdiginiz ay ilkbahar mevsimindedir”
·         6, 7, 8. aylar için ekran çıktısı à “Girdiginiz ay yaz mevsimindedir”
·         9,10, 11. aylar için ekran çıktısı à “Girdiginiz ay sonbahar mevsimindedir”
·         Farklı bir değer girilmişse ekran çıktısı à “Yanlis bir giris yaptiniz”


Kullanıcının klavyeden 2 gerçel (float) sayı girilmesi istenecek



Kullanıcının klavyeden 2 gerçel (float) sayı girilmesi istenecek ve sonrasında aşağıdaki menü karşısına çıkartılıp, kullanıcının yapacağı işlem seçimine göre ilgili işlem hesaplanarak sonucu 2 ondalıklı olacak şekilde ekrana yazdırılacaktır. Geçersiz bir işlem numarası girilirse “GECERSIZ ISLEM” hata mesajı ekrana yazdırılacaktır. Yazılacak C programında switch-case karşılaştırma deyimi kullanılacaktır.


Klavyeden girilecek bir tamsayının kontrolü yapılmak isteniyor.



Klavyeden girilecek bir tamsayının kontrolü yapılmak isteniyor. Girilen sayının 10-50 arasında olması beklenmektedir. 10’dan küçük olma ve 50’den büyük olma kontrollerini de ekleyerek bu kontrollerin sonucunu ekrana yazdıran algoritmanın akış şemasını ve C programını yazalım. C programında if-else karşılaştırma bloğu kullanılacaktır.

Örnek olarak girilen sayılar ve ekran çıktıları aşağıdaki gibidir:
a.     12 “Girilen sayı 10-50 arasındadır”
b.    9  “Girilen sayı 10’dan küçüktür”
c.     51 “Girilen sayı 50’den büyüktür”