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);
24 Ekim 2016 Pazartesi
Ç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ı */
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.
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.
@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
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ı.
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.
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?
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.
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.
Kaydol:
Kayıtlar (Atom)