Programlama dilleri, makine dili, yüksek düzey diller Derleyici, "source", "object", "link" kavramları



Yüklə 441 b.
tarix20.02.2018
ölçüsü441 b.
#43021



  • Programlama dilleri, makine dili, yüksek düzey diller

  • Derleyici, "source", "object", "link" kavramları.

  • Algoritma, bir programın hayat hikâyesi





X = A * B + C

  • X = A * B + C

  • Hafızanın A adresindeki değeri al, ALU’da bir "register"e yükle;

  • Hafızanın B adresindeki değeri al, yukardaki değerle çarp ve sonucu aynı "register"de tut.

  • Hafızanın C adresindeki değeri registerdeki değere ekle.

  • Registerdeki değeri hafızanın X adresine koy.



X = A * B + C

  • X = A * B + C

  • Opcode Operand

  • 00010000000000000000010000000000 (A’daki değeri reg. yükle) Hex: 08 00 04 00

  • 00100100000000000000010000000001 (B’deki değerle çarp) Hex: 24 00 04 01

  • 00100011000000000000010000000010 (C’deki değeri reg. ile topla) Hex: 23 00 04 02

  • 00010001000000000000010000000011 (Registerdeki değeri X’e taşı) Hex: 11 00 04 03

  • İki tabanındaki sayılar : 0, 1

  • Ondalık sayılar : 0, 1, 2, 3, 4, 5, 6, 7, 8, 9

  • Onaltılık (hex) sayılar : 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F



Ondalık  Hex Hex  Ondalık

  • Ondalık  Hex Hex  Ondalık

  • 1 = 1

  • 10 = A

  • 36 = 24 A5 = 165

  • 147 = 93 DD = 221

  • 255 = FF



X = A * B + C

  • X = A * B + C



X = A * B + C

  • X = A * B + C

  • X = A * B + C



FORTRAN

  • FORTRAN

  • C

  • Pascal

  • Basic

  • C++

  • Java

  • C#













http://www.digibarn.com/collections/ posters/tongues/tongues.jpg

  • http://www.digibarn.com/collections/ posters/tongues/tongues.jpg







Derleme hataları (Compiler error)

  • Derleme hataları (Compiler error)

  • Bağlama hataları (Falan modülü bulamadım)

  • İcra hataları (Run time error)





 

  •  

  • public class HesapMakinesi

  • {

  • public string Birinci, Ikinci, Sonuc;

  • int a, b, c;

  •  

  • public void Carp()

  • {

  • a = int.Parse(Birinci);

  • b = int.Parse(Ikinci);

  • c = (a * b);

  • Sonuc = c.ToString();

  • }

  • }



 class Program

  •  class Program

  • {

  • static void Main()

  • {

  • HesapMakinesi HM = new HesapMakinesi();

  • HM.Birinci = Console.ReadLine(); HM.Ikinci = Console.ReadLine();

  • HM.Carp();

  • Console.WriteLine(HM.Sonuc);

  • Console.Read();

  • }

  • }



namespace KaraEkranÇarpmaMakinesi

  • namespace KaraEkranÇarpmaMakinesi

  • {

    • class Program
    • {
    • static void Main()
    • {
    • .........
    • }
    • }
    • public class HesapMakinesi
    • {
    • ..........
    • }
    • }




Değişken tipleri:

  • Değişken tipleri:

  • int

  • int birinciSayi;

  • birinciSayi = 1256;



Değişken tipleri mutlaka ilan edilmelidir (type decleration- types must be declared “C# is a strongly typed language)

  • Değişken tipleri mutlaka ilan edilmelidir (type decleration- types must be declared “C# is a strongly typed language)

  • Kullanılmadan önce ilan edilmelidir

  • İlk değer atanması ilân sırasında veya ilândan sonra yapılabilir:







=

  • =

  • variable = expression

  • object = expression





= ile diğer operatörler birleştirilebilir: a = a + b yerine a += b

  • = ile diğer operatörler birleştirilebilir: a = a + b yerine a += b

  • a = a / b yerine a /= b





( ve ) işlemlerde öncelik değiştirmek için, vby...

  • ( ve ) işlemlerde öncelik değiştirmek için, vby...

  • { ve } program bloklarını ayırmak için

  • //

  • x = y + z // y ile z’yi topluyorum

  • /* ve */

  • /*

  • y ile

  • z’yi topluyorum

  • */

  • En önemli işaret: a = x + y



  • Önce parantez içleri

  • Sonra soldan sağa * ve / ve % işlemleri

  • Sonra soldan sağa + ve – işlemleri





  • İsim vermede kurallar ve tavsiyeler

  • C# anahtar kelimeleri



Kurallar

  • Kurallar

  • Öneriler (style ~ üslup)

    • Tümü büyük harf olmasın
    • Başlangıç alt çizgi olmasın
    • Birden fazla kelimede her kelimenin baş harfi büyük olsun
    • Kısaltmalardan kaçınınız
    • İlk kelimenin baş harfi için başka kurallar var.


Keyword’ler derleyiciye ayrılmış kimlikleyicilerdir

  • Keyword’ler derleyiciye ayrılmış kimlikleyicilerdir

  • Keyword’ler değişken adı olamazlar

    • compile-time hatası üretir
  • Keyword’ler yazıldığı gibi kullanılmalıdır.

  • (Case-Sensitive)





Batch

  • Batch

  • Etkileşimli - olayların sürdüğü (event driven)

  • Prosedürel-> yapılı (structured)

  • Nesneye yönelik (Object oriented- OOP)



Veri- değişkenler

  • Veri- değişkenler

  • Metotlar Veri üzerinde yapılacak işlemler

  • (Encapsulation)

  • Sınıf = plan

  • Nesne = plana göre inşa edilmiş yapı



Veriler ne?

  • Veriler ne?

    • Birinci değer
    • İkinci değer
    • İşlemi belirten bişiy




public class CarpmaMakinesi

  • public class CarpmaMakinesi

  • {

  • // Özellikler

  • public double Birinci;

  • public double Ikinci;

  • // Metot(lar)

  • public double Carp() {

  • return Birinci * Ikinci;

  • }

  • }











using System;

  • using System;

  • using System.ComponentModel;

  • using System.Windows.Forms;

  • namespace WindowsApplication5

  • {

  • public partial class Form1 : Form

  • {

    • public Form1()
    • {
    • InitializeComponent();
    • }
    • private void btCarpma_Click(object sender, EventArgs e)
    • {
      • CarpmaMakinesi Makinem = new CarpmaMakinesi();
      • Makinem.Birinci = double.Parse(tbIlkSayi.Text);
      • Makinem.Ikinci = double.Parse(tbIkinciSayi.Text);
      • lbSonuc.Text = Makinem.Carp().ToString();
    • }
    • }
  • public class CarpmaMakinesi

  • {

    • public double Birinci;
    • public double Ikinci;
    • public double Carp()
    • {
    • return Birinci * Ikinci;
    • }
  • }

  • }













Dört işlem yapan makineyi Windows ortamında programlayın.

  • Dört işlem yapan makineyi Windows ortamında programlayın.

  • Dikkat edin: Dört işlem için ayrı ayrı düğmeler kullanırsanız, Hesapla() diye bir metot yazıp switch veya bir sürü if’le uğraşmanız gerekmiyor: Her düğme için basit bir metot yazmanız yeterli.



Ebû Cafer Muhammed bin Musâ el- Harizmî

  • Ebû Cafer Muhammed bin Musâ el- Harizmî

  • (Ölümü: 847)

  • İlk cebir kitabının yazarı:

  • "Kitabı muhtasar fi hisabil- cebr ve’l mukabele"

  • İlk "algoritma" fikri de onun; o yüzden adını taşıyor… Lâtinceye çevirirken H ile G’yi karıştırmışlar: H: ﺧ G: ﻏ



Harezmî’nin anısına…

  • Harezmî’nin anısına…

  • (Harezmî, daha önce ismin verdiğimiz kitabında ikinci derece denkleminin çözümüyle uğraşmış, bir çok hal için çözmüş ve ilk defa iki kök bulunduğunu fark etmiştir.) Mesela:

  • 2 x2 – 19 x + 35 = 0

  • Böyle bir denklemi çözmek için IkinciDerece adlı bir class yazın. Sonra bu class’ı kullanacak bir Windows uygulaması

  • yazın.



Değişkenler

  • Değişkenler

  • a, b, c, x1, x2, delta, kokDelta

  • Metotlar:

  • “constructor”

  • private diskriminantHesapla

  • public KokleriHesapla















1. Çözüm: Bütün özellikleri “public” yapmak.

  • 1. Çözüm: Bütün özellikleri “public” yapmak.

    • Bu, nesne yönelim felsefesine tamamen zıttır. Nesnelerin değişkenleri ve metotlarının nasıl çalıştığı, tam tersine, kullanıcı programlardan gizlenmelidir.
  • Doğru çözüm: Gerekli minimum sayıda public değişken, nesnenin kontrolü altında nesnenin iç değişkenlerine değer vermelidir.





1. Metotlarda gerektikçe (Q&D yöntem) :

  • 1. Metotlarda gerektikçe (Q&D yöntem) :



2. Namuslu yöntem:

  • 2. Namuslu yöntem:

  • private double a; public double A{

  • get{

  • return a;

  • }

  • set{

  • a = value;

  • }

  • }



2. Namuslu yöntem:

  • 2. Namuslu yöntem:

  • private double a; public string A{

  • get{

  • return a.ToString();

  • }

  • set{

  • a = Convert.ToDouble(value);

  • }

  • }



Her şey nesne- object.

  • Her şey nesne- object.

  • Sınıflar, nesnelerin planlarıdır. Classes are blueprints of objects

  • Programda nesneler çalışır, sınıflar değil.

  • Nesne yaratmak için Sınıf_ismi nesne_ismi = new Sınıf_ismi(); HesapMakinesi HM = new HesapMakinesi(); kullanılır.

  • Sınıftan nesne yaratmak: Instantiation Her nesne bir sınıfın bir “instance”ıdır.



public/private sınıf_adı {

  • public/private sınıf_adı {

  • public/private type değişkenler public/private sınıflar public/private type metotlar

  • }



Sınıfın değişkenleri tiplerinden (double, int, string, v. s.) başka public veya private olabilir.

  • Sınıfın değişkenleri tiplerinden (double, int, string, v. s.) başka public veya private olabilir.

  • public belirtilmemişse hükmen (default) private olurlar.

  • public değişkenlere dışarıdan değer verilebilir; değerleri alınıp kullanılabilir. Bunlara nesnenin özellikleri - (property) denir.







Getter ve setter kullanılarak görülen ve değer atanan değişkenlere “özellik” (“property”) deniliyor. (Get ve set kullanmasanız da böyle derleniyor.)

  • Getter ve setter kullanılarak görülen ve değer atanan değişkenlere “özellik” (“property”) deniliyor. (Get ve set kullanmasanız da böyle derleniyor.)

  • Get ve set’in içinde kullanılan değerleri kontrol edebilir, tip değişiklikleri yapabilir, varsayılan değerler verebilirsiniz.



Sınıf içinde tanımlanması:

  • Sınıf içinde tanımlanması:

  • public/private return_type metot_adı (parametreler){

  • .....

  • }

  • public void KokleriHesapla(){

  • ...

  • }

  • Dışarda kullanılması:

  • object.metot_adı (parametreler);

  • HM.KokleriHesapla ();



Console.ReadLine();

  • Console.ReadLine();

  • public static Main(){ ... }

  • Yüklendiği anda object olarak inşa edilir. Tek kopyası vardır.

  • Instance- instantiation



HesapMakinesi HM = new HesapMakinesi();

  • HesapMakinesi HM = new HesapMakinesi();

  • Sınıfla aynı ismi taşır.

  • Tipsizdir (return değeri ve tipi yoktur).

  • Parametreleri bulunabilir.



IkinciDerece Denklem = new IkinciDerece();

  • IkinciDerece Denklem = new IkinciDerece();

  • yerine

  • IkinciDerece Denklem = new IkinciDerece(A, B, C);

  • O zaman sınıfın içinde:

  • public class Ikinci Derece{ private double a, b, c; ........

  • public IkinciDerece(double A, double B, double C){

  • a = A; b = B; c = C; } .........

  • }



Bazen şu stil kullanılıyor:

  • Bazen şu stil kullanılıyor:

  • public class Ikinci Derece{ private double a, b, c; ........

  • public IkinciDerece(double a, double b, double c){

  • this.a = a; this.b = b; this.c = c; } .........

  • }

























Dallanmalar

  • Dallanmalar

    • if
    • switch
    • ?
  • Tekrarlar

    • for
    • while
    • do - while


if(önerme) ifade;

  • if(önerme) ifade;

  • if(önerme){

  • ifade;

  • ifade

  • ifade

  • ....

  • }





if(önerme) ifade; else ifade;

  • if(önerme) ifade; else ifade;

  • if(önerme){

  • ifade;

  • ifade;

  • ....

  • }

  • else{

  • ifade; ifade: .....

  • {









Aslında...

  • Aslında...

  • if(önerme){

  • }

  • else{

  • }







switch(ifade){

  • switch(ifade){

  • case sabit:

    • ifade;
    • ifade;
    • ...
    • break;
  • case sabit:

    • ifade;
    • ifade;
    • break;
    • ---


Tekrarlar

  • Tekrarlar

    • for
    • while
    • do - while


for(tarif ve ilk değer; kontrol; değişim){

  • for(tarif ve ilk değer; kontrol; değişim){

  • ifade;

  • ifade;

  • -----

  • }

  • for(int i = 0; i < 7; i++){

    • Thread.Sleep(100);
    • at();
  • }







1) Açı değerini alarak kurulsun. Açıyı derece cinsinden alsın, kurulurken en küçük radyan değerine çevrilsin. (1 rad = 180/π) π = 3,1415926535897932

  • 1) Açı değerini alarak kurulsun. Açıyı derece cinsinden alsın, kurulurken en küçük radyan değerine çevrilsin. (1 rad = 180/π) π = 3,1415926535897932

  • 2) Set de aynı şeyi yapsın.

  • 3) Get derece döndürsün.

  • 5) Sinüs hesaplayan bir metot olsun Sin x = x – x3/3! + x5/5! – x7/ 7! + ...

  • 6) Kosinüs hesaplayan bir metot olsun Cos x = 1 – x2/2! + x4/4! – xN/N! + …

  • 7) Bir Acı nesnesinin hesapladığı Sin ve Cos ile Math sınıfının hesapladıklarını karşılaştırarak yaptığınızı denetleyin.























Tıpkı gün gibi

  • Tıpkı gün gibi

  • Aylar 0- 11 arasında kodlanıyor

  • Sayiya ve Yaziya metotları var

  • Topla metodu var



Gecen hafta yazdığınız Aci sınıfına iki metot veya property ekleyin:

  • Gecen hafta yazdığınız Aci sınıfına iki metot veya property ekleyin:

    • Radyana(double derece)
    • Dereceye(double radyan)
    • ---
    • Aci BirAci = new Aci(45.0);
    • ---
    • BirAci.Derece(); //Bunun değeri 45.0 olsun
    • BirAci.Radyan(); // Bunun değeri π/4 olsun.
  • Nasıl yapacağınızı bilmediğim için parametreleri çeşitli yazdım...

































Array

  • Array

  • ArrayList

  • HashTable

  • SortedList





Avantajlar:

  • Avantajlar:

  • Kolay (her programlama dilinde var)

  • Hızlı

  • Üyenin tipini siz belirliyorsunuz

  • Dezavantajlar

  • Boyu sabit

  • Araya üye sokmak zor



public string Yaziya(int ggun)

  • public string Yaziya(int ggun)

  • {

  • return Gunler[ggun];

  • }

  • public int Sayiya(tring gunismi)

  • {

  • return Gunler.IndexOf(gunismi);

  • }



Gunleri ard arda yazmak istiyoruz:

  • Gunleri ard arda yazmak istiyoruz:

  • lbl.Text = “Pazartesi ” + “Salı ” + “ Çarşamba” +- - -

  • yerine:

  • lbl.Text = “”;

  • foreach(string gun in Gunler){

  • lbl.Text += gun;

  • }



ArrayList identifier = new ArrayList();

  • ArrayList identifier = new ArrayList();

  • ArrayList gunler = new ArrayList();

  • Peki boyu belli değil...

  • gunler.Add(“Pazartesi”);

  • gunler.Add(“Salı”);

  • gunler[0].ToString() >>> “Pazartesi” verir.



İşe yarayan bazı özellik (property) ve metotlar:

  • İşe yarayan bazı özellik (property) ve metotlar:

  • gunler.Count >>>> 7 verir (bütün günler girilmişse)

  • gunler.Clear();

  • gunler.RemoveAt(1);

  • gunler.Reverse();

  • gunler.Sort();

  • gunler.Remove(“Çarşamba”);



foreach ile çalışır.

  • foreach ile çalışır.

  • Her türlü nesneyi taşır

  • Avantajlar: Otomatik boy Üye sokup çıkarmak çok kolay Kolay kullanış

  • Dezavantaj Yavaş



ArrayList gibi... Fakat indeks yerine nesne var. (Kullanımda nesne genellikle string)

  • ArrayList gibi... Fakat indeks yerine nesne var. (Kullanımda nesne genellikle string)

  • Hashtable Ulke = new Hashtable(),

  • Ulke[“tr”] = “Türkiye”;

  • Ulke[“de”] = “Almanya”;

  • Ulke[“to”] = “Tonga”;

  • veya

  • Ulke.Add(“tr”, “Türkiye”);

  • Ulke.Add(“de”, “Almanya”);

  • -- -- --



Bir üyeye ulaşmak için:

  • Bir üyeye ulaşmak için:

  • string hangiUlke = Ulke[“tr”];

  • hangiUlke’nin içinde “Türkiye” vardır.

  • foreach kullanımı:

  • foreach(DictionaryEntry ulkeler in Ulke){

  • ----

  • }



Avantajlar:

  • Avantajlar:

  • Esnek kullanım

  • Hızlı bulma...

  • Dezavantajlar

  • Sıraya sokulamaz

  • Kuruluş yavaş, yeni üye sokmak yavaş



ArrayList gibi, fakat eleman eklendikçe otomatik olarak sıraya sokuyor.

  • ArrayList gibi, fakat eleman eklendikçe otomatik olarak sıraya sokuyor.

  • Hashtable gibi, fakat sıraya sokamama problemi yok

  • Meselâ: Öğrenci isimlerini otomatik sıraya sokarak bir öğrenci koleksiyonu yaratabilir.

  • Kelime- açıklama ikilisi ile sözlük yaratabilir...



Öğrenci sınıfı yazın. Numara, İsim, Not özellikleri olsun

  • Öğrenci sınıfı yazın. Numara, İsim, Not özellikleri olsun

  • Sınıf sınıfı yazın. İçinde uygun dizi çeşitleriye öğrenci nesnelerini taşısın.

  • Sınıf nesnelerinin ortalama hesaplayacak bir metodu olsun. Ortalam hesabında foreach kullansın.

  • Kullanıcı ara yüzü numaraya veya isme göre (istenirse birine, istenirse diğerine göre), numara, isim, notu versin. Sınıf ortalaması da görünsün.

  • Temel dizi, ArrayList, HashTable ve SortedList kullanarak ayrı ayrı yapın.















































Yazmada ve okumada sayının, tarihin, diğer yazılanların şeklini yönetemiyorduk.

  • Yazmada ve okumada sayının, tarihin, diğer yazılanların şeklini yönetemiyorduk.

  • Sayı formatları

  • Tarih formatları

  • Kültür



c veya C ---- para

  • c veya C ---- para

  • f veya F ----- tam sayı

  • d veya D ---- ondalık sayı

  • x veya X ---- heksadesimal sayı

  • e veya E ----- bilimsel (üstel)

  • Her birinin sonuna kaç rakam hassasiyet istediğinizi bildiren bir sayı koyabilirsiniz: F10, D5 gibi.

  • Kendi tasarladığınız formatlar



DateTime, zamanı, 1 Ocak 1900’den bu yana geçen milisaniye sayısını tam sayı olarak tutar.

  • DateTime, zamanı, 1 Ocak 1900’den bu yana geçen milisaniye sayısını tam sayı olarak tutar.

  • Y2K kıyamet korkusu

  • d ---- 30.04.2007

  • D --- 30 Nisan 2007 14:33:44

  • M --- 30 Nisan

  • t ---- 14:33

  • T --- 14:33:44

  • F --- 30 Nisan 2007 14:33:44













İki sembol: xx - XX

  • İki sembol: xx - XX

  • tr - TR

  • en - US

  • ru - RU

  • ar - SA

  • İki assembly gerekiyor: using System.Globalization using System.Threading





Niçin okuma ve yazma öğrenmeliyiz?

  • Niçin okuma ve yazma öğrenmeliyiz?

  • Okuma, yazmaya bakış:



using System.IO

  • using System.IO

  • Stream, FileStream, File

  • Directory









Veri tabanı?

  • Veri tabanı?

  • İlişkili Veri Tabanı Relational Data Base Tablo(lar)































Yüklə 441 b.

Dostları ilə paylaş:




Verilənlər bazası müəlliflik hüququ ilə müdafiə olunur ©muhaz.org 2024
rəhbərliyinə müraciət

gir | qeydiyyatdan keç
    Ana səhifə


yükləyin