7 Kasım 2016 Pazartesi

Bir üniversitede öğrencilerin başarı notunu harfe dönüştürmek üzere girilen başarı notu;



Bir üniversitede öğrencilerin başarı notunu harfe dönüştürmek üzere girilen başarı notu;

     60 ile 65 arasındaysa DD
     65 ile 70 arasındaysa DC
     70 ile 75 arasındaysa CC
     75 ile 80 arasındaysa CB
     80 ile 85 arasındaysa BB
     85 ile 90 arasındaysa BA
     90 ile 100 arasındaysa AA

yazdıran bir program yazılacaktır. Girilen başarı notu yukarıda verilen not aralıklarının dışındaysa program «Uygun değer girmediniz!» şeklinde bir uyarı verecek ve programdan çıkılacaktır. C programında if-else karşılaştırma bloğu kullanılacaktır.


Bir havuzun enini, boyunu ve yüksekliğini metre cinsinden girdi olarak alan ...


Bir havuzun enini, boyunu ve yüksekliğini metre cinsinden girdi olarak alan ve havuzun dolması için kaç metreküp suyun gerekli olduğunu hesaplayıp ekranda gösteren bir C programı yazınız.


Örnek Çıktı:
Havuzun eni, boyu, yüksekligi: 4.0   5.0   6.0
Havuz 120.00 metrekup su alabilir.


2850.0 değeri okunduğunda, aşağıdaki C programının çıktısı ne olur?

2850.0 değeri okunduğunda, aşağıdaki C programının çıktısı ne olur?

