BPR151 ALGORİTMA VE PROGRAMLAMA - I Öğr. Gör. Bayram AKGÜL bayramakgul@bartin.edu.tr http://bmyo.bartin.edu.tr/akgul
Bugünkü konular Program Kodlamaya Hazırlık Temel Programlama Kavramları Syntax Değişken MS Visual Studio Kullanımı İlk Program C# Program yapısı
Programlama Dilleri(PL) Programlama dilleri algoritmaları bilgisayarlara uygulamak için kullanılan kurallar bütünüdür. Bu kurallar syntax olarak adlandırılır. (veya programlama dilinin yazım kuralları olarak isimlendirilir.) Her programlama dilinin kendine has yazım kuralları vardır. Syntax: yazım kuralı
C# si şarp diye okunur :) Microsoft tarafından geliştirilmiş olan bir programlama dilidir. C++ ve Java dillerine oldukça benzer, ancak C#'ın bu dillere benzerliği yanında farkları da vardır. C#, C++'dan farklı olarak % 100 nesne yönelim tekniğine sahiptir. Java'dan farklı olarak ise C#'ta gösterici (pointer) kullanılabilir. Böylelikle eski yazılım bileşenleriyle uyumlu bir şekilde çalışılabilir.
.NET Framework C# kodları, normal programlama dillerinden farklı olarak direkt makine koduna derlenmez. Önce IL (Intermediate Language) denilen bir ara koda derlenir. Derlenen bu kodun dosyasına assembly denir ve uzantısı exe veya dll'dir. Bu program çalıştırılmak istendiğinde .Net Framework devreye girer ve IL kodu makine koduna dönüştürür, böylelikle bilgisayar kodu anlayabilir. Bu yüzden yazdığımız programın bir bilgisayarda çalışması için o bilgisayarda .Net Framework programının kurulu olması gerekir.
C# kodunun çalıştırılması C# derleyici IL kod .Net Framework Makine Kodu
.NET Framework .Net Framework, oluşturduğu makine kodlarını geçici bir süreliğine belleğe koyar, eğer aynı kodlar tekrar çalıştırılmak istenirse tekrar IL koddan makine koduna dönüşüm yapmak yerine bu belleğe kaydettiği makine kodlarını kullanır. Bu yüzden oluşturduğumuz programımızı ilk çalıştırdığımız zaman programımız biraz yavaş çalışabilir, ancak daha sonraki çalışmalarda oldukça hızlanacaktır.
C# ile yapabileceklerimiz Konsol uygulaması geliştirme Windows uygulaması geliştirme ASP.NET uygulaması geliştirme Web servisleri yazma Mobil uygulama geliştirme (PDA, cep telefonları vb. için) DLL yazma
İlk Program class SelamVer { static void Main() System.Console.Write("Merhaba Sınıf!"); }
Program Başlangıcı class SelamVer satırıyla SelamVer adında yeni bir sınıf oluştururuz. C#'ta yazdığımız her programın en az bir sınıf içermesi zorunludur.
{ } Süslü Parantezler { ve } işaretleri herhangi bir sınıfın veya metodun içeriğini belirtmek için kullanılır. İlk { karakteriyle önceki satırda açtığımız SelamVer adlı sınıfımızın içeriğine alınacak kodların başladığını, programın son satırındaki } karakteriyle de sınıfımızın içeriğine alınacak kodların sona erdiğini belirtiyoruz.
Ana Metod static void Main() satırıyla program sınıfının içine Main adlı bir metot yerleştirildi. Bu metodun adı mutlaka Main olmalı, yoksa program çalışmaz. Bu metot mutlaka oluşturulan sınıfın içinde olmalı. { ve } karakterleriyle metodun içeriği belirtildi. Dikkat ettiyseniz bir iç içe { ve } karakterleri söz konusu. Bu durumda koyulan ilk } karakteri son açılan { karakterini kapatır.
Çalışan Kod Programımızın pratikte iş yapan tek kısmı: System.Console.Write("Merhaba Sınıf!"); satırıdır. Bu satırla konsol ekrana Merhaba Sınıf! yazdırılmaktadır. Bunun için .Net Framework kütüphanesindeki hazır bir metottan yararlanılmaktadır. Bu metot, System isim alanının altındaki Console sınıfında bulunuyor, ismi Write ve konsol ekranına yazı yazdırmaya yarıyor. Bu metod parantezler arasındaki çift tırnaklar arasına alınan metni ekrana yazdırıyor. Satırın sonundaki noktalı virgül (;) karakterini ise { ve } karakterleri açıp kapatmayan bütün C# satırlarında kullanmamız gerekiyor.
Programın İkinci Versiyonu using System; class SelamVer { static void Main() Console.Write("Merhaba Sınıf!"); }
using Deyimi Bu programımızın işlevsel olarak ilk programdan herhangi bir farkı yoktur. Yani ikisi de aynı şeyi yapıyor. Ancak kodda bir farklılık var. En üste using System; satırı eklenmiş ve System.Console.Write("Merhaba Sınıf!"); satırındaki System kalkmıştır.
using Deyimi using deyimi C#'ta isim alanı kullanma hakkı elde etmek için kullanılan bir anahtar sözcüktür. Yani aynı isim alanında kullanacağımız birden fazla sınıf varsa bu isim alanını using anahtar sözcüğüyle belirtiyoruz. Böylece bu isim alanının sınıflarını kullanırken isim alanının adını yazmak zorunda kalmayız.
Programın Üçüncü Versiyonu using System; class ilk_Program { static void Main() Console.WriteLine("Enter tuşuna basın!"); Console.ReadLine(); Console.WriteLine("Enter tuşuna bastınız!"); }
ReadLine Metodu Bu programımız önce ekrana Enter tuşuna basın! yazar. Kullanıcı enter tuşuna bastığında da Enter tuşuna bastınız! yazıp kendini kapatır. Console sınıfına ait olan ReadLine metodu programın kullanıcıdan bilgi girişi için beklemesini sağlar, yani programı enter tuşuna basılana kadar bekletir. Kullanıcı enter tuşuna bastığında da diğer satıra geçilir. Dikkat ettiyseniz ReadLine metodunda parantezlerin arasına hiçbir şey yazmıyoruz. C#'ta bazı metotların parantezleri arasına bir şeyler yazmamız gerekirken, bazı metotlarda da hiçbir şey yazılmaması gerekir.
Kullanıcıya inch girmesini bildir Örnek C# Programı PROBLEM İnch’i santimetreye dönüştür. using System; namespace ilk_program { class Program /* inch’i santimetreye dönüştürme */ static void Main() double inch; double santimetre; Console.Write("inch gir: "); inch = double.Parse(Console.ReadLine()); santimetre = inch * 2.54; Console.WriteLine("{0} inch {1} santimetre eder" ,inch, santimetre); } İnch’i al santimetre = inch * 2.54 inch ve Santimetreyi ekrana yazdır. Başla Bitiş Kullanıcıya inch girmesini bildir
Örnek C# Programını anlama using System; namespace ilk_program { class Program // inch’i santimetreye dönüştürme static void Main() double inch; double santimetre; Console.Write("inch gir: "); inch = double.Parse(Console.ReadLine()); santimetre = inch * 2.54; Console.WriteLine("{0} inch {1} santimetre eder" ,inch, santimetre); } Standart işlemler kütüphanesini yükle Program alanı ve sınıf adı Açıklamalar: /* …. */ arasında Veya // ile başlar Main(): Programın nerden başlayacağını gösterir Süslü parantezler Bir kod bloğunun başlangıç ve bitişini işaret eder.
Örnek C# Programını anlama (devam) using System; namespace ilk_program { class Program /* inch’i santimetreye dönüştürme */ static void Main() double inch; double santimetre; Console.Write("inch gir: "); inch = double.Parse(Console.ReadLine()); santimetre = inch * 2.54; Console.WriteLine("{0} inch {1} santimetre eder" ,inch, santimetre); } Değişkenler değişken bir hafıza alanıdır. İçeriği programın çalışması süresince doldurulabilir ve değiştirilebilir. double bir değişken tipidir inch ve santimetre değişken adlarıdır. İfadeler program adımlarıdır. her ifade noktalı virgül ile biter (;)
Örnek C# Programını anlama (devam) using System; namespace ilk_program { class Program /* inch’i santimetreye dönüştürme */ static void Main() double inch; double santimetre; Console.Write("inch gir: "); inch = double.Parse(Console.ReadLine()); santimetre = inch * 2.54; Console.WriteLine("{0} inch {1} santimetre eder" ,inch, santimetre); } Output - Çıktı Ekrana bir şeyler yazdırmak için Console.Write veya Console.WriteLine fonksiyonunu kullanacağız Input - Girdi Klavyeden bir şeyler okumak için Console.ReadLine fonksiyonunu kullanacağız. Hesaplamalar Hesaplamalar için matematiksel ifadeleri/operatörleri kullanacağız.
Örnek C# programının Çalışması using System; namespace ilk_program { class Program /* inch’i santimetreye dönüştürme */ static void Main() double inch; double santimetre; Console.Write("inch gir: "); inch = double.Parse(Console.ReadLine()); santimetre = inch * 2.54; Console.WriteLine("{0} inch {1} santimetre eder",inch,santimetre); } PROGRAM VERİLER inch ? ? 15.4 santimetre 39.116 ? inch gir: 15.4 inch 39.116 santimetre eder 15.4
Örnek C# programının Çalışması using System; namespace ilk_program { class Program /* inch’i santimetreye dönüştürme */ static void Main() double inc; double cm; Console.Write("inch gir: "); inc = double.Parse(Console.ReadLine()); cm = inch * 2.54; Console.WriteLine("{0} inch = {1} cm ",inc,cm); } PROGRAM VERİLER inc ? ? 15.4 cm 39,116 ? Inch gir: 15.4 inch = 39,116 cm 15.4
C# Program Yapısı using System; /* program alan adı olmak zorunda değil*/ namespace ilk_program { // program sınıfı olmak zorunda class Program /* Main olmak zorunda */ static void Main() /* Değişkenler programda kullanılacak verileri tutar. */ Değişken Tanımlama; /* Program basamakları: I/O, hesaplamalar (ifadeler) */ ifade1; ifade2; … ifadeN; }
Değişken Nedir? İçeriği programın çalışması boyunca doldurulabilen ve değiştirilebilen bir hafıza alanıdır. Her değişkenin bir tipi ve ismi vardır. Tip o hafıza alanında saklanacak verinin tip bilgilerini ifade eder. İsim o hafıza bölgesine ulaşmamız için bir etikettir. Hafıza sayi2 sayi1 name int sayi1; /* bir tam sayıyı depolar (152) */ float sayi2; /* bir ondalıklı sayıyı depolar (65.324) */
Değişken Tanımlama Temel değişken tanımlama formatı veritipi veriAdı, veriAdı, ... ; veritipi aşağıdakiler olabilir int /* tam sayıları tutar, 34532 */ float /* gerçek sayıları tutar, 15.342 */ double /* gerçek sayıları tutar, fakat çok daha hassas*/ /* 345.22359573943 */ char /* bir karakter tutar, ‘A’ */ string /* yazıları tutar, "Merhaba sınıf" */
Değişken İsimleri C# değişkenleri harf ve rakam kombinasyonlarından oluşabilirler fakat: İlk karakter rakam olamaz! fahrenheit, santigrat, toplam, a123, i1, i2, i3, _12abc Büyük veya küçük harfler kullanılabilir Küçük ve büyük harfler aşağıdaki gibi kullanılabilir toplam, Toplam, TOPLAM Alt çizgi (_) ilk karakter olabilir veya arada/sonda kullanılabilir. ogrenci_no, _ogrNo, __ogr_no_
Değişken İsimleri (devam) C# değişken isimleri harf ve rakamların birleşiminden oluşabilir, fakat: Değişken isimleri boşluk, tire veya tırnak içeremez “ogrenci” : tırnaklar(“) geçersiz ogrenci-no : geçersiz karakter ( - ) ogrenci no: arada boşluk kullanılmamalı (ogrenci_no) Değişken isimleri büyük/küçük harf duyarlıdır toplam, Toplam ve toplaM hepsi farklı değişkenlerdir.
C# Temel Veri Tipleri Tam sayılar Virgüllü sayılar (gerçek sayılar) int, uint, short, ushort, long, ulong, byte, sbyte Virgüllü sayılar (gerçek sayılar) float, double, decimal Boolean tipi (doğru/yanlış) (true/false) bool Yazı tipleri char string
Haftaya Veri tipleri ve özellikleri Değişken tanımlama ve değer atama
Dinlediğiniz için teşekkürler… Öğr. Gör. Bayram AKGÜL