Algoritma Ve Programlama-1

ALGORİTMA VE PROGRAMLAMA I
İşletim Sistemlerinin Tanıtımı:
İşletim sistemi, bilgisayarda çalışan, donanım kaynaklarını yöneten ve çeşitli uygulama yazılımları için yaygın servisleri sağlayan bir yazılımlar bütünüdür. İşletim sistemi, uygulama kodları genellikle direkt donanım tarafından yürütülmesine rağmen, girdi-çıktı, bellek atama gibi donanım fonksiyonları için uygulama programları ve bilgisayar donanımı arasında aracılık görevi yapar. İşletim sistemleri sadece bilgisayar, video oyun konsolları, cep telefonları ve web sunucularında değil; arabalarda, beyaz eşyalarda hatta kol saatlerinin içinde bile yüklü olabilir. İşletim sistemleri işlevsellerinin genişliği ile değil, donanımı belli bir amaç doğrultusunda programlayabilme nitelikleriyle değerlendirilmelidir.
İşletim sistemlerine örnek olarak; Microsoft Windows, Mac OS X, Linux, BeOS, Android ve iOS örnek verilebilir.

İşletim Sisteminin Görevleri:
•Çevre birimleri ile programlar arasında iletişimi sağlamak. Bir tarayıcıya, yazıcıya ya da 
  CD Rom sürücüye ulaşılması, bunların kullanılması gibi. 
•Sistemin belleğini (memory) yönetmek.
•Disk ve disketler gibi saklama aygıtlarındaki dosyalara belli bir düzen altında erişilmesi için dosya 
   yönetim sistemi sunmak. 
•Özellikle çok kullanıcılı sistemlerde kaynaklara güvenli erişimi sağlamak… 
•Programlar arasında veri iletişimini sağlamak. 
• Kullanıcının girdiği çeşitli komutlara göre programları çalıştırmasını sağlamak olarak sıralanabilir.

Alt ve Üst Programlama Dillerinin Tanımı:
Makine koduna oldukça yakın programlama dilleridir. Makine hakimiyeti oldukça gelişmiştir. Bu programlama dillerini bilen kişilerin mikro işlemciler hakkında bilgi sahibi olması gereklidir.(Assembly programlama dili gibi)

Assembly Programlama Dili

Assembly dili alt seviye bir programlama dilidir ve karmaşık programlar yazmak için kullanılır. Assembly insanlar tarafından anlaşılması zor olan makine dilinin sayısal ifadelerini, daha kolay anlaşılır e programlanabilir olan alfabetik ifadelerle değiştirip alt seviyede programlama için bir ortam oluşturur. Assembly dil programları, genellikle platformdan bağımsız olan üst seviyeli programlama dillerinin aksine bir hedef bilgisayar mimarisine sıkı sıkıya bağlıdır. Assembly kullanmanın amacı, ilk bilgisayarlarda yazılan programların daha az hata içermesi ve daha az zaman almasını sağlamaktadır. Assembler, Assembly dilini makine koduna çeviren programlardır ve Assembler ‘ ı derleyiciden ayıran en önemli özellik bire bir dönüşüm yapmasıdır.



Üst seviye programlama dilleri: Olay tabanlı programlama dilleri olarak da adlandırılırlar yalnız bu programlama
dilleri sadece belirli fonksiyonlar etrafında çalışırlar ve programlama hakimiyetini azaltırlar. En hızlı ve en etkili programlama dilleri bu kategoridedir. Diğer programlama dillerine kıyasla daha kolay öğrenildiği ve uygulandığı
için yeni başlayanlara en uygun diller üst seviye programlama dilleridir. 









VİSUAL BASİC PROGRAMLAMA DİLİ
Visual Basic, Microsoft tarafından, Basic programlama dili üzerinde geliştirilmiş, olay yönlendirmeli, üst seviye,
nesne tabanlı ve görsel bir programlama dilidir. Microsoft Visual Basic dilinin değişik türevleri oluşturulmuştur:
VBA (Visual Basic for Applications); Microsoft Office gibi, değişik yazılımlar içerisinde çalışabilecek yazılımlar geliştirilmesinde kullanılır. VBScript; Internet Explorer, ASP ve Windows Script Host üstünde Visual Basic betikleri çalıştırılmasında kullanılan türevi. Visual Basic.NET; Visual Basic 6.0 Platformunun varisi olmakla birlikte farklı bir  yapıdır ve NET Framework üzerinde çalışır ve geriye doğru, Visual Basic 6.0 ve öncesi sürüm kodlarla uyumsuzdur.

