BİLGİSAYAR PROGRAMLAMA (C#) DERS NOTU 1



Benzer belgeler
C# nedir,.net Framework nedir?

Bahar. BM 211 Programlama Dilleri 3 1

GÖRSEL PROGRAMLAMA - I

C #

C# Eğitimi-1 (Giriş) Melih Hilmi Uludağ

Programlama Dilleri II. Bilgisayar ve Öğretim Teknolojileri Öğretmenliği

Windows Programlama Güz Dönemi

4. Bölüm Programlamaya Giriş

Mühendislik Fakültesi Elektrik-Elektronik Mühendisliği C Programlama 1. Bölüm C# Programlamaya Giriş

HSancak Nesne Tabanlı Programlama I Ders Notları

ASP.NET TEMELLERİ. Öğr. Gör. Emine TUNÇEL Kırklareli Üniversitesi Pınarhisar Meslek Yüksekokulu

Öğr. Gör. Serkan AKSU 1

PROGRAMLAMAYA GİRİŞ. Öğr. Gör. Ayhan KOÇ. Kaynak: Algoritma Geliştirme ve Programlamaya Giriş, Dr. Fahri VATANSEVER, Seçkin Yay.

PROGRAMLAMA TEMELLERİ

1.PROGRAMLAMAYA GİRİŞ

Bilgisayarda Programlama. Temel Kavramlar

BİL 458 Web Programlama dersi. Yrd. Doç. Dr. Murat YEŞİLYURT

Script. Statik Sayfa. Dinamik Sayfa. Dinamik Web Sitelerinin Avantajları. İçerik Yönetim Sistemi. PHP Nedir? Avantajları.

Akıllı telefonlar, avuçiçi bilgisayarlar ile taşınabilir (cep) telefonların özelliklerini birleştiren cihazlardır. Akıllı telefonlar kullanıcıların

Uzaktan Eğitim Uygulama ve Araştırma Merkezi

Java Temel Özellikleri

BİLGİSAYAR PROGRAMLAMAYA GİRİŞ

Program Nedir?(1) Programlamaya Giriş

Yazılım Çeşitleri. Uygulama Yazılımları. İşletim Sistemleri. Donanım

1.1. Yazılım Geliştirme Süreci

ALGORİTMA VE PROGRAMLAMA I

Temel Bilgisayar (Basic Computer) Yazılım (Software)

Yazılım Mühendisliğine Giriş 4. Hafta 2016 GÜZ

5. PROGRAMLA DİLLERİ. 5.1 Giriş

Programlama Dillerinde Kullanılan Veri Tipleri

PHP 1. Hafta 1. Sunum

Asp.Net Veritabanı İşlemleri

INTERNET ÜZERİNDE BAZI VERİ TABANI YÖNETİM DİLLERİNİN KARŞILAŞTIRILMASI

Ünite-3 Bilgisayar Yazılımı.

İNTERNET PROGRAMCILIĞI - II

Bölüm1. İlk Bilgiler ISBN

Selçuk Akyıldız. Kişisel Bilgiler. Eğitim Bilgileri 1 / 5. Adres Bilgileri

Demetleme Yönteminin Y 3-Katmanlı Mimari Yapı ile Gerçeklenmesi. eklenmesi. KalacakYer.com

Bilgi ve İletişim Teknolojileri (JFM 102) Ders 10. LINUX OS (Programlama) BİLGİ & İLETİŞİM TEKNOLOJİLERİ GENEL BAKIŞ

MAT213 BİLGİSAYAR PROGRAMLAMA I DERSİ Ders 1: Programlamaya Giriş

Bilgisayar Mühendisliğine Giriş. Yrd.Doç.Dr.Hacer KARACAN

Android e Giriş. Öğr.Gör. Utku SOBUTAY

Java Programlama Giriş

Program Nedir? Program, bir problemin çözümü için herhangi bir programlama dilinin kuralları ile oluşturulmuş komut kümesidir.

1 / 5. Mehmet Alper Şen. Kıdemli Yazılım Uzmanı. İletişim Bilgileri

Dr. Fatih AY Tel: fatihay@fatihay.net

Javascript Geliştiricileri İçin Xaml Ve Microsoft Silverlight

Görsel Programlama DERS 01. Görsel Programlama - Ders01/ 1

One ASP.NET. 5 bileşen barındırmaktadır. Web Forms Model View Controller (MVC) Web Pages Web API SignalR

İNTERNET PROGRAMLAMA II. Tanımlar

Programlama Yazılımı ile Web Sitesi Oluşturma

BBS515 Nesneye Yönelik Programlama. Ders 1 Zümra Kavafoğlu

WEB İŞLEMLERİ. .NET Platformu:

MOBİL İLETİŞİM CİHAZLARI İLE EV OTOMASYON SİSTEMLERİ (EOS)

ISCOM Kurumsal ISCOM KURUMSAL BİLİŞİM TEKNOLOJİLERİ EĞİTİM KATALOĞU

Assembly Dili Nedir? Assembly dili biliyorum derken hangi işlemci ve hangi işletim sistemi için olduğunu da ifade etmek gerekir.

NESNE YÖNELİMLİ PROGRAMLAMA HAFTA # 10. Yrd.Doç.Dr.Hacer Karacan

Özgür Yazılımlarla Web Programlama. Özlem Özgöbek

Sanallaştırma Nedir? Bahadır Demircioğlu. Şubat, 2013

BİL 542 Paralel Hesaplama. Dersi Projesi. MPJ Express Java Paralel Programlama

Üst Düzey Programlama

YAZILIM KAVRAMINA BİR BAKIŞ. Gürcan Banger Elektrik Yük. Müh. ESOGÜ - 9 Nisan 2007

EĞİTİM : .NET UYGULAMA GELİŞTİRME PLATFORMU. Bölüm :.NET Uygulama Geliştirme Platformu. Konu :.NET Framework Nedir? Page 1 of 17

İNTERNET PROGRAMLAMA 2 A S P. N E T. Marmara Teknik Bilimler MYO / Hafta 5 Veri Tabanı İşlemleri

Internet Programming II

Tarih Saat Modül Adı Öğretim Üyesi. 01/05/2018 Salı 3 Bilgisayar Bilimlerine Giriş Doç. Dr. Hacer Karacan

Bölüm 1. Ön Hazırlıklar ISBN

Bilgisayar Programlama Dilleri

Java ve Linux. Bora Güngören Portakal Teknoloji Akademik Bilişim

1. HAFTA KBT204 İNTERNET PROGRAMCILIĞI II. Öğr.Gör. Hakan YILMAZ.

BEDEN EĞİTİMİ I: Haftalık ders 1 saattir (T-0 ) (U-l) (K-0).

IOT NEDİR? Bölüm 1. Internet of Things ekosistemi altında donanım, programlama, veri tabanı, veri analizi gibi alt yapılar yer almaktadır.

VERİ TABANI YÖNETİM SİSTEMLERİ I

ÖZGÜR YAZILIMLAR İLE J2EE

ADO.NET. Öğr. Gör. Emine TUNÇEL Kırklareli Üniversitesi Pınarhisar Meslek Yüksekokulu

PROGRAMLAMA DERSİ 1. İNTERNET

XAML Dili Microsoft Blend. Tasarım ve Kodlamanın. Birbirinden Ayrılması

VERİ TABANI YÖNETİM SİSTEMLERİ I

BM-209 Nesne Yönelimli Programlama. Yrd. Doç. Dr. İbrahim Alper Doğru Gazi Üniversitesi Teknoloji Fakültesi Bilgisayar Mühendisliği Bölümü

EĞİTİM ÖĞRETİM MÜNEVVER ÖZTÜRK ORTAOKULU II. DÖNEM BİLİŞİM TEKNOLOJİLERİ VE YAZILIM DERSİ DERS NOTLARI

9/21/2016

VERİ YAPILARI VE PROGRAMLAMA (BTP104)

Interneer Intellect Platformu. Interneer Intellect Platformu Kurumsal Teknoloji ve Mimarisinin Tanıtımı

JAVA DÖNGÜ DEYİMLERİ. For Döngüsü

Yazılım Mühendisliği Bölüm - 3 Planlama

İŞLETİM SİSTEMİ KATMANLARI (Çekirdek, kabuk ve diğer temel kavramlar) Bir işletim sisteminin yazılım tasarımında ele alınması gereken iki önemli konu

Bilgisayar Mühendisliği ve Yeni Teknolojiler. İbrahim SARAÇOĞLU

API geliştiricileri. Web server ile yapılan entegrasyonun neticeleri. API Dokumantasyonu

PR Kasım 2009 Yazılım, PC-tabanlı kontrol Sayfa 1 / 5

Bilgi ve İletişim Teknolojileri (JFM 102) Ders 7. LINUX OS (Sistem Yapısı) BİLGİ & İLETİŞİM TEKNOLOJİLERİ. LINUX Yapısı

Java 2 Standart Edition SDK Kurulum ve Java ya Giriş

BLM-112 PROGRAMLAMA DİLLERİ II. Ders-3 İşaretçiler (Pointer) (Kısım-2)

VERİ TABANI YÖNETİM SİSTEMLERİ

Basit bir web uygulaması

MTM 305 MĠKROĠġLEMCĠLER

Ders Tanıtım Sunumu. Internet Programming II. Elbistan Meslek Yüksek Okulu Bahar Yarıyılı. 26 Şub Öğr. Gör.

VERİ TABANI UYGULAMALARI

BİH 605 Bilgi Teknolojisi Bahar Dönemi 2015

OMNET Ağ Benzetim Yazılımı (Network Simulation Framework) BİL 372 Bilgisayar Ağları. GYTE - Bilgisayar Mühendisliği Bölümü

2 Temel Kavramlar (Devam) Veritabanı 1

Transkript:

BİLGİSAYAR PROGRAMLAMA (C#) DERS NOTU 1 Kaynaklar: Sefer Algan, Her Yönüyle C#, 6. Baskı, Pusula Yayıncılık. www.sharpnedir.com 1. DÜZEYLERİNE GÖRE BİLGİSAYAR DİLLERİ Script Dilleri Yüksek Düzeyli Diller Orta Düzeyli Diller Düşük Düzeyli Diller Makine Dili Javascript, Perl Script, VBScript Visual Basic ve Delphi C# ve Java C/C++ Assembly Script dilleri, derlenmek (compile) yerine sadece yorumlanarak (interpret) çalıştırılan dillerdir. Bu diller browser denilen yorumlayıcılara ihtiyaç duyarlar. HTML kodlarının arasına gömülerek kullanılabilir. Yüksek düzeyli diller ise yeterince esnek değildir ve büyük boyutlu programlarda kısıtları bulunmaktadır. Düşük düzeyli dillerde ise yazılımdan gelen zorluklar mevcuttur ve kod yazmak zaman alıcıdır. C# ile hem alt hem de üst düzeyli programlar yazılabilir. C# ın söz dizimi C++ ve Java dan gelmiştir. Yazılım sektöründe program geliştirme konusunda günümüze kadar birçok yaklaşım denenmiştir. Bunların ilki programın baştan aşağıya sırası ile yazılıp çalıştırılmasıdır. Bu yaklaşımla BASIC dili kullanılarak birçok program yazıldığını biliyoruz. Burada sorun programın akışı sırasında değişik kısımlara goto deyimi ile atlanmasıdır. Program kodu bir kaç bin satır olunca, kodu okumak ve yönetmek gerçekten çok büyük sorun oluyordu. İkinci yaklaşım ise prosedürel yaklaşımdır. Programlarda birçok işin tekrar tekrar farklı değerleri kullanılarak yapıldığı fark edildi. Mesela herhangi bir programda iki tarih arasında ne kadar gün olduğunu bulmak birçok kez gerekebilir. Bu durumda başlangıç ve bitiş tarihlerini alıp aradaki gün sayısını veren bir fonksiyon yazılabilir ve bu fonksiyon ihtiyaç duyulduğu yerde uygun parametrelerle çağrılıp istenen sonuç elde edilebilir. Prosedürel yaklaşım Pascal ve C dillerinde uzun yıllar başarı ile kullanılmıştır. Ama her geçen gün programların daha karmaşık bir hal alması, program kodunun kurumsal uygulama projelerinde on binlerce satırı bulması ve yazılım geliştirme maliyetinin çok arttığını gören bilim adamları, programcılara yeni bir yaklaşımın kullanılabilineceğini öğrettiler. Bu yaklaşımın ismi Nesne Yönelimli Programlama(Object Oriented Programming)dır. Nesne yönelimli programlama tekniği, diğer yaklaşımlara nazaran, yazılım geliştiren insanlara büyük avantajlar sağlamaktadır. Birincisi karmaşık yazılım projelerinin üretilmesini ve bakımını kolaylaştırıyor olmasıdır. 1

Diğeri ise program kodunun tekrar kullanılabilmesine (code reusability) olanak sağlamasıdır. Bu noktada program kodunun tekrar kullanılabilmesi profesyonel yazılım şirketlerinin maliyetlerini azaltmıştır. Dolayısıyla programların lisans ücretleri düşmüş ve sektörün sürekli olarak canlı kalmasına ve rekabet içinde gelişmesine yardımcı olmuştur. C# da nesne yönelimliliği tam destekleyen en iyi dillerdendir. C# dışında.net ortamını destekleyen yüzlerce dil bulunmaktadır. C# dilini, Borland firmasının Delphi yazılımcısı Anders Hejlsberg ekibi ile birlikte Microsoft a geçerek yaratmıştır. 2. C# KULLANMA NEDENLERİ a) C# öğrenilmesi kolay bir dildir: Az sayıda anahtar kelime içerir ve basit kontrol yapıları ile çalışır. b) Nesne yönelimli programlamaya tam destek: C++ tam anlamıyla nesne yönelimli olmamasına karşın C# gerçek anlamda (object oriented) nesne yönelimlidir. VB.NET de artık nesne yönelimli olsa da atası BASIC olduğundan dolayı ciddi anlamda programlama için uygun bir dil değildir. c) Yüksek verim: C ve C++ dilleri daha zor, hataya yapmaya daha açık ve program hazırlama süreleri daha uzundur. Fakat C# tasarlanırken sık yapılan hataları önlemek için tedbirler alınmıştır. d) Güç ve kolaylık arasındaki denge: VB, kullanımı kolay bir dil olmasına rağmen C++ a göre hem yavaş hem de yetenekleri azdır. Buna karşın C++ güçlü bir dil olmasına rağmen birçok işi programcıya bıraktığı için kullanımı zor bir dildir. C# ile VB kadar hızlı hazırlanan ve C++ daki kadar güçlü programlar hazırlamak mümkündür. e) XML (Extensible Markup Language) desteği: Farklı platformların birbiri arasında veri alışverişi yaparken ortak bir dil ile konuşmaları bir ihtiyaç olmuştur. Bu dilin XML olduğu ve giderek yaygınlaştığı görüldüğü için C# içine XML desteği eklenmiştir. Özellikle dağıtık uygulama geliştirmede büyük faydalar sağlamaktadır. f) Yönetilmeyen kod (Unmanaged Code): C# ile değil de eski versiyonlarda yazılmış kodlar da (COM ve DLL gibi) yönetilemese de okunarak çalıştırılabilir. g) VB deki Olay (event) ve Form mantığını destekler: C++ dilinin zorluğunun yanında MFC (Microsoft Foundation Class Library) ile Windows un kullanıcı grafik ara yüzünün elemanlarını kullanarak programlamayı öğrenmek ve program geliştirmek çok zordu. VB de form tabanlı yazılım geliştirme modeli ile programlar çok hızlı hazırlanabiliyordu. Ama bunlarda yavaş çalışan ve az yetenekli programlardı. C# ile Windows veya ASP.NET programı geliştirmek Form mantığı sayesinde hem daha hızlıdır hem de geliştirilen uygulamalar daha güçlüdür. h) C# Modern bir dil: Tüm bu maddeler dikkate alındığında C#, diğer dillerin güzel yanlarını alıp dezavantajlarını bertaraf eden modern bir dildir. Ayrıca eskiden yazılmış bileşenlerle (COM ve DLL) anlaşır ve gerekirse onlarla aynı dili konuşur. 2

3. C# IN.NET DEKİ YERİ VE KULLANIM ALANLARI VB.NET ve C++.NET de.net e tam destek veriyor olsa da türedikleri dillerin eksikliklerini ve sorunlarını eleyemedikleri için C# kadar etkin kullanmak mümkün olamamaktadır. C# ile.net ortamında yapılabilecekler aşağıdaki gibi sıralanabilir: a) Konsol uygulaması geliştirme aracı: Windows uygulaması geliştirme ve ASP.NET uygulaması geliştirme noktaları dikkate alındığında konsol uygulaması geliştirmeye gerek kalmayacağı düşünülebilir. Fakat dilin temel özelliklerini tam anlamı ile öğrenmek için konsol uygulamaları gerekmektedir. b) Windows için program yazma: Programımızın çalıştığı sistemde.net platformu yüklü ise Windows için gelişmiş, güçlü, hızlı ve güvenli programlar yazılabilir. c) ASP.NET için en uygun dil:.net in tamamı C# ile yazılmıştır. Bu sebeple Web Form (ASP.NET in diğer adı) ile daha becerikli ve hızlı uygulamalar geliştirilebilir. Ayrıca ASP.NET artık ASP gibi script yorumlamalı değil, tam olarak nesne yönelimli derlenen (compiled) ve çalıştırılan (executable) bir model haline gelmiştir. d) Web Servisleri: Web servisleri yani web üzerinden servis veren program parçacıkları, http protokolünü kullanmaktadır. Bu servisleri yazmak için de C# uygun bir tercih olacaktır. e) Mobil Uygulama Geliştirme:.NET ile tüm IP (internet protokolü) tabanlı (cep telefonları ve PDA personel data assistant gibi) cihazlara erişmek mümkündür. Bu cihazlara yazılım geliştirmek için ayrı bir dil veya platforma ihtiyaç yoktur. Sadece.NET Mobil Geliştirme Aracı ve C# ile mobil cihazlara yönelik yazılımlar geliştirilebilir. f) DLL yazılabilir: C# programları ve.net desteği olan diller için güçlü, hızlı ve esnek dll (Dynamic Link Library) bileşenleri yazılarak birçok yerde kullanılabilir..net BİLEŞENLERİ Microsoft.NET, çok katmanlı ve dağınık uygulama geliştirme modellerini benimsemiştir..net platformu aşağıdaki şekilde ifade edilebilir. 3

.NET i oluşturan bileşenler genel olarak aşağıdaki gibi incelenebilir. Java dan önce geliştirilen yazılımlar direkt olarak makine koduna derlenir ve bu şekilde çalıştırılırdı. Bu programların her biri işletim sistemine özel olarak ayrı ayrı geliştirilirdi ve o işletim sisteminin kuralları çerçevesinde derlenirdi. Yani programların taşınabilirliği yok denecek kadar azdı. Sonuç olarak, yazılan kod hem işlemciye hem de işletim sistemine duyarlı ve bağımlıdır. Amaç ise bu bağımlılığı ortadan kaldırarak, yazılan kodun her ortamda kullanılabilir olmasını sağlamaktır. Bu problemi ilk olarak SUN şirketi Java ile çözmüştür. Bunu da işlemci ve işletim sistemi için farklı çözümler üreterek sağlamıştır. Java öncelikle program kodu byte koda çevirir. Bu kodu Java Sanal makinesi (Java Virtual Machine VM) alarak işletim sistemi ve işlemciye uygun olarak farklı bir koda çevirir. Fakat Java ile yazılan programlar direkt olarak makine koduna çevrilmiş yazılımlara kıyasla daha yavaş çalışırlar. Zaten sanal makineler ilk olarak ara yüzü olmayan, arka planda çalışan programlar için yapılmışlardır. Bu sebeple diğer durumlarda hantal kalırlar. Birde SDK (Software Development Kid) denilen, uygulamalar yaratmak için kullanılan kod yığınları vardır. Bunlar daha önce yazılıp paket haline getirilmiş kodlardır. Linux, Microsoft vs. her işletim sistemi için farklı SDK lar vardır. Bunlara Framework denilir..net de de benzer bir yapı vardır..net kodu öncelikle IL ye (Microsoft Intermediate Language Ara dil) derler. Bu IL kodu çalıştırılmak istendiği zaman.net CLR (Common Language Runtime Ortak dil çalışma platformu), JIT (just in time) derleyicilerini kullanarak makine diline çevirir. Java daki VM den farklı olarak CLR makine diline çevrilmiş program kodunu ön bellekte tutar. Bu da büyük oranda hız artışı sağlarken, hafızada çok daha fazla yer işgal eder..net uyumlu dillerin hepsi Ortak dil tanımları (CLS Common Language Specifications) ve Ortak tip sistemi (CTS Common Type System) ile belirlenmiş değişkenleri ve benzer nesne yönelimli özellikleri taşımak zorundadır. Örneğin Visual Studio editörü ile C# dilinde yazılmış bir program IL e çevrilmeden önce CLS ve CTS tanımlarına uygun hale gelmiş olacaktır. IL e dönüşen kod doğru şekilde derlenmiş bir çıktıdır. Bu artık bir assembly yani.exe uzantılı CLR tarafından çalıştırılabilecek bir koddur. Fakat CLR bu kodu çalıştırabilmek için framework e ihtiyaç duyar. Framework: ADO.NET, ASP.NET, WINFORM, MOBILE ve COMMON diye ayırabileceğimiz kısımlardan oluşur. ADO.NET (Activex Data Object): Veri tabanı uygulamalarında kullanılır. SQL, Oracle, Access gibi veri tabanları ve XML verilerine ADO.NET ile ulaşılarak üzerinde istenen işlemler gerçekleştirilir. ASP.NET (Active Server Pages): Web üzerindeki uygulamaların gerçekleştirilmesinde faydalanılan kısımdır. WINFORM: Windows uygulamalarında kullanılan kısımdır. MOBILE: Mobil uygulamalar için gerekli kısımdır. COMMON: Her uygulama için kullanılan kısımdır. 4

İşte CLR kullanıcı tarafından.net uyumlu bir dilde yazılmış, IL e çevrilmiş kodu.net Framework içindeki ilgili verilerle birleştirerek çalıştırır. CLR ile IL kodunu çalıştırırken JIT derleyicileri devreye girer. Bu derleyiciler programın çalıştırıldığı işletim sisteminin ve işlemcinin anlayabileceği makine kodunu oluşturur. 5