(#define ön işlemcisi ile tanımlanan her ne olursa olsun, tanımlama bütün fonksiyonlarda kullanılabilir. Bir çeşit genel (global) bildirim gibi davranır.

Ön işlemci komutlarının başında # işareti bulunmaktadır. simgesel sabit tanımlama için; #define simgeselSabitAdı sabitDeger)

Bir ücretlinin sicil numarası, ...


Bir ücretlinin sicil numarası, çalışma saati ve saat ücreti klavyeden girilmektedir. Ücretlinin bu bilgilerle maaşını hesaplayıp ekrana yazdıracak C programını geliştirelim.


Not: Maas = Calisma_Saati * Saat_Ucreti şeklinde hesaplanır.





Klavyeden girilen iki sayının ortalamasını bulan bir C programı yazınız. Sonucu üç ondalıklı gösteriniz.


Klavyeden girilen 2 gerçel sayının ...

Klavyeden girilen 2 gerçel sayının toplamını, çıkartılmasını, çarpımını,bölümünü bulup ekrana yazdıran C programını yazınız.

Not-1: Her aritmetik işlem için birer değişken tanımlayınız ve girilen iki sayının aritmetik işlemini gerçekleştirip, bu değişkene atayınız.
Not-2: Toplama ve çıkartma işleminin sonucu 2 ondalıklı, çarpma işleminin sonucu 4 ondalıklı ve bölme işleminin sonucu 6 ondalıklı olmalıdır.






C programının ekran çıktısı ne olur?

Aşağıdaki C programının ekran çıktısı ne olur?

#include<stdio.h>
  main()
{
  int x,y;
  x=5;
  y=5;
  printf("++x degeri=%d\n",++x);
  printf("y++ degeri=%d\n",y++);
  printf("\n");
  printf("arttirmadan sonra x=%d\n",x);
  printf("arttirmadan sonra y=%d\n",y);
}







Aşağıdaki C programının ekran çıktısı ne olur?

#include<stdio.h>
  main()
{
  int x=0, y=0, toplam;
  x=++y;
  toplam=x+y;
  printf("toplam=%d\n", toplam);
}



Aşağıdaki C programının ekran çıktısı ne olur?

#include<stdio.h>
  main()
{
  int x=10, y=10, fark;
  x=y--;
  fark=x-y;
  printf("fark=%d\n", fark);
}






Aşağıdaki C programında bulunan özel amaçlı sözcükleri, tanıtıcı isimlerini ve değişkenleri işaretleyiniz.

Aşağıdaki C programında bulunan özel amaçlı sözcükleri, tanıtıcı isimlerini ve değişkenleri işaretleyiniz.

#include <stdio.h>
  int main(void)
{
   int a, alan;
   printf("Karenin kenar uzunlugunu giriniz:");
   scanf("%d", &a);
   alan=a*a;
   printf("Alan=%d\n",alan);
   return 0;
 }


Cevap:

Özel amaçlı sözcükler: int, void, return
Tanıtıcı isimleri: main, printf, scanf
Değişken isimleri: a, alan

Ekrana adınızı ve soyadınızı görüntüleyen C programı.

Ekrana adınızı ve soyadınızı görüntüleyen C programı:

/*Ekrana adimizi ve soyadimizi yazdiralim*/
#include <stdio.h>
int main(void)
{
    printf("H. Ferdi Turgutlu\n");
    return 0;
}

C program kodlarının yanlışlıklarını düzeltiniz.

Aşağıda verilen C program kodunun yanlışlıklarını bularak düzeltiniz.





1.Soru
/*Ekrana 'Merhaba Dunya' mesajini yazdiralim.
#include <stdio>
int main(void)
{
    print("Merhaba Dünya\n")
    return 0;
}


Cevap

/*Ekrana 'Merhaba Dunya' mesajini yazdiralim.*/
#include <stdio.h>
int main(void)
{
    printf("Merhaba Dünya\n");
    return 0;
}

2.Soru
/*Ekranda "C dilini ogreniyorum." mesajini yazdiralim.*/
#include <……………………>
int main(…………..)
{
    printf(…………………………………….);
    return 0;
}

Cevap

/*Ekrana "C dilini ogreniyorum" mesajini yazdiralim.*/
#include <stdio.h>
int main(void)
{
    printf("C dilini ogreniyorum\n");
    return 0;
}

1 Kasım 2016 Salı

Sanal Siber Saldırı Haritası (Ddos Saldırıları)

Digitalattackmap; ülkeler arasındaki siber saldırılarını izleyen ATLAS Thread Hub'dan alınan bilgileri, canlı olarak ekranınıza yansıtan bir web sayfasıdır.
Google Ideas, DDoS data ve Arbor Networks tarafından hazırlanan sanal saldırı haritası, küresel ölçekteki DDoS saldırılarını ve saldırı sınıflarını görsel bir şekilde listelemekte.
http://www.digitalattackmap.com isimli web sayfasını açtığınızda saldırı altında olan olan ülkeler gıri renkte görüntülenmekte.
Bugün itibari ile Polonya'ya ciddi bir Ddos saldırısının yapıldığı harita üzerinde de görülebilir. Siber saldırı nedeniyle Polonya'daki havalimanlarının doğru düzgün çalışmadığı ile ilgili haberlerde sitenin sağ alt köşesinde gösterilmiş.

Digital saldırı haritasının özelliklerine bakacak olursak; Ddos saldırıları kesikli çizgiler ile sitede listelenmiş. Yapılan saldırnın hangi ülkeden hangi ülkeye yapıldığı, saldırı şiddeti, saldırı tipi gibi bazı bilgilerde detaylı olarak verilmiş.
Diğer bir siber sanal saldırı haritası ise NorseCorp.  Digital Attack Map'in yaptığı işleri daha görsel bir şekilde sunan NorseCorp sitesi aynı zamanda. DigitalAttack sitesi gibi Dünya üzerindeki çeşitli ISP'lerin (İnternet Sağlayıcıların) network verilerini kullanmakta. ISP'ler ile yapılan anlaşma ile network trafiği üzerindeki DDos saldırılarını ve saldırı çeşitlerini görsel olarak harita üzerinde  göstermekte.

31 Ekim 2016 Pazartesi

printf () ve scanf()


printf () - Tip belirleyici (conversion specifier)

% işareti ile başlar ve bir veya iki karakterden oluşur (%d gibi). Ekrana yazdırılmak istenen değişkenin tipi, % işaretinden sonra belirtilir. Ayrıca biçim ifadesinin içine, sola - sağa yaslama, noktadan sonra x basamak yaz vb gibi isteklerimizi belirten karakterler de ekleyebiliriz.

Gerçek sayıların yazdırılmasında, noktadan sonra yazılacak basamak sayısı durumların ifade edilmesi için ve tamsayıların aynı hizada yazdırılması için nokta operatörü veya rakamlar kullanılır.Aynı şekilde karakter katarlarının sağa ya da sola dayalı yazdırılması için veya bir karakter katarındaki karakterlerin kaç tanesinin yazdırılacağını belirtmek için de yine nokta, eksi gibi operatörlerin ve rakamların çeşitli kombinasyonları kullanılır.




 scanf() Fonksiyonu


Birçok programda ekrana verilerin bastırılmasının yanı sıra klavyeden veri okunması gerekebilir.
scanf() fonksiyonu klavyeden veri okumak için kullanılan fonksiyondur. Tip belirleyicileri printf fonksiyonu ile aynı mantıkta kullanılır ve % sembolü ile ifade edilir.

Örneğin klaveden bir x tamsayısı okumak için aşağıdaki ifade kullanılır:

    scanf("%d", &x);


C'de Operatörler

Operatörler

Operatörler, değişkenler veya sabitler üzerinde matematiksel ve karşılaştırma işlemlerini yapan simgelerdir. Yani bir operatör bir veya daha fazla değişken üzerinde işlem yapan semboldür.

C programlama dilinde 4 tip operatör bulunmaktadır.
Aritmetik Operatörler
Atama Operatörleri
Karşılaştırma Operatörleri
Mantıksal Operatörler



a = b + 10;
c = d + c * e –f /g + h % j;
z = u[1] * u[2];
x = 10;
a = b = c = 0;


Bu operatörler bir değişkene, bir sabit veya bir aritmetik ifade atamak (eşitlemek) için kullanılır.




Birleşik atama: Bazı ifadelerde işlem operatörü ile atama operatörü birlikte kullanılarak, ifadeler daha kısa yazılabilir.




Eğer ifade
     değişken = değişken [operatör] aritmetik ifade;
şeklinde ise, daha kısa bir biçimde
    değişken [operatör]= aritmetik ifade;
olarak yazılabilir.













C'de Sabitler


Sabitler

Sabit bildirimi, başlangıç değeri verilen değişken bildirimi gibi yapılır.
Ancak, veri tipinin önüne const anahtar sözcüğü konmalıdır.
Sabit içerikleri program boyunca değiştirilemez. Yalnızca kullanılabilir.
Genellikle, sabit olarak bildirilen değişken isimleri büyük harflerle, diğer değişken isimlerinin ise küçük harflerle yazılması (gösterilmesi) C programcıları tarafından geleneksel hale gelmiştir.

const float PI = 3.142857;
const double NOT= 12345.8596235489;
const int EOF= -1;
const char[] = "devam etmek için bir tuşa basın...";

C'de Değişkenler

Değişkenler


Değişken, program içinde kullanılan değerlere bellek üzerinde açılan alanlardır. Bu alanlar bir değişken ismi ile anılır. Değişken isimlendirilmeleri, tanımlayıcı kurallarına uygun biçimde yapılmalıdır. C’de tüm değişkenler kullanılmadan önce programa bildirilmelidir.
Bu bildirim esnasında, değişkenin veri türü belirlenir.

Örnek:
veri_türü değişken_adı;
int sayac;



Örnekler
int x;
int x1, y1, z1;
long d, d1;
char c;
char c1, c2, c3;
float a;
float a1, a2, a3;
int u[3];
float k[10*20];
int x = 1;
int x1 = 10, y1 = 20, z1 = 30;
char c = ‘a’;
float a = 123.45;



C'de Veri Türleri


Veri Türleri

Veri tipi (data type) program içinde kullanılacak değişken, sabit, fonksiyon isimleri gibi tanımlayıcıların tipini, yani bellekte ayrılacak bölgenin büyüklüğünü, belirlemek için kullanılır.
Bir programcı, bir programlama dilinde ilk olarak öğrenmesi gereken, o dile ait veri tipleridir. Çünkü bu, programcının kullanacağı değişkenlerin ve sabitlerin sınırlarını belirler.


C programlama dilinde 5 tane temel veri tipi bulunmaktadır.
char: karakter veriler
int: tamsayı veriler
float: tek duyarlıklı kayan noktalı sayılar
double: Çift duyarlıklı kayan noktalı sayılar
void: Değer içermeyen verilerdir.


Bazı özel niteleyiciler temel tiplerin önüne gelerek onların türevlerini oluşturur:
short
long
unsigned
Niteleyiciler değişkenin bellekte kaplayacağı alanı değiştirilebilirler.
Kısa (short), uzun (long), ve normal (int) tamsayı arasında yalnızca uzunluk farkı vardır. Eğer normal tamsayı 32 bit (4 bayt) ise uzun tamsayı 64 bit (8 bayt) uzunluğunda ve kısa tamsayı 16 biti (2 bayt) geçmeyecek uzunluktadır.


İşaretsiz (unsigned) ön eki kullanıldığı taktirde, veri tipi ile saklanacak değerin sıfır ve sıfırdan büyük olması sağlanır. İşaretli ve işaretsiz verilerin bellekteki uzunlukları aynıdır. Fakat, işaretsiz tipindeki verilerin üst limiti, işaretlinin iki katıdır.

Kısa ve uzun tamsayı tutacak tanımlayıcılar için int anahtar kelimesinin yazılmasına gerek yoktur.
short s;  /* short int s; anlamında */
long k;   /* long int k;  anlamında */


Bir C programı içerisinde, veri tiplerinin bellekte kapladığı alan sizeof operatörü ile öğrenilebilir. İlgi çekici olan, bu alanların derleyiciye??? ve işletim sistemine??? bağlı olarak değişiklik göstermesidir.





C Programlama Dili Elemanları

Tanımlayıcılar:

Programcı tarafından oluşturulurlar.
Programdaki değişkenleri, sabitleri, kayıt alanlarını, özel bilgi tiplerini vb. adlandırmak için kullanılan kelimelerdir.
Tanımlayıcılar, yerini tuttukları ifadelere çağrışım yapacak şekilde seçilmelidir.
İngiliz alfabesindeki A-Z veya a-z arasındaki 26 harf ile 0-9 arası rakamlar kullanılabilir.
Sembollerden sadece alt çizgi _ kullanılabilir.
Tanımlayıcı isimleri harfle veya alt çizgiyle başlayabilir.
Tanımlayıcı ismi, rakamla başlayamaz veya sadece rakamlardan oluşamaz.
Tanımlayıcılar boşluk karakterini içeremezler.

Anahtar Sözcükler
C dilinde 32 adet anahtar sözcük vardır ve hepsi küçük harfle yazılır. Anahtar sözcükler tanımlayıcı olarak kullanılamazlar.






Diğer mühendislik alanlarında durum nasıl?


Diğer mühendislik alanlarında durum nasıl?
(Yazılımcıdan istenilenler diğer bir alandaki insanlardan istenseydi nasıl bir hikaye çıkardı.)

Sayın mimar;
Lütfen bana bir ev inşa ediniz.Ama tam olarak ne istediğimden emin değilim.Bu nedenle kendi taktirinizi kullanınız.
Evimde 2 ila 45 adet yatak odası olsun. Yatak odalarını kolaylıkla ekleyip kaldırabileyim bir şekilde planlayınız. Siz bana planları getirin ben nihaiyi kararları ona göre vereyim. Ayrıca her bir plan için tek tek maliyet dökümlerini de getirmeyi unutmayınız.Böylelikle bende bana uygun olanı seçebilirim.
Şunu da aklınızda tutun ben sonuçta maliyeti düşük olanı seçeceğim.Maliyeti şu anki evden daha düşük olmalı. Şu anda yaşadığım evde çeşitli aksilikler var(Mutfak ile ilgili sorunlarım var. Ben evde yürüdüğümde eşyalar sallanıyor ayrıca yalıtımda çok iyi değil.)
Ayrıca bu evi yıllık olarak tutmak istiyoruz yani önümüzdeki sene maliyeti daha düşük bir ev bulursak çıkarım haberiniz olsun. Tararımı yaparken de yıllık masrafları oldukça az tutun fazla paramız yok.
Lütfen en son malzemeleri kullanın ve en güzel şekilde tasarlamaya çalışın.Eğer böyle yaparsanız ev gerçekten çok güzel olur. Aaa unutmadan, mutfakta benim 1952 model Gibson buz dolabını barındıracak şekilde olsun.
Evin güvenliği bizim için çok önemli; kanunlar karşısında belirlenmiş yönetmeliklere göre evi hazırlayın yoksa olmaz. Benim eşimin annesi yılda en az bir kere bizi ziyarete gelir geldiğinde ev ile ilgili tasarım ve diğer konularda her hangi bir eksiklik bulmaya çalışacaktır aman dikkat edelim.
Eğer anneciğim her hangi bir yerini beğenmez ise o kısım ile ilgili değiştirme hakkımı elimde tutmak isterim. Lütfen şu anda beni küçük tararım ayrıntıları ile rahatsız etmeyin. Bu tasarım sizin işiniz karışmak istemem. Büyük resmi düşünün ona göre tasarlayın. Bu arada eşim yeşil renkli halıları sever tasarım buna da aklınızda tutun.Ev ile ilgili kaynak sorununu düşünmeyin. Sizin ilk önceliğiniz detaylı bir ev planı ve tanımlamaları oluşturmak. Tabi şunu da beklerim,  ben tasarımı seçtikten sonra 48 saat içinde çatının ilk şekli oluşmuş olsun.
Evi tasarlarken önce ve sonra olabilecek isteklerimi göz önemde bulundurun. Bu evi satmak istiyorum o nedenle potansiyel alıcıları için cazip olmasını da dikkat edin.
Bizim yan komşularda evlerini geçen sene yenilediler onların evlerinin de çok güzel yönleri var. Onların ayrıca büyük bir yüzme havuzları var. İnanıyorum ki güzel bir tasarım ile maliyetleri yukarı çekmeden buna benzer bir yüzme havuzu yapabilirsiniz.
Tasarımları  komple bir set olarak hazırlayın, yeni nesil inşaatçılık yöntemleri kullanabilirsiniz, bakın sizin için ne büyük bir kolaylık bu günlerde böyle anlayışlı müşteri bulmak çok zor. Ama tasarımla ilgili konuları değiştirmeyin yoksa maliyet artar aman maliyetlere dikkat.
Böyle bir proje üzerinde çalışmaktan çok mutlu olduğunuzu düşünüyorum. Bunun gibi tasarımları çok özgür bir şekilde yapılacak olmak ve yeni inşaat yöntemleri kullanmak güzel olsa gerek.
Unutmadan bu arada karım biraz önce söyledi evde olacak bu işlerden ötürü çok ses çıkmasın. Tabi mimar sissiniz nasıl olacağını da siz bizden daha iyi bilirsiniz.
Daha önceden inşaat yaptırma işine girdim ama olmadı umarım bu sefer olur.Eğer siz yapamazsanız başka bir mimar bulurum.
Belki de bu evi yenilemek yerine güzel bir tatil yapsam daha iyi olur neyse başladık bir kere beni bilgilendirin. Sizden haber bekliyorum.






Eğer yazılım içerisinde bir hata bulmuş ve diğerlerini keşfedemiyorsanız ne olur?

Parody “Ormanda bir ağaç düşerse gerçekten ses yapar mı?”
Görülemeyen hata hatamıdır?
Görülemeyen hatalara örtük(gizli) hata“latent bugs”

Bulunan bütün hatalar çözümlenemezmi ? Neden?

Yeterli bilgi birikimi eksikliği!
Bazen yeterli zaman yoktur!
Bazı son tarihler ertelenemez.
Bazen çok riskli olabilir!
Murphy’nin koduna dokunma
Buna değer mi!
Bazı ek özellikle bekleyebilir!
Neden bir sonraki sürüm için müşteriden ücret almayalım ki?
Kod ile ilgili bir hata olmaya bilir!
Tanımlama yanlışlığından olabilir

Birazda Terminoloji.


Verification: Biz ürünümü doğrumu yapıyoruz?
Yazılım şartnamedeki özellikleri ve tanımlamaları karşılanıyor mu?
Validation: Doğru ürünü mü yapıyoruz?
Ürün kullanıcı ihtiyaçlarını karşılıyor mu?
Kalite Güvencesi
Yöntem ve standartlar uygulayarak; yazılım sürecleri içinde meydana gelen hataları önle.

Yazılım Testine İlişkin


Murphy kanunu: (Eğer yazılım hatalı bir sonuç üretiyorsa bundan yazılımı üreten kişiler sorumludur ve bu sorunu onlar halletmelidir!
Bu kural Edward Murphy tarafından yazılım geliştirimi ile ilgili bir ölçü geliştirmek için ortaya atılmıştır.)

“Program testti, ancak hataların varlığını göstermek için kullanılır onların yokluğunda göstermek için değil!” Edsger Wybe Dijkstra 



“Test ile hata bulabilirsin ama hala daha fazlası vardır”
Hatalar nerelerden kaynaklana bilir.
Programcılar kötü günleri olabilir.
Programcılar aynı hataları yapmak eğilimindedir.
Bazı hatalar buzdağının sadece ucu gibidir.
Boris Beizer yaklaşımı: Daha fazla yazılım daha fazla testti beraberinde getirir “pestisit paradoksu”. Bu nedenle Boris Beizer bağışıklık testleri kavramını ortaya attı. Çözüm sürekli yazılımın farklı bölgelerinde yazılım kullanımı ile ve test kodu ile yazılımları test edin.

Yazılım Testi ile ilgili zorluklar.


Kaç tane test case oluşturulmalı? (Cevabı o kadar kolaymı?)
Yazılımın mevcut olan bütün girişlerinin doğru olarak alındığından emin olup.
Bütün girişleri ve çıkışları kontrol etmek.
Tanımlamaların doğru olduğu bilinmesi
Yazılım üretiminin ilk safhasında oluşan isterler yorumlamaya açık olması
Yazılım içerisine alınan giriş sayıları çok fazla olması.
Yazılımda oluşturulan çıkış sayıları çok fazla olması.
Yazılım içerisinde oluşan yol (path) sayısı çok fazla olması.
Girişleri test etmedin ve bir hata ile karşılaştın ne olur?
(Risk:Güven kaybı,para,zaman,vb . Bu yüzden testi yapan kişi üzerinde baskı kodlayan kişiye göre daha fazladır.)
Yazılım geliştirmede isterler oldukça sıra dışı ve özgürdür.
(Rekabet çok fazladır, Yaşam döngüleri çok hızlıdır. Yazılımı değiştirme yazılımcılara dışarıdan bakan kişiler için “kolaydır.”)

Yazılım Testine İlişkin…

Yazılımın testi yazılım risk temelli olarak yapılmalıdır.
  • Eğer yazılım içerisindeki bütün girişleri test edemez ise yazılım içerisinde risk almış olursun!

Daha fazla hata bulduğunda daha fazla test yapmalısın. (Ne Kadar? Kaç tane test case oluşturulmalı.)
  • Bulunan bütün hataların düzeltildiği söylenemez. (Neden Bütün Hataları düzelttiğimiz söylenemez?)
Tanımlamalar nihaiyi değildir.
Yazılım geliştiriciler arasında Yazılım testleri popüler değildir.
  • Yazılım Test mühendisinin amacı: Hataları bulmak,Hataları erken safhalarda oluşmadan bulmak.Hataların düzeltildiğinden emin olmak.
  • Popülerlik için ipuçları: Hataları erken bul.,Ani sinirlenme.,Kötü haberleri erkenden proje yöneticisine ulaştırma
Yazılım testi bir disiplindir ve yazılım projeleri içerisinde profesyonelce incelenmelidir.
  • Yazılım kolay ve yönetilebilir olduğunda(parçaları birbirinden ayrılmış) yazılımı test etmek daha kolaydır. Aksi durumlarda test işlemi daha zordur.
  • Günümüzdeki yazılımlar çok büyük ve karmaşık o nedenle test için
    • Yöntemler
    • Araçlar

Yazılım Test Modellileri ve Yazılım Geliştirme Modelleri

Yazılım geliştirme modelleri her zaman kullanılır mı?İdeal midir?

Plato’nun “ideal” ile ilgili ilginç benzetmeleri

"Fiziksel nesneler ve fiziksel olaylar, ideal veya mükemmel formların gölgeleridir. Onlar ölçeğine yaklaşabildiği kadar mükemmeldirler."

Waterfall modeli mükemmelidir?

Müşterinin ihtiyaçları hiçbir zaman tam olarak tanımlanamaz! Mükemmel olmamasının ikinci neden ise; bütün durumların gerçekleştirilmesi için yeterli zaman ve kaynak yoktur.
Bu nedenlerden dolayı sadece waterfall modeli değil hiç bir yazılım geliştirme modeli mükemmel değildir. Ancak yazılım geliştirmede seçilecek bir yazılım geliştirme modeli kullanılmalıdır.