PIC BASİC PRO PROGRAMLAMA DİLİ
PIC Basic Pro, Micro Engineering Labs firması tarafından PIC mikrodenetleyicileri için geliştirilmiştir ve BASIC programlama dilinin kolay öğrenilebilme özelliğinden dolayı dünyanın en çok kullanılan programlama dillerinden biridir. PIC Basic Pro programlama dilini kullanabilmeniz için algoritma, akış diyagramı oluşturmayı ve QBASIC ile basit programlar yazmayı bilmeniz yeterlidir. Daha önce PICassembly ile programlama yapmış olanlar PIC Basic Pro'nun kullanımının ne kadar kolay olduğunu göreceklerdir. PIC Basic Pro derleyici program kodlarını Assembly dili programlarıyla karışık kullanmak da mümkündür. Özellikle bir işlemi daha hızlı çalıştırmak, program belleğinde daha az yer tutmak ya da PIC Basic derleyicilerinin yapabildiğinden daha farklı bir işlem için program içinde Assembly kodlarını kullanmak gerekebilir.

DERLEYİCİLER
Programcılıkta, bir programlama dilinde yazılmış olan kaynak kodunu başka bir dile (genellikle makine koduna) çeviren yazılım. Derleyiciye bunu yaptırmaktaki amaç genellikle çalışabilir bir yazılım elde etmektir. Kullanıcıların programları kullanırken kolaylık sağlamak amaçlı geliştirilmiştir...

AKIŞ ŞEMALARI
Akış şeması algoritmaları ve işlemleri birbirine oklarla bağlı değişik tiplerdeki kutular içerisinde gösteren yaygın bir şema tipidir. Akış şemaları çeşitli alanlardaki işlem ve uygulamaların yönetilmesi, belgelendirilmesi, tasarlanması ve çözümlenmesinde kullanılır.

KOŞULLU DALLANMA
Dallanma bir bilgisayar programında denetim akışının değiştiği noktadır. Dallanma terimi genellikle makine kodu ya da çevirici dil programlarındaki atlama komutları için kullanılır. Üst düzey dillerde dallanma noktaları genellikle "if-else", "while", "for" gibi döngü yapılarında ya da işlevlerin çağrılması durumunda ortaya çıkan koşul önermelerinde kullanılır. Üst düzey dillerdeki bu tür kod parçaları derlendiğinde alt düzeyde dallanma buyruklarına dönüşür.

DÖNGÜLER
Programlamada en çok kullanılan özelliklerden biri de döngülerdir. Döngüler aracılığı ile belli şartlar gerçekleşinceye kadar veya gerçekleştikçe bir komut parçasını çalıştırmak mümkündür. Bir programda bir komut parçasının belli koşullar gerçekleştikçe veya gerçekleşinceye kadar defalarca icra etmesi gerekebilir. Bu defalarca çalışmayı sağlayan komutlara döngü yapıları denir. Döngü deyimleri, bir kümenin belli bir koşul altında tekrar edilmesi için kullanılır. Döngü deyimleri, bir işlemi yerine getiren kod kümesinin belli bir koşul altında tekrar edilmesi için kullanılır.

BİLGİSAYAR DONANIMI
Bilgisayar donanımı, bir bilgisayarı oluşturan fiziksel parçaların genel adıdır. Bu parçalar, kişisel bilgisayarlar, otomobiller, çamaşır makinesi ve benzeri elektrikli ev eşyaları veya çeşitli sanayi uygulamaları gibi birçok alanda kullanılır. Donanımı iç ve dış olarak ikiye ayrılırlar:
Dış Donanım (Harici Donanım): Bağımsız kasa, kutu veya kılıf içinde bulunan bilgisayar kasası içinde yer almayan donanımlardır. Bunlar kamera, USB girişi, Bluetooth, kızılötesi, tarayıcı, yazıcı ve benzeridir.
İç Donanım (Dâhili Donanım): Bir donanım parçası, başka bir donanım parçası içine yerleştiriliyorsa böyle adlandırılır. Kasa içinde bulunan donanımlar dâhili donanım olarak adlandırılır.

