29 Haziran 2010 Salı

SQL C# BAĞLANTISI-C#DAN VERİTABANINA BİLGi EKLEME-SİLME

              Sqlde tablolarımızı oluşturduktan sonra c#da  kodlar yardımıyla veritabanına bilgi ekleme ya da silme işlemlerini gerçekleştirebiliriz.
Bununla ilgili c#da yazılmış örnek kodu inceleyelim:
             Öncelikle projede gerekli form dizaynını yapmalıyız,bir tane datagridview ve gerekli button textbox ve labelları eklememiz gerekir



using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;                                 //sql bağlantısı için gerekli kütüphane
namespace Sql_komutları_deneme
{
    public partial class Form1 : Form
    {   //tanımlamaları public yapıyoruz ki hepsi için geçerli olsun
        SqlConnection baglantim;
        SqlDataReader reader;
        SqlCommand komut;
        SqlDataAdapter adaptör;
        DataSet dataset;

        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {

 baglantim = new SqlConnection();    //sql ile bağlantı kurulmasını sağlar
            baglantim.ConnectionString = "Integrated Security=True;  Initial Catalog=csaharptanbaglanma;  Data Source=DERYA-PC\\SQLEXPRESS;";     //database ve serverisimlerinin verilmesi gereken connectionstring
            baglantim.Open();                      //bağlantıyı açmak gerekir

             dataset = new DataSet();
            SqlDataAdapter adaptör = new SqlDataAdapter("select* from  Bilgiler    ", baglantim);   //bağlanılacak tablo belirlendi

            adaptör.Fill(dataset, "Bilgiler");          //dataadapterdaki bilgiler datasete aktarıldı

            dataGridView1.DataSource = dataset.Tables[0];           //tablo datagridviewde görüntüleniyor

            komut = new SqlCommand();
            komut.Connection = baglantim;            //sql cümlelerinin yazıldığı yer


 }

private void button_sil_Click(object sender, EventArgs e)        
                                          //silme  butonu,seçili olan satırın silinmesini sağlıyor
        {


            try
            {

                //komut.CommandText = "delete from Bilgiler where Ad='abc'";     //adı abc olanı siler
                               //seçili olanın silinmesi olayı
                komut.CommandText = "delete from Bilgiler where Id='" + dataGridView1.CurrentRow.Cells["Id"].Value.ToString() + "  '  ";//seçili olanı siliyor
                reader = komut.ExecuteReader();
                reader.Close();
            }
            catch
            {
                MessageBox.Show("secili alan yok!!!!!");                  
            }
            finally
            {
                Form1_Load(sender, e);     //silme işlemini yaptıktan sonra formun güncellenmesini sağlıyor

            }


        }
//textboxlara yazılanların veri tabanına eklenemesini sağlıyor
        private void button_ekle_Click(object sender, EventArgs e)
        {
            try
            {

                komut.CommandText = "insert into Bilgiler values('" + textBox1.Text + "','" + textBox2.Text + "','" + textBox3.Text + "','" + textBox4.Text + "','" + textBox5.Text + "')";
                reader = komut.ExecuteReader();   /

            }
            catch
            {
                MessageBox.Show("ekleme islemi gecersiz!!!bosalan veya farklı id de eleman eklenmeli");
            }
            finally
            {
                Form1_Load(sender, e);     //silme işlemini yaptıktan sonra formun güncellenmesini sağlıyor

            }
        }

    
      
    }
}
  
     Yapmış olduğumuz bütün değişiklikler veritaanına da yansımış oluyor..............




DERYA GÜNDÜZ

28 Haziran 2010 Pazartesi

