24 Ekim 2016 Pazartesi

Karakter Dizileri (Strings)

Bazı programlama dillerinde karakter dizilerini tutmak için özel veri türleri (string, vb.) bulunmaktadır.

Ancak C programlama dilinde böyle bir veri türü olmadığı için yerine karakterlerden oluşan bir boyutlu diziler kullanılır.

Karakter dizilerine özel olarak, karakter dizilerinin sonuna sonlandırıcı karakter olarak adlandırılan bir simge eklenir.

Sonlandırıcı karakter:
Dizinin bittiği yeri gösterir.
ASCII tablosunun sıfır numaralı ('\0') karakteridir.


Karakter dizilerine iki şekilde başlangıç değeri verilebilir:
    (1) char s[7] = {'d','e','n','e','m','e','\0'};
    (2) char s[7] = "deneme";

Birinci tanımlamada sonlandırıcı karakter programcı tarafından konmalıdır.

İkinci tanımlamada ise buna gerek yoktur. Çünkü, sonlandırıcı karakter bu atamayla, derleyici tarafından eklenir.

Bir karakter dizisini klavyeden okumak için C'nin standart gets( ) fonksiyonu kullanılır.

stdio.h dışında yeni bir kitaplığı C programına dahil etmeye gerek yoktur.

Bu fonksiyon herhangi bir indeks tanımlamadan karakter dizilerinin okunmasını sağlar.

Okuduğu karakter dizisinin sonuna satır sonu işaretini değil, NULL değerini yerleştirir.


gets() fonksiyonu, klavyeden girilen karakter dizilerini, herhangi bir ek tanımlamaya gerek duymadan bir dizi içine yerleştirir.

Dizinin her bir karakteri dizinin farklı bir hücresi içine yerleşir.

Örnek:
    char ad[20];
         ...
        gets(ad);

Çok boyutlu dizi örnekleri:

Çok boyutlu diziler tek boyuta indirgenerek bellekte tutulurlar.
Tek indisli dizilerde olduğu gibi, çok indisli dizilere de başlangıç değeri vermek mümkündür.
Örneğin 3 satır ve 4 sütunlu (3x4=12 elemanlı) bir x matrisinin elemanları şöyle tanımlanabilir:

int x[3][4] = {11,34,42,60, 72,99,10,50,  80,66,21,38};

int x[3][4] = {11,34,42,60,  /* 1. satır elemanları */
                       72,99,10,50,  /* 2. satır elemanları */
                       80,66,21,38}; /* 3. satır elemanları */

Çok Boyutlu Dizi

Bir dizi aşağıdaki gibi bildirildiğinde bir boyutlu (tek indisli) dizi olarak adlandırılır. Bu tip dizilere vektör denir.
    int x[5];
Bir dizi birden çok boyuta sahip olabilir. Örneğin iki boyutlu y dizisi şöyle tanımlanabilir:
    int y [5] [10];
İki boyutlu diziler matris olarak adlandırılır.
İlk boyuta satır, ikinci boyuta sütün denir. y matrisinin eleman sayısı 5x10=50 dir.



17 Ekim 2016 Pazartesi

Ms Dos ile Basit Matrix Ekranı

Örnekteki Ms_Dos Komutların Anlamı

@echo off  Cmd ekranındaki eski komutların görüntülenmesini engeller.
title Cmd ekranının başlık kısmındaki yazıyı değiştirir.
color Yazı rengini değiştirir.1 ile F arasındaki (Hexedecimal)sayılar verilebilir.Ör color c
pause
mode Ekran genişliğini ayarlar
:top 
echo Ekrana yazı yazdırmak için kullanılır.
%random%  Rasgele sayı oluşturmak için kullanılır.
goto top  C dilinde kullanılan goto deyimi ile aynı şekilde kullanılır.
Burada :top kullanılarak sonsuz döngü oluşturulmuştur.



Güvenli yazılım geliştirilmesinin temel adımı.

Tehlikeleri erkenden fark et ve önlem al (Eğer yangından koruyorsan yangına dayanıklı materyal kullan.)
Dezavantajı maliyet,zaman
Tehlike meydana geldiğinde var olan prosedürleri uygula eğer yok ise proje ekibi ile prosedürleri oluştur.
Dezavantajı maliyet,zaman
Varsa deneyimlerden yararlanıp pratikleri uygula.(Her bir sistemin ihtiyaçları ve gereksinimleri farklı olduğunu unutma)
Dezavantajı Risk,maliyet,zaman,performans

Hatalara Karşı

Hata toleransı = Kullanıcının rastgele bulduğu hatalardan ibaret olsun(Kodlayıcı yada test sorumlusu bulduğu bir hatayı göz ardı etmesin)
Buharlı motorları üreten mühendisler çok ağır masayı saatlerinde çalışıyorlardı(Onlarca sorun ortaya çıktı). Bu nedenle yazılım oluşturmada masayı saatleri belirle(Örnek Extreme Programming  pratiği haftada40 Saat).
Yazılım mühendisinin proje bilgisi çok iyi olmalı.Oluşabilecek  sıkıntıları erkenden fark edip ekibini kurtarmalı.

Nedenler

Yazılım Analojisi.
Yazılım analog N-sürümü programlama (NVP) denir:
Bizim N tane yazılım ekibimiz var. Her biriside yazılım ile ilgili ihtiyaçları bağımsız olarak kodluyorlar.
Her bir yazılım çalıştırılıyor ve bunların her biri bir oy alıyor.

NVP’lerin potansiyel sorunu nedir?
Tüm yazılım arızaları tasarım hatalarından kaynaklanmaz.
Genellikle, programcılar hataları yanlış yorumlayabilirler.
Gereksinimler; genellikle yanlış anlaşılır. Bu nedenle N ekipleri aslında doğru yorumu yapan grup sayıyı genellikle 0 yada 1 dir.

Algoritmayı Kurtarmak için temel olarak yapılması gerekenler.
Ortak hataları azaltmaz için algoritmayı parçalar halinde oluştur.
Kabul testlerini kodlayan kişi dışında bağımsız başka bir yazılımcıya oluştur.
Kodlama standartları belirle.




Mühendislik temelleri üzerinde çalışılmalı!

Kimse yenilik ve buluşların hayati olduğunu reddetmiyor, ama aynı zamanda mühendislik temeller üzerinde çalışmak gerekir:
Temel kuralları, ilkeleri ve yapısı
Değerlendirme kriterleri
Karşılaştırma yoluyla
Teorik sınırlarını ve yeteneklerini belirle
Üretim araçlarını belirle
Matematiksel modeller kullan ama gerçek dünyada örnekler üzerine kullanılacağını unutma.

Sorgulanan yeni yöntemler.

"Örgün yöntemlerde matematik vardır. Doğru matematik yöntemleri süreçleri iyileştirir. Bu nedenle, biçimsel yöntemler yazılım kalitesini arttıracaktır. “
Bunun doğru olduğunu net değil!
Hangi yöntem ile yazılım geliştirilecek?
Uygulayıcıların eğitim?
Siyasi konular? Maliyeti? Ölçek?
Aracı olgunluk ve uygunluğu?
Daha iyi sonuç sistemleri var mı? Güvenli? Daha küçük?
Büyük? Daha anlaşılır?

Analogies

Buhar motorları teknolojisi kazan geliştirilme teknolojisinin gerisinde kaldı.
Yazılım ile olan ilişkisi………………………….....

Ne yapılmalı?
Zaman testleri yapılmalı ve iyi mühendislik ilkeleri kullanılmalı:
Doğrulama testleri, onaylama testleri yapılmalı. İkili ve üçlü kontrol sistemleri kullanılmalı.
Süreçleri durdurmadan süreçler üzerinde kontroller yapılmalı.

Yazılım Mühendisliği Temelleri.
Kazan patlamaların nedenleri; çok az bilimsel anlayış vardı. Benzer şekilde, Yazılım mühendisliği disiplini çok yeni ve biz hala temeller üzerinde çalışıyoruz.
İyi bir tasarım nedir?
Yazılım bileşenlerinin belirleme.
Güvenlik kritik sistemler.
Formüllerle ve resmi yöntemlerin rolü
Doğrulama ve onaylama
Sistem evrim

Sorunlar
Bilginin paylaşılmaması (Şirketlerin bilgi paylaşımlarından korkmaları.) Analitik veri yok yada çok az!!!
Bilgi teknolojisi çok hızlı ilerliyor. Bunun sonucu pek çok farklı alanda yazılımlar kullanılıyor. (İsterler artıyor karmaşıklık artıyor.)
Yazılımları kontrol etmek,değerlendirmek ve geliştirmek için çok kısa bir zamanımız var.