MERKEZİ İŞLEM BİRİMİ
Merkezi İşlem Birimi, bir bilgisayarın en önemli parçalarından biridir. Çalıştırılmakta olan yazılımın içinde bulunan komutları işler. İşlemci terimi genelde MİB için kullanılır. Mikroişlemci ise tek bir yonga içine yerleştirilmiş bir MİB ’dir. Genelde, günümüzde MİB ’ler mikroişlemci şeklindedir. Merkezi işlem birimi veya sabitçe işlemci, bilgisayarların veri işleyen ve yazılım komutlarını gerçekleştiren bölümüdür. İşlemciler, ana depolama ve giriş/çıkış işlemleri ile birlikte bilgisayarların en gerekli parçaları arasında yer alır. Mikroişlemciler ise tek bir yonga içine yerleştirilmiş bir merkezi işlem birimidir. Merkezi işlem birimi aritmetik ve mantıksal işlem yapma yeteneğine sahiptir. Giriş ve çıkış birimleri arasında verilen yazılım ile uygum çalışmayı sağlar. MİB, makine dili denilen düşük seviyeli kodlama sistemi ile çalışır; bu kodlama bilgisayarın algılayabileceği işlem kodlarından oluşur. Bir mikroişlemcinin algılayabileceği kodların tamamına o işlemcinin komut kümesi denir.

RAM
Rastgele erişimli hafıza mikro işlemcili sistemlerde kullanılan bir tür veri deposudur. Buna karşın diğer hafıza aygıtları saklama ortamındaki verilere önceden belirlenen bir sırada ulaşabilmektedir. Bir RAM yongasında herhangi farklı iki veriye ulaşmak için aşağı yukarı aynı süre harcanmaktadır. Buna karşılık disk ve benzerleri okunan verinin başı bulunan noktaya yakınsa az zaman, uzaksa çok zaman harcamakta ve baş konumu sürekli yer değiştirmektedir. RAM, genellikle bilgisayardaki ana hafıza ya da birincil depo; yükleme, gösterme, uygulamaları yönlendirme ve veri için çalışma alanı olarak düşünülür. Bu tip RAM genelde tümleşik devre biçimindedir. Yaygın olarak hafıza çubuğu veya RAM çubuğu isimleriyle anılır çünkü devre kartı üzerine, küçük devreler halinde, plastik paketleme yardımıyla birkaç sakız paketi boyutundadır. Çoğu kişisel bilgisayarda RAM eklemek veya değiştirmek için yuva bulunur. Çoğu RAM hem yazılıp hem okunabilir. Bu yüzden RAM sık sık “okunan-yazılan hafıza” ismiyle yer değiştirmiştir. Bu bağlamda RAM, ROM’un tersi, daha doğrusu sıralı ulaşılabilir hafızanın tersi olarak kabul edilir. RAM hafıza genelde (2²) byte şeklinde paketlenmiş olarak piyasada bulunur.

RAM ÇEŞİTLERİ
DRAM
Ekonomik nedenlerden dolayı, kişisel bilgisayarlarda, iş istasyonlarında, kontrol edilemeyen oyun konsollarında geniş hafızalar dinamik RAM ’lerden oluşur. Bilgisayarın diğer kısımları zula hafıza (ön hafıza) ve disklerdeki veri tamponları statik RAM kullanır. Dinamik rastgele erişimli hafıza (DRAM) tümleşik devrelerin plastik ambalaja metal iğnecikler ile bağlanıp, sinyaller ile kontrol edilecek biçimde üretilir. Dinamik denmesinin nedeni enerjiyi saklamak için saniyede yüz defaya yakın içinde bulunan kondansatörlerin yüklenmesi gerekir. Günümüzde bu DRAM ’ler kolay kullanım için rahat takılacak modüllerden oluşur.

SRAM
Her hücre için altı adeta varan transistör kullanılır. Bu tip RAM ’lerde bilgiler yüklendikten sonra sabit kalır. Sürekli enerji tazelemesi gerekmemektedir. SRAM (statik RAM), DRAM ’den daha hızlı ve daha güvenilirdir ama onun kadar yaygın değildir. SRAM ’lerin üretim maliyetlerinin DRAM ’lerinkine oranla çok daha yüksektir.

ECC
Bilindiği gibi bilgisayardaki bilgiler 1 ve 0’lardan oluşmaktadır. Bu değerler bazen ortam hataları, elektronik parazitler veya kötü bağlantılar gibi sebeplerden değişebilmektedir. Mesela 1 değeri 0’a dönüşebilir. Bu durum karşısında hatayı düzeltmek için ECC parite biti kullanılır.

SAYI SİSTEMLERİ
İKİLİ SAYI SİSTEMİ
Bilgisayarlar elektrik devrelerden oluştuğundan ikili sayı sistemini kullanırlar. Bütün bu işlemler aşağıda gösterilen 2 adet rakam ile gerçekleştirilir: 1 ve 0. Bu rakamlar elektronik devrelerde 0 için yanlış, 1 için doğru anlamına gelir.

ONALTILI SAYI SİSTEMİ
Bu sayı sisteminde aşağıda gösterilen 16 adet ifade kullanılır. Diğer sayı sistemlerinden farkı yanı sıra harf kullanılmasıdır. Bilgisayarda ikili sistem sayılarının daha pratik ve kısa bir şekilde kullanılması için tercih edilir:

0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F


C DİLİ GENEL YAPISI
C programlama dili, geniş amaçlı, orta seviyeli, yapısal bir programlama dilidir. C, temelde iki eski dile dayanır: BCPL ve B. BCPL, 1967 yılında Martin Richards tarafından işletim sistemleri ve derleyiciler yazmak için geliştirilmiştir. C programlama dili 1972 yılında Bell Laboratuvarlarında Dennis Ritchie tarafından geliştirilmiştir. C programlama dili, UNIX işletim sisteminin kodlama ve geliştirilmesinde kullanılarak popülerliğini arttırmıştır. 1970’lerin sonunda C, şu anda geleneksel C olarak bilinen haline geldi.

DEĞİŞ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.

DİZİLER
Diziler, veri yapısı türlerinden bir tanesidir (Array, Struct, Pointer, Class…). İçerisinde birden fazla, aynı tip ve isimdeki veriyi bellekte depolayabilen değişkenlere dizi denir.

1 BOYUTLU DİZİLER
Dizi üzerindeki elemanların her biri bellekte başlı başına bir yer işgal eder. İstenilen elemana ulaşmak için dizinin ismi be kaçıncı elemanı olduğu belirtilir. Eleman sırasına dizinin indisi denir. Ve “[ ]” içinde belirtilir. Tek boyutlu dizilerde ilk değer ataması yaparken, eleman sayısından az değer girerseniz, kalan değerler 0 olarak kabul edilir.

2 BOYUTLU DİZİLER
Bir dizinin elemanlarının her birinin başka bir dizi olduğu yapılara çok boyutlu dizi adı verilir. İki boyutlu diziler matematikteki matris yapısına ya da daha kolay anlamak için bir tablo yapısına benzetilebilir. 2 boyutlu bir diziyi fonksiyona parametre göndermek, tek boyutlu diziyi göndermekten farklı sayılmaz. Tek farkı dizinin iki boyutlu olduğunu belirtmeniz ve ikinci boyutun elemanını mutlaka yazmamızdır.

3 BOYUTLU DİZİLER
Belirlediğimiz sayıda değişkeni bir sıra içinde tutmamız, diziler sayesinde gerçekleşir. Dizileri tek boyutlu olmak zorunda değildir. İstediğimiz boyutta tanımlayabiliriz. Çok boyutlu dizilerde ilk değer atama, tek boyutlu dizilerdekiyle aynıdır. Girdiğiniz değerler sırasıyla hücrelere atanır. Bunun nedeni de basittir. Bilgisayar, çok boyutlu dizileri sizin gibi düşünmez; dizi elemanlarını hafızada arka arkaya bellek hücreleri olarak değerlendirir. Çok boyutlu dizilerde ilk değer atama yapacaksanız, değerleri kümelendirmek iyi bir yöntemdir, karmaşıklığı önler. Olması gerektiği sayıda eleman ya da grup girilmezse, bu değerlerin hepsi 0 olarak kabul edilir.

İF DEYİMİ
İF oluşumu, PHP olmak üzere birçok programlama dilindeki en önemli yapı taşlarından biri olup kod bölümlerinin koşullu olarak çalıştırılabilmelerini sağlar. PHP, C dilindekine benzer bir İF yapısı sunar.

ELSE DEYİMİ
Çoğu zaman belli bir koşula sağlandığında bir deyimin, o koşul sağlanmadığında başka bir deyimin çalıştırılmasını isteyeceksiniz. Bunun için else kullanılmaktadır. Else, bir if deyimini false döndürdüğü takdirde bir deyim çalıştırmak üzere genişletir. Else deyimi yalnızca if deyiminin false döndürdüğü durumda çalıştırılacaktır.

ELSE-İF DEYİMİ
ELSE-İF, isminden de anlaşılacağı gibi, if ve else deyimlerinin bir araya gelmesiyle oluşur. Else gibi, orijinal if ifadesinin FALSE döndürdüğü durumda farklı bir deyimin çalıştırılması için kullanılır. Ancak, else ’den farklı olarak, ilgili deyimi sadece kendisine ait koşullu ifade TRUE değerini döndürdüğü takdirde çalıştıracaktır.

WHİLE DÖNGÜSÜ
Bir koşulun gerçekleşmesi durumunda belirli işlemlerin tekrarlanması söz konusu ise while döngülerinden yararlanılır. While döngüsünün çalışabilmesi için koşulun başlangıçta mutlaka doğru olması gerekir.

DO - WHİLE DÖNGÜSÜ
While döngüsü ile aynı mantıkla çalışır. Farkı, koşulun döngü sonunda sınanmasıdır. Yani koşul sınanmadan döngüye girilir ve döngü en az bir kez yürütülür. Koşul olumsuz ise döngüden sonraki satıra geçilir.

FOR DÖNGÜSÜ
Programlama dillerinde while döngüsüyle birlikte en çok kullanılan döngüdür. Temel olarak bir kod bloğunu belirli bir sayıda ve üst üste çalıştırmak için kullanılır. Ancak döngü başlangıcında kullanılan değişkene döngü içinde müdahale edilerek tekrar sayısı değiştirilebilir.

BREAK DEYİMİ
Döngü işlemi devam ederken döngünün koşuluna bağlı olmaksızın döngüden çıkılmasını sağlayan deyimdir. Döngü içinde bu deyime sıra geldiğinde, break ardından döngü sonuna kadar olan tüm deyimler atlanır ve döngüye bir sonraki adımdan itibaren devam edilir. Tüm döngü türlerinde kullanılabilir. Kullanım biçimi aşağıdaki gibidir:
Break;

CONTİNUE DEYİMİ
Bir döngüyü terk etmeden bir adımın atlanması söz konusu olduğunda kullanılan deyimdir. Kullanım biçimi aşağıdaki gibidir:
Continue;

ASCII TABLO
Sembollerin sayısal karşılıklarını belirleyerek, sayısal olmayan ya da alfabetik türdeki bilgiyi bilgisayarda temsil etmek amacıyla kullanılan kodlama sistemlerinden en yaygın olarak kullanılanı ASCII kodlama sistemidir. ASCII sözcüğü American Standart Code For Information Interchange sözcüklerinin ilk harflerinden oluşan yapay bir sözcüktür. ASCII kodlama sistemi her sembol için 8 bit kullanmaktadır. Sekiz bit kullanarak 0 ila 255 rakamları ile toplam 256 adet sembol temsil edilebilmektedir. ASCII kodlama sistemi 196 yılında tanımlanmıştır.

İŞARETCİ NEDİR?
Programlama dillerinde bellek adreslerini saklayan değişkenlere verilen genel isimdir. Bir programlama dilinde herhangi bir değişkeni tanımladığınızda hafızada ona bir yer ayrılır. İşaretçiler bu hafıza alanlarının adreslerini tutarlar.

BİTSEL OPERATÖRLER
Bit düzeyinde işlem yapan operatörler, işlemcilerini ASCII, string veya tam sayı gibi sembolik karşılıklarıyla değil de 32 bitlik düzende, sıfırlar ve birler olarak ele alır. Bütün string ve sayısal değerler bir düzeyinde binary karşılıklar bulmaktadır. Float ya da double türleri bu operatörlerle işleme sokulamazlar.

DEĞER DÖNDÜRME
Genelde fonksiyonlar yaptıkları işin sonucu hakkında bir değer döndürürler. Fonksiyon tanımlamasında aksi belirtilmediği sürece fonksiyonların int tipinde değer döndürdükleri kabul edilir. Eğer fonksiyonumuzun farklı tipte bir değer döndürmesini istiyorsak fonksiyon tanımlamasında özel olarak bunu belirtmemiz gerekmektedir. Şimdiye kadar fonksiyonların değer döndürebildiklerinden ve bu değerin tipin belirlenebileceğinden bahsettik. Fakat bunun nasıl yapılacağına değinmedik. Fonksiyonlar return anahtar kelimesi aracılığıyla değer döndürürler. Program akışı sırasında return anahtar kelimesine ulaşıldığında bu anahtar kelimeden sonra gelen değer veya ifadenin değeri geri döndürülerek fonksiyondan çıkılır.




Yorumlar

Bu blogdaki popüler yayınlar

VLSI Devre Tasarımı

Yapay Sinir Ağlarına Giriş

İnsan Bilgisayar Etkileşimi