Görev Verilemeyecek Personel 2015-1

Programlama Dilinin Özellikleri
*Kaynak Kodun Taşınabilirliği: Taşınabilirlik (portability), bir
sistem için yazılmış kaynak
götürüldüğünde hatasız olarak
çalıştırılabilmesi demektir.
kodunun başka bir sisteme
derlenerek, doğru bir şekilde
Programlama dilleri ISO (International Standard Organization) ve
ANSI
(American
National
Standard
Institute)
tarafından
standartlaştırılırlar. İlk olarak 1989 yılında standartları oluşturulan C
dili, diğer programlama dillerine göre daha taşınabilir özelliğe sahiptir.
*Programın Verimliliği: Verimlilik (efficiency), bir programın hızlı
çalışması ve daha az bellek kullanma özelliğidir. Programın çalışma hızı
ve bellek kullanımının değeri bir çok etkene bağlıdır fakat temelde
programlayıcının ve programlama dilinin tasarımının verimlilik
üzerinde etkisi şeklinde iki başlıkta toplanabilir. Bu açıdan bakıldığında
C verimli bir dildir.
Programlama Dilinin Özellikleri
*Programlama Dilinin Kullanım Alanı: Bazı diller özel uygulama
alanları için tasarlanır. Bazı diller ise geniş bir uygulama alanına sahiptir.
C dili bir sistem programlama dili olarak doğmasına karşın, güçlü
yapısından dolayı genel amaçlı bir programlama dili haline gelmiştir.
Uygulama alanlarına göre programlama dilleri:
• Bilimsel ve mühendislik uygulama dilleri (Pascal, C, Fortran. C temelli
programlama dilleri akademik çalışmalarda sıkça kullanılmaktadır).
• Veri tabanı dilleri (Xbase, Oracle Forms, Visual Foxpro, MySQL).
• Genel amaçlı programlama dilleri (Pascal, C, Basic).
• Yapay zeka dilleri (Prolog, Lisp).
• Simülasyon dilleri (GPSS, Simula 67).
• Makro dilleri (awk, Perl, Python, Tcl, JavaScript).
• Sistem programlama dilleri (Simgesel makine dilleri, BCPL, C, C++,
occam).
Örneğin; UNIX işletim sisteminin %80’lik bir kısmı C dili ile, geri kalanı
ise simgesel makine dili ile yazılmıştır.
Programlama Dilinin Özellikleri
*Programlama Dilinin Alt Programlama Özelliği: Bir bütün olarak
çözülmesi zor bir problemin parçalara ayrılarak çözülmesi ve sonra
parçalar arasında bağlantının sağlanması programlamada sıkça kullanılan
bir yöntemdir.
Alt programlama yeteneği, bir programlama dilinin programı parçalar
halinde yazmayı desteklemesi anlamına gelir.
C dilinde de alt programlama özelliği mevcuttur ve bu alt programlar C
dilinde fonksiyon olarak adlandırılır.
Programlama Dilinin Özellikleri
C Programlama Dili ve Özellikleri:
1.
2.
3.
4.
5.
Orta seviyeli bir programlama dilidir. C dili hem yüksek seviyeli dillerin
kontrol deyimleri, veri yapıları gibi avantajlarına sahipken, hem de
bitsel işleçler gibi makine kodu deyimlerini yansıtan işleçlere sahiptir.
Yani hem makinenin algısına, hem de insan algısına yakın bir dildir.
Verimi yüksek bir dildir. C dili kullanarak program yazmak, aynı işlemi
yapacak programı makine dilinde yazmaktan daha kolaydır. Bunun
yanında programın verimi de aynı oranda düşmez.
Günümüzde sistem programları genellikle C dili ile yazılmaktadır (örn;
işletim sistemleri, aygıt sürücüleri).
C algoritmik bir dildir. C dilinde program yazmak için yalnızca dilin
sözdizimini ve anlamsal yapısını bilmek yeterli değildir. Aynı zamanda
genel algoritma bilgisi de gerekir.
Taşınabilirliği çok yüksek bir dildir.
Programlama Dilinin Özellikleri
C Programlama Dili ve Özellikleri (devamı):
6.
7.
C, ifade gücü yüksek, okunabilirlik özelliği güçlü bir dildir.
C çok esnek bir dildir. Diğer dillerden farklı olarak programcıya
kısıtlamalar getirmez.
8. C güçlü bir dildir, çok iyi tasarlanmıştır. Hatta, C’deki işleçler ve
yapıların bir çoğu daha sonra başka programlama dilleri
tarafından da benimsenmiştir.
9. C verimli bir dildir. C’de yazılan programlar, dilin düzeyinin düşük
olması nedeni ile hızlı çalışır. Verimlilik konusunda assembly
dillerle rekabet edebilir. C’nin standart bir kütüphanesi vardır. Bu
kütüphane ile sık yapılan işlemler için ortak bir arayüz
sağlanmıştır.
10. C programlama dilinin eğitimi diğer dillere göre daha zordur.
11. C dilinin esnek ve güçlü olması programcının hata yapma riskini
arttırır. C dilinde yazılan kodlarda yapılan yanlışlıkların
bulunması göreceli olarak daha zor olabilir.
Tarihçe
C Programlama Dilinin Tarihçesi:
C, 1970’li yılların başlarında AT&T Bell laboratuarlarında geliştirilmiş bir
programlama dilidir.
C dilinin, UNIX işletim sisteminin bir yan ürünü olarak doğduğu
söylenebilir.
İlk olarak Dennis Ritchie tarafından UNIX işletim sisteminin yazılmasında
kullanılan C dili, 1983 yılında ANSI tarafından standartlaştırıldı.
Algoritma ve Akış Diyagramları
Bilgisayar yardımıyla çözülecek olan
aşamalardan geçmesi gerekmektedir.
1.
2.
3.
4.
5.
6.
7.
bir
problemin
aşağıdaki
Problemin tanımı
Çözüm yolunun tespiti
Algoritmanın hazırlanması
Akış diyagramının çizilmesi
Programın hazırlanması
Hazırlanan programın test edilmesi
Uygulama
Yukarıdaki sıralamada da görüldüğü gibi, algoritma ve akış diyagramının
hazırlanması, programın yazılmasında önemli bir aşamadır.
Algoritma ve Akış Diyagramları
Problemin Tanımı:
Bir problemin çözümünde ilk adım olan problemin tanımı, problemin açık
seçik bir dille ifade edilmesidir. Program hazırlama aşamasına geçilmeden
önce problem iyice anlaşılmalıdır. Bu aşamada, hazırlanacak olan
programın ana hatları belirlenir.
Çözüm Yolunun Tespiti:
Bu aşamada, problemin işleyişi hakkında bilgiler verilir. Hangi bilgilerin
girileceği, veri giriş-çıkış ekran formlarını şekil, kullanılacak olan yapıları,
sonuçta hangi verilerin alınacağı ve sonuçların kullanıcıya nasıl ve hangi
yollarla yansıtılacağı açık olarak belirlenir.
Algoritma ve Akış Diyagramları
Algoritma:
Bir problemin ideal çözümüne giden yola algoritma denir. Algoritması
hazırlanan bir programı herhangi bir programlama dili ile hazırlamak
çok kolay olabilir. Bu nedenle, yazılacak programın dili değil de,
algoritması en önemli kısmıdır. Programı çalıştıracak algoritmayı en iyi
şekilde çözümledikten sonra, kullanılacak dilin yapısına göre kodlama
aşamasına geçilir.
Problemin çözümünde işlem akışının nasıl yapılacağı, hangi durumda
hangi şartların kullanılacağı, bu şartlara göre hangi işlemlerin
yürütüleceği net bir şekilde ifade edilir. Algoritmada işlem akışı
yukarıdan aşağıya doğru yürütülür. Program akışının değiştirilmesi
durumunda gerekli görülen adımlara dallanmalar yapılabilir.
Algoritma ve Akış Diyagramları
Her algoritma aşağıdaki kriterleri sağlamalıdır:
• Girdi: Sıfır veya daha fazla değer dışarıdan verilmeli.
• Çıktı: En azından bir değer üretilmeli.
• Açıklık: Her işlem (komut) açık olmalı ve farklı anlamlar içermemeli.
• Sonluluk: Her türlü olasılık için algoritma sonlu adımda bitmeli.
• Etkinlik: Her komut kişinin kalem ve kağıt ile yürütebileceği kadar basit
olmalıdır.
Her program için sonluluk özelliği geçerli değildir. Örneğin işletim
sistemleri sonsuza dek çalışan programlara örnektir.
Algoritma ve Akış Diyagramları
ÖRN: Girilen iki sayının toplamını hesaplayan algoritma:
Bu problemi çözmek için başlangıçta iki sayı girilmelidir. Girilen sayıların
toplamı hesaplanmalı ve sonuç görüntülenmelidir. Bu işlemi algoritma
olarak ifade edelim:
Başla
1. sayının girilmesi (A)
2. sayının girilmesi (B)
Toplama işleminin yapılması (T=A+B)
Toplama sonucunun görüntülenmesi (T)
Son
Bir program içerisinde verileri tutmak, bu veriler üzerinde işlem yapmak için değişkenlerden
yararlanılır. Değişken, bilgisayar hafızasında bir hücrenin ismi olarak düşünülebilir. Girilen
veriler, programının işleyişi sırasında veya sonunda ürettiği değerler bu hücrelerde tutulur.
Bu hücrelerin büyüklükleri program başında yapılan tanımlamalarla belirlenir.
Yukarıdaki örnekte kullanılan değişkenler nelerdir?
Algoritma ve Akış Diyagramları
ÖRN: Girilen iki sayıdan büyük olanı görüntüleyen algoritma:
Başla
1. sayının girilmesi (A)
2. sayının girilmesi (B)
Eğer A büyük B ise A’nın değerini yaz, değilse B’nin değerini yaz
Son
Aynı işlemi ikinci bir yolla yapmak da mümkündür.
1)
2)
3)
4)
5)
6)
Başla
1. sayının girilmesi (A)
2. sayının girilmesi (B)
Eğer A büyük B ise A’nın değerini yaz: 6 nolu adıma git
B’yi yaz
Son
Algoritma ve Akış Diyagramları
Eğer … ise sözcük grubu ile bir test işlemi yapılmaktadır. Bir test
işleminin sonucu ya doğru ya da yanlıştır. Şart doğru ise bunu yap,
değilse şunu yap şeklinde bir yönlendirme yapılmaktadır. İki farklı
kullanım şekli mevcuttur.
Eğer şart ise …..
Eğer şart ise ….. değilse …..
Şart
Şart
Doğru
Yanlış
Yanlış
Doğru
Algoritma ve Akış Diyagramları
ÖRN: Girilen 3 sayının en büyüğünü bulan algoritma:
Başla
1. sayının girilmesi (A)
2. sayının girilmesi (B)
3. sayının girilmesi (C)
İlk sayıyı en büyük olarak al (EB=A)
Eğer B > EB ise B’yi en büyük olarak al (EB=B)
Eğer C > EB ise C’yi en büyük olarak al (EB=C)
En büyük sayıyı görüntüle (EB)
Son
NOT: Atama işlemlerinde, sağdaki ifadenin değeri soldaki değişkene
aktarılır. EB=A ifadesi ile EB değişkenine A değişkeninin değeri
aktarılmaktadır.
Algoritma ve Akış Diyagramları
ÖRN: Girilen 10 adet sayının toplamını ve ortalamasını hesaplayan algoritma:
Burada akla ilk gelen, 10 adet sayı için farklı 10 değişkenin kullanılmasıdır. Bu
yaklaşımla, girilecek sayının miktarının 1000 gibi bir rakam olduğu düşünüldüğünde,
kullanılacak değişken miktarı oldukça fazla olacaktır ve algoritmada da bu
değişkenlerin ayrı ayrı belirtilmesi gerekmektedir. Bu probleme çözüm olarak
tekrarlama işleminden yararlanılmaktadır.
Aynı işlem C dili ile aşağıdaki gibi yapılır.
3)
:
S=0
:
:
S=S+1
:
Eğer S < 10 ise 3’e git
:
S = 0;
do{
:
S = S + 1;
:
} while(S<10)
:
Algoritma ve Akış Diyagramları
Tekrarlama işlemi kullanılarak,
aşağıdaki gibi oluşmaktadır.
2)
yukarıdaki
problemin
algoritması
Başla
S = 0, T = 0
Sayının girilmesi (A)
T=T+A
S=S+1
Eğer S < 10 ise 2 nolu adıma git
ORT = T / 10
Ortalama değeri yaz (ORT)
Toplam değeri yaz (T)
Son
ÖDEV: 10 öğrenciye ait girilen isim ve yaş verilerinden en genç ve en
yaşlıyı bulan algoritma?
Algoritma ve Akış Diyagramları
ÖRN: Bir işletme çalışanlarına, normal maaşlarına ek olarak, yaptıkları
fazla mesai saatlerine göre ek bir ücret daha ödenmektedir. Ek ücret
aşağıdaki gibi hesaplanmaktadır:
1-10 saat için saat başına 10 TL
11-20 saat için saat başına 13 TL
21 ve daha fazla saat için saat başına 15 TL
Buna göre personelin alacağı toplam ücreti hesaplayan algoritma:
Başla
Normal maaşın girilmesi (NM)
Fazla mesai saatinin girilmesi (FM)
Eğer FM <= 10 ise EK = FM * 10
Eğer FM > 10 ve FM <=20 ise EK = FM * 13
Eğer FM > 20 ise EK = FM * 15
Toplam maaşın hesaplanması TM = NM + EK
Toplam maaşı yaz (TM)
Son
Algoritma ve Akış Diyagramları
ÖRN: Girilen 20 adet sayıyı alarak;
a) sayıların ortalamasını,
b) 100’e eşit ve büyük sayıların sayısını,
c) 100’den küçük sayıların ortalamasını,
d) en büyük sayıyı,
e) en küçük sayıyı bulan algoritma:
Girişte sıfırlanan değişkenler:
X: girilen sayı
S: girilen sayı adedi
T: sayıların toplamı
Y: 100’den büyük sayıların miktarı
K: 100’den küçük sayıların miktarı
KT: 100’den küçük sayıların toplamı
EB: en büyük sayı
EK: en küçük sayı
Algoritma ve Akış Diyagramları
3)
Başla
S = 0, K = 0, Y = 0, T = 0, KT = 0
Sayının girilmesi (X)
S= S + 1
T=T+X
Eğer X >= 100 ise Y = Y + 1
Eğer X < 100 ise K = K + 1, KT = KT + X
Eğer S = 1 ise EB = X, EK = X
Eğer X < EK ise EK = X
Eğer X > EB ise EB = X
Eğer S < 20 ise 3 nolu adıma git
ORT = T / S
K_ORT = KT / K
Sayıların ortalamasını yaz (ORT)
100’den büyüklerin sayısını yaz (Y)
100’den küçüklerin ortalamasını yaz (K_ORT)
En büyük sayıyı yaz (EB)
En küçük sayıyı yaz (EK)
Son
X: girilen sayı
S: girilen sayı adedi
T: sayıların toplamı
Y: 100’den büyük sayıların miktarı
K: 100’den küçük sayıların miktarı
KT: 100’den küçük sayıların toplamı
EB: en büyük sayı
EK: en küçük sayı
Algoritma ve Akış Diyagramları
Akış Diyagramları:
Akış diyagramları, problemin şekille ifade edilmesidir. Bunun için kullanılan standart şekillerden
bazıları aşağıda verilmektedir.
Başlangıç ve Bitiş:
Program başında ve sonunda kullanılır.
Atama ve Hesaplama:
Her türlü atama ve hesaplama işlemleri için
kullanılır.
Veri Girişi:
Klavyeden yapılan girişler için kullanılır.
Girilen verinin tutulacağı değişken yazılır.
Bilgi Çıkışı/Görüntüleme:
Kullanıcıya yansıtılacak bilgileri belirtmek için
kullanılır.
Karşılaştırma/Test:
Program akışını istenen şartlara göre
değiştirmek için kullanılır. Bir şartın sonucu
ya doğru, ya da yanlıştır. Doğru (E), yanlış
(H) ile gösterilir.
Döngü:
Bir işlem bloğunun birden fazla kere tekrar
edilmesinde kullanılır.
Algoritma ve Akış Diyagramları
ÖRN: Girilen iki sayının toplamını hesaplayan programın akış diyagramı:
Başla
X
X, Y
Y
T=X+Y
T
Son
Algoritma ve Akış Diyagramları
ÖRN: Girilen üç sayının en büyüğünü bulan programın akış diyagramı:
Başla
A,B,C
EB=A
B>EB
E
EB=B
H
C>EB
H
EB
Son
E
EB=C
Algoritma ve Akış Diyagramları
Başla
S=0
X
ÖRN: Girilen 10 adet
S=S+1
sayının en büyüğünü
bulan programın akış
diyagramı:
S=1
E
EB=X
H
X>EB
H
E
S<10
H
EB
Son
E
EB=X
C Programı Oluşturmak
C dilinde yazılan bir programın çalıştırılabilir hale getirilebilmesi için
aşağıdaki süreçlerden geçilir:
1.
Kaynak dosyanın oluşturulması:
Kaynak dosya metin düzenleyici bir programda (text editörü)
yazılır. Kaynak dosya, bir metin dosyasıdır. C dilinin kurallarına göre
yazılan dosyaların uzantısı genel olarak “.c”
seçilir.
2.
Kaynak dosyanın derleyici (compiler) tarafından derlenmesi:
Bir programlama dilinde yazılmış programı başka bir programlama
diline
çeviren
programlara
“çevirici
(translator)”
denir.
Dönüştürülmek istenen dilin yazıldığı dile “kaynak dil (source
language)”, dönüşümün yapıldığı dile ise “hedef dil (target
language)” adı verilir.
hedef dil makine dili yada simgesel dil ise, bu çevirici programlara
“derleyici (compiler)” denir.
C Programı Oluşturmak
Derleyici program kaynak dosyayı alır ve derler. Bu işlem başarılı
olursa bir “amaç dosya (object file)” oluşturur.
Derleyici programın derleme işlemini yapma sürecine “derleme zamanı
(compile time)” denir.
Derleyici program, derleme sırasında kaynak dosyanın, C dilinin
sözdizim kurallarına uygunluğunu da denetler. Kural çiğnendiği
durumda bir ileti (diagnostic message) verir. Bu ileti:
•
Bir “hata iletisi (error message)” olabilir. Bu durumda
derleyici programlar çoğunlukla amaç dosya üretmez.
•
Bir “uyarı iletisi (warning message)” olabilir. Bu durumda
derleyici programlar çoğunlukla amaç dosya üretir.
C Programı Oluşturmak
Derleyici tarafından oluşturulan amaç dosyaları “bağlayıcı (linker)”
program tarafından birleştirilerek, çalıştırılabilir bir dosya elde edilir.
Windows sistemlerinde çalıştırılabilir dosyaların uzantısı “.exe” olarak
seçilir.
Kaynak Prog.
(source prog.)
Derleyici
Komutu
(include files)
Kütüphane
(library)
Derleyici
(compiler)
Bağlayıcı
(linker)
Çalıştırılabilir dosya
(.exe file)
C Programı Oluşturmak
Editör
Disk
Ön İşlemci
(preprocessor)
Disk
Derleyici
(Compiler)
Disk
Ön işlemci kodları işler
Disk
Yükleyici
Disk
...
CPU
Derleyici nesne kodlarını üretir
ve diske kaydeder
Bağlayıcı nesne kodunu
kütüphanelerle birleştirir ve
diske kaydedilir
Birincil Hafıza
Bağlayıcı
(Linker)
Program editörde oluşturulur
ve diske kaydedilir
Yükleyici programı diskten
alarak hafızaya koyar
CPU her komutu alır ve tek tek
çalıştırır. Program çalışırken
oluşan muhtemel yeni
değerleri kaydeder.
C Programı Oluşturmak
C Dilinde Kullanılan Terimler (tekrar):
 Kaynak kodu (source code): Programın, programcı ve kullanıcı tarafından
okunabilen ve anlaşılabilen C programı diye de adlandırılan kısmıdır.
 Amaç kodu (object file): C programının, makinenin anlayabileceği ve doğrudan
yerine getirebileceği bir kod şekline dönüştürülmüş halidir.
 Birleştirici (linker): Ayrı ayrı derlenmiş fonksiyonları bir program içerisine toplayıp
tek program haline getirmeye yarayan bir programdır. Programcının yazdığı
programla, standart C kütüphanelerinde bulunan fonksiyonları birleştirir. Çıkışta
işletilebilir bir program oluşur.
 Kütüphane (library):
fonksiyonları içerirler.
Programcılar
tarafından
kullanılmak
üzere,
standart
 Derleme zamanı (compile time)ı: Programın derlemesi için geçen zamandır.
 Çalışma zamanı: Programın çalışması için geçen süredir.
 Derleyici (compiler): kaynak kodu makine koduna çeviren programdır.