Ankara'da bir yaz......................

          Stajımı Ankara'da yapmam dolasıyla dün  Eskişehir'den ayrıldım,Eskişehir'den,  ordaki evimden,ev arkadaşımdan ayrılmam çok zor oldu:(    Bu yaz Ankara'dayım   yazı Çileğimle(yani Çilem ile) aynı evde geçirecem.Çok verimli ve eğlenceli bir yaz geçirmeyi diliyorum. Memlekete ,Mardin'e gidemeyince ailem Ankara'ya gelecek,onları da çok özledim,onlarla  da biraz zaman geçirme fırsatı bulacam,sonra da uzaklara...................  Erasmus için Litvanya'ya gidecem.Gideceğim için çok mutluyum ama geride bıraktıklarımı çok özleyecem..................


DERYA GÜNDÜZ

BİLGEADAM'DA STAJ


                   Konya- Bilgisayar Mühendisleri Kongresi(BİLMÖK)   de BilgeAdam oturumu da vardı.Orada Sedat Salman Hocam ve BilgeAdam Pazarlama Sorumlusu Sercan Tabur ile tanışmıştım,BilgeAdam'da staj yapmak istediğimi söylemiştim.Daha sonra Ankara'ya gelip Cv mi verdim,  Cv mi İstanbul'daki Genel Müdürlüğe gönderdiler ve staj başvurum kabul oldu..Yrn staja başlıyorum ve biraz heyecanlıyım,eminim BilgeAdam ailesinden  öğrenceğim çok şey vardır,çok verimli olmasını diliyorum..............
             Stajda yaptıklarımı ve öğrendiklerimi blogumda paylaşacam................
    


DERYA GÜNDÜZ

24 Haziran 2010 Perşembe

TAM BİR BİLGİSAYAR MÜHENDİSİNE YAKIŞIR DAVETİYE:)


    Face'de dolaşırken,arkadaşlardan birinin böyle bir paylaşımda bulunduğunu gördüm,çok hoşuma gitti,bir bilgisayar mühendisinin düğün davetiyesi:)

DERYA GÜNDÜZ

17 Haziran 2010 Perşembe

BİLYAZ.COM 'da yönetici oldum:):)

           Arkadaşlar bildiğiniz üzere    bilyaz.com    adlı paylaşım sitesinde programlama  ile ilgili makaleler yazıyorum.
           Bundan 3 4 ay önce  internette gezinirken bu siteyi görmüştüm.Bizim okuldan bikaç arkadaşın adını da yazar listesinde görünce  çok hoşuma gitmişti ben de böyle bir şey yapabilirim diye düşündüm.Sitede "editör ol"  diye bir seçenek vardı şansımı denemek istedim. Ben de sitenizde yazmak istiyorum diye mail attım.Hemen geri dönüşte bulundular, yöneticisi ile msn de konuştum bana çok sıcak davrandı ve  beni yazar olarak eklediğini söyledi çok mutlu oldum.Sisteme girip yazı ekleyebilmem için de  bana kullanıcı adı ve şifre verdi.Çok heyecanlandım birkaç gün sonra ilk yazımı gönderdim,yazdığım yazının  böyle bir sitede yayınlanmış olması okadar hoşuma gitti ki...  Bu dönem boyunca  elimden geldiği kadar paylaşımda bulunmaya çalıştım.Okulda gördüğümüz  programlama  dillerine paralel programlama ile ilgili makaleler örnek kodlar yayınladım.Buarada sitenin kurucusu Tahir Mutlu ile  sürekli iletişim içinde  oldum,kendisi   bana sürekli yardımcı oldu.

          Bugün bana mail atmış Tahir Mutlu, paylaşımlarım ve çabam için beni tebrik ettiğini yazmış ve beni yönetici listesine eklediğini söylemiş.Çok mutlu oldum böyle güzel ve büyük bir sitede  yönetici olmak beni çok onurlandırdı.Artık yazar ekleme, yazıları güncelleme, yorumları kontrol etme gibi haklarada sahip olacakmışım..
          Son zamanlarda aldığım en güzel haberlerden,çok teşekkür ederim Tahir Hocam,herşey için.........................................
          Siteyi görüntülemek için      tıklayın.

DERYA GÜNDÜZ

PIC 16F877A DA YANAN LEDİN SAĞA SOLA HARAKET ETMESİ-RLF RRF KULLANIMI

         Pic 16f877a da ledin yanması demek  kullanılan  potrun ilgili  bitinin "1" olması demektir.Yanan bir  ledin sağa sola hareket etmesini sağlayan özel komutlar  vardır:

rlf :   Açılımı "rotate left file",içeriği sola kaydırmaya yarar.Örneğin portun içinde b'01000000'  ise  rlf komutu bir kere uygulandığında b'10000000'   şeklinde olur.

rrf:   Açılımı "rotate right  file",içeriği sağa kaydırmaya yarar.Örneğin portun içinde b'01000000'  ise  rrf komutu bir kere uygulandığında b'00100000'   şeklinde olur. 


           portun içeriğini sağa  sonra sola kaydıran örnek kodu inceleyelim:
 Bu kodda    PORTB nin içine en başta b'00000001'  sayısı  yerleştiriliyor,içerik 7. bit 1 olana kadar her defasında  bir bit sola kaydırılıyor, çünkü 7. bit  1 olduğunda sola kayacak yer klamıyor,bu kontrolden sonra  sağa kaymalar başlayacaktır.Bu aşamada da içerik0. bit 1 olana kadar  her defasında bir bit olmak üzere sağa kaydırılıyor ,0. bit  1 olduğunda yine sola kayma olacaktır.
  

                  SAYAC1 EQU h’0C’   ;gecikme sayacları için adresler belirtiliyor

                  SAYAC2 EQU h’0D’

                       CLRF PORTB      ;potrbnin içi en başta temizleniyor
            BSF STATUS,5             ;bank1 tris registerlarının ayarlanması için seçildi
                      
                 CLRF TRISB             ;portb çıkış portu yapıldı

                  BCF STATUS,5                  ;port içeriği ile ilgili işlem yapılması için tekrar bank0 a geçildi
               MOVLW h’01’                
               MOVWF PORTB            ;portb nin içine b'00000001'  sayısı atıldı
SOL:

             CALL GECIKME;en başta bi bekleme anı oluyor

            RLF PORTB,F               ;içerik 1 birim sola kaydı

  BTFSS PORTB,7            ;portbnnin 7. biti kontrol ediliyor,
1 ise sağa kaydırma başlayacak 1 değilse tekrar  sola kayma olacaktır                                                                                                

GOTO SOL

SAG:

CALL GECIKME                    ;bekleme yapılıyor

RRF PORTB,F                     ;içerik 1 birim sağa kaydırılıyor

BTFSS PORTB,0                  ;portbnin 0. biti kontrol ediliyor 1 ise sola kaymaya geçilecek,0 ise sağa ;kaymaya devam

GOTO SAG

GOTO SOL

GECIKME:

              MOVLW h’FF’

             MOVWF SAYAC1           ;gecikme için sayac1 in içine h'FF'  sayısı atılıyor

DONGU1:

          MOVLW h’FF’

               MOVWF SAYAC2                 ;gecikme için sayac1 in içine h'FF'  sayısı atılıyor

DONGU2:

          DECFSZ SAYAC2,F

    GOTO DONGU2           ;sayac2 nin içindeki sayı 0 olana  kadar her defasında 1 azalt,0 olunca saya1 i      ;                                       ;azaltmaya git

               DECFSZ SAYAC1,F        ;sayac1in içi 0 olana kadar her defasında 1 azalt,0 olduğunda return yap

              GOTO DONGU1

              RETURN            ;en son callın yapıldığı adrese  gider

        END        ;programo bitir


   

DERYA GÜNDÜZ

PIC 16F877A DA YANAN LEDİN SAĞA SOLA HARAKET ETMESİ-RLF RRF KULLANIMI

         Pic 16f877a da ledin yanması demek  kullanılan  potrun ilgili  bitinin "1" olması demektir.Yanan bir  ledin sağa sola hareket etmesini sağlayan özel komutlar  vardır:

rlf :   Açılımı "rotate left file",içeriği sola kaydırmaya yarar.Örneğin portun içinde b'01000000'  ise  rlf komutu bir kere uygulandığında b'10000000'   şeklinde olur.

rrf:   Açılımı "rotate right  file",içeriği sağa kaydırmaya yarar.Örneğin portun içinde b'01000000'  ise  rrf komutu bir kere uygulandığında b'00100000'   şeklinde olur. 


           portun içeriğini sağa  sonra sola kaydıran örnek kodu inceleyelim:
 Bu kodda    PORTB nin içine en başta b'00000001'  sayısı  yerleştiriliyor,içerik 7. bit 1 olana kadar her defasında  bir bit sola kaydırılıyor, çünkü 7. bit  1 olduğunda sola kayacak yer klamıyor,bu kontrolden sonra  sağa kaymalar başlayacaktır.Bu aşamada da içerik0. bit 1 olana kadar  her defasında bir bit olmak üzere sağa kaydırılıyor ,0. bit  1 olduğunda yine sola kayma olacaktır.
  

                  SAYAC1 EQU h’0C’
                  SAYAC2 EQU h’0D’

                       CLRF PORTB      ;potrbnin içi en başta temizleniyor
            BSF STATUS,5             ;bank1 tris registerlarının ayarlanması için seçildi
                      
                 CLRF TRISB             ;portb çıkış portu yapıldı

                  BCF STATUS,5                  ;port içeriği ile ilgili işlem yapılması için tekrar bank0 a geçildi
               MOVLW h’01’                
               MOVWF PORTB            ;portb nin içine b'00000001'  sayısı atıldı
SOL:

             CALL GECIKME;en başta bi bekleme anı oluyor
            RLF PORTB,F               ;içerik 1 birim sola kaydı
  BTFSS PORTB,7            ;portbnnin 7. biti kontrol ediliyor,1 ise sağa kaydırma başlayacak 1 değilse tekrar                                                                                                          ;sola kayma

GOTO SOL

SAG:

CALL GECIKME                    ;bekleme yapılıyor
RRF PORTB,F                     ;içerik 1 birim sağa kaydırılıyor
BTFSS PORTB,0                  ;portbnin 0. biti kontrol ediliyor 1 ise sola kaymaya geçilecek,0 ise sağa ;kaymaya devam

GOTO SAG
GOTO SOL

GECIKME:

              MOVLW h’FF’
             MOVWF SAYAC1           ;gecikme için sayac1 in içine h'FF'  sayısı atılıyor

DONGU1:

          MOVLW h’FF’
               MOVWF SAYAC2                 ;gecikme için sayac1 in içine h'FF'  sayısı atılıyor

DONGU2:

          DECFSZ SAYAC2,F
    GOTO DONGU2           ;sayac2 nin içindeki sayı 0 olana  kadar her defasında 1 azalt,0 olunca saya1 i      ;                                       ;azaltmaya git

               DECFSZ SAYAC1,F        ;sayac1in içi 0 olana kadar her defasında 1 azalt,0 olduğunda return yap
              GOTO DONGU1

              RETURN            ;en son callın yapıldığı adrese  gider

        END        ;programo bitir


   

DERYA GÜNDÜZ

16 Haziran 2010 Çarşamba

C++ da Function Template-Class Template

           Template in kelime anlamı taslaktır,c++ daki  kullanım şekli de kelime anlamına çok yakın bir kullanımdır. Fonksiyonu taslak olarak yazıyorsunuz ve  bu  fonksiyon farklı kullanım şekilleri  için esnek bir yapıya  sahip oluyor.
          C++ daki Function Template için  farklı tiplerde  kullanım esnekliği vardır.Bir  fonksiyonu farklı farklı tipler için ayrı ayrı yazmak yerine,tek bir  fonksiyon taslağı yazıp  bunu farklı tipler için kullanabilirsiniz.
          örneğin bir mutlak değer  fonksiyonun int veri tipi için şu şekilde yazarız:


        int mutlakdeger(int a){
      if(a<0)    return a;
       else return -a;
        }
    
      double veri  tipi için olanını şu şekilde yazarız:
                          
        double  mutlakdeger(double  a){
      if(a<0)    return a;
       else return -a;
        }
      
     long olan için ;
            long  mutlakdeger(long  a){
      if(a<0)    return a;
       else return -a;
        }
      
               yani bütün tipler için ayrı ayrı yazardık.Bunu  taslak şeklinde yazıp  bütün veri tipleri için kullanabilmek istediğimiz   zaman yapmamız gereken şey fonksiyonu template  şeklinde tanımlamak.

           Template kulllanımı şu şekilde: 


    template            //fonksiyonun başına yazılması gereken
     T mulakdeger (T a)                    //yukarda tanımladığımız template Tyi  veri tipi olarak  kullandık
  
             {

 if(a<0)    return a;
       else return -a;

         }
            int  main(){
              cout<<"int veri tipi için mutlak deger alma"<
              cout<<"double veri tipi için mutlak deger alma"<
             }
  bu şekilde kullanarak her veri tipi için ayrı yazma  gerekliliğinden kurtuluruz,kodlar kısalır fazla zaman  harcamak zorunda kalmayız.
          
    Template çeşitleri:

  •  template      //fonksiyonlar için kullanılır
  •  template                 //classı template şekilde kullanabilmek için,daha çok data                storage classlarda(container)  kullanılır
  •  template        //birden fazla  tip tanımlayabiliriz
       Class Template:
            templateler ayrıca classlar için de kullanılabilir,işlev olarak  functşon template gibidir
           
           template
class  deneme{
                    //  classın diğer  elemanlarının prototypeları  yazılır
...............
       public int  denemefonk(T  ){}
........... 
            };
            implementasyonlar:

         template
          deneme::denemefonk(T  a){...........}

           int main(){
         denemenesne;
          ...........
       }

  şeklinde kullanılır............
     



DERYA GÜNDÜZ

4 Haziran 2010 Cuma

pic 16f877a portlar ve port seçimleri

portlar nedir ne işe yarar?



portlar,microcontroller ile bileşenleri arasındaki bağlantının kurulmasını sağlar.






pic 16f877a da  5 tane  port vardır:

  • PORT A
  • PORT B
  • PORT C
  • PORT D
  • PORT E
 portların giriş çıkış  portları olması
portlar  kullanılacakları konuma  göre bazen çıkış portu bazen de giriş portu olmalıdır.portun  giriş ya da  çıkış portu olmasını yada  bazı bitlerinin  giriş bazı  bitlerinin çıkış olmasını  TRIS adındaki  özel bir register sağlar.
hangi port için çalışacaksak trisx  deyip bitlerini  değiştiririz.

0------>çıkış
1------>giriş

    clrf    TRISB            ;b  portunun bütün bitlerini çıkış yapar 

   movlw  h'ff'     
   movwf  TRISA         ;a  portunun  bütün bitlerini  giriş yapar


ya da  bazı bitleri girş  bazılarını çıkış da  yapabiliriz:
     movllw  b'00001111'
    movwf     TRISD        ;d  portunun ilk 4  bitini giriş,son 4 bitini çıkış yaptık

porta yazma porttan okuma:
clrf          TRISB           ;önce  b  portunun bütün bitlerini çıkış olarak ayarlıyoruz
movlw     0x55               
movwf      PORTB         ;portb nin içine  55 hex  yazdık

  movlw  h'ff''
movwf    TRISA       ;a  portunu okuma yapmak için giriş portu yaptık
movf  PORTA,w
movwf   myreg          ;porta nın içeriğini  myreg adında  bir registera attık



assembly 80-80 Branch ve jump kullanımı

branch'in kelime anlamı dallanmak demektir,branchde  bir durumun kontrolü yapılır,ona  dallanma olur.
assemby 80-80de 2 tane  branch komutu vardır:

BRN:branch on negative (negatife dallan) demektir,sayının negatif  olup olmadığını kontrol eder,sayı negatif ise sonraki satırı atlayıp onun altındaki satırdan devam eder,negatif değilse de normal sırada devam eder.

BRZ:branch on zero (sıfıra dallan) demektir,sayının 0 olup olmadığını kontrol eder,0 ise alttaki satırı atlar,devam eder;0  değilse de normal sırayı takip eder.

jump'ın  kelime  anlamı atla,zıpla demektir,jump komutu  geldiği zaman  kod akışı  jump edilen adresten devam eder.

örnek bir  kodu inceleyelim:
bir sayının mutlak değerini bulan assembly kodu yazınız,sayı  20 hex adresindedir,mutlak değeri de  20 hex değerine yazınız,r2 ile  point ediliyor.

1         LDI       r5,7            ;jump yapabileceği adresin değerini  r5 registerında tutuyorum

2         LD        r1,r2            ;mutlak değeri alınacak sayıyı r2den r1  registeriına  atıyorum  
        
3        BRN       r1                ;sayının  negatif olup olmadığına  bakıyorum

4          JMP  r5                 ;negatif değilse  birşey yapmaya gerek yok,7. satırdaki komutu işle,yani çıkış

5         NOT  r1,r1           ;negatifse  tersini  al,pozitif yap

6         ST    r2,r1             ;tersini aldığın sayıyı  yerine  yükle

7         Halt                      ;bitir



DERYA GÜNDÜZ

3 Haziran 2010 Perşembe

assembly 80-80

digital system dersinin sonlarına  doğru simple  computer dahilinde assembly 80-80  gördük,daha  önce  öğrenmiş olduğum pic  16f877a  den bayağı  bir farklı geldi.
Assembly 80-80 assembly diline  griş  şeklinde,eksikleri  fazla olan ve günümüzde  yetersiz kalan bir dil,16f877a  ile komutları ve adreslerin hafızalanması  da  farklı.
assembly  80-80de verilerle ilgili işelmler nasıl yapılır?
adressleri  bir  pointer işret  ediyor  ve  adresler üzerinde  işlem yapılamıyor,işlem yapılmak istendiğinde  onu  registerlara taşıyıp  o şekilde işlem yapmak gerekiyor,hangi adresteki bilgiyi taşıyıp onun üzerinde  işlem yapmak istiyorsak  pointerı da  oraya getirip onun yardımıyla taşıma  yapabiliyoruz.

şimdi basit  bir  toplama-çıkarma  işlemini inceleyelim:
memoryde 248hex adresinde "2" verisi,249hex  adreside "153"  verisi  yazılıyor olsun,bizden istenen işelem:
 153+2-5  ve sonucu  250 hex memory alnına yazmamızı istiyor.248 hex adresini de r3   point ediyor(r3=248)
LD     r1,r3                      ;r3 ün içindeki 2 yi r1  registerına  taşıyorum

 LDI      r2,5                      ;r2  registerının  içine  5 i  atıyorum 

 SUB    r1 ,r1,r2                  ;2-5  işlemini gerçekleştiriyorum  
                          
INC     r3,r3                       ;r3 pointerını 249 adresine  getiriyorum

LD      r4,r3                       ;r3ün içindeki  153 verisini alıp r4 reg  atıyorum

ADD    r1,r1,r4                      ;-3+153      işlemini gerçekleştiriyorum

INC      r3,r3                         ;sonucu yazmak için  pointerı 250ye getirdim

ST     r3,r1                            ;sonucu registerdan adrese atıyorum,store  komutu ile

                
DERYA GÜNDÜZ
 
Facebook

Bizi takip edin!

ESOGÜ Bilişim GünleriESOGÜ Bilişim Günleri