15 Ocak 2015 Perşembe

Word'de iki farklı formatta sayfa numarası nasıl verilir?

Bir word belgesi içerisinde iki farklı formatta sayfa numarası eklemek genelde Tez, Staj Raporu, Bitirme projesi vb. hazırlayanlar için genel bir problemdir...bu sorunun aslında basit bir çözümü var.

Örneğin; MS Word'de 200 sayfalık bir belgemiz mevcut. 1. Sayfamız Kapak, 2-10 arası sayfalarımız Roma Rakamı (i, ii, iii) ve 11-200 arası sayfalarımızıda sıralı normal rakam (1,2,3) olarak düzenlemek ve sayfa numaraları vermek istiyoruz.

Adım adım farklı formatta sayfa numarası verme işlemini uygulayalım:

İlk olarak kapak sayfamızın sonuna gelip imleci tıklıyoruz ve yukarıdaki menülerden Page Layout (Sayfa Düzeni)  / Breaks (Kesmeler) / Section Break (Bölüm Sonu) altındaki Next Page (Sonraki Sayfa)'ya tıklıyoruz.

Page Layout (Sayfa Düzeni)  / Breaks (Kesmeler) / Section Break (Bölüm Sonu) / Next Page (Sonraki Sayfa)
Roma rakamı vermek istediğimiz bölümün sonuna gelip aynı işlemi tekrarlıyoruz. Page Layout (Sayfa Düzeni) / Breaks (Kesmeler) / Section Break (Bölüm Sonu) altındaki Next Page (Sonraki Sayfa)

Roma rakamı vermek istediğiniz bölümün ilk sayfasına geliyoruz Insert (Ekle) menüsünden Sayfa Numarası Ekleyelim. Page Number Format (Sayfa Numarası Biçimi) ekranında Number Format (Sayı Biçimi) Roma Rakamını seçiyoruz ve  Start at (Başlangıç) olarak "i" seçelim.
Sıralı normal rakam vereceğimiz sayfalar içinde yine sayfanın başına gidiyoruz ve Page Number Format (Sayfa Numarası Biçimi) ekranını açıyoruz.  Burada da başlangıcı "1" olarakdeğiştiriyoruz.
Son olarak Kapak sayfamıza eklenmiş olan numarayı kaldıracağız.Kapaktaki sayfa numarasını kaldırmak için sayfanın en alt veya üst kısmına (sayfa numarasının konumuna göre) çift tıklayın. Header Section / Footer Section (Üstbilgi ve Altbilgi) Araçları altında Design (Tasarım) sekmesinin altında Different First Page (İlk Sayfada Farklı) kutucuğunu işaretleyin. 

13 Ocak 2015 Salı

C Programlama Gösterge (Pointer) Kavramı

Değişkenlerin kapladıkları hücrelerin adreslerini saklamak için başka değişkenler de kullanabiliriz. Bu değişkenlere gösterge adı verilir. Göstergeler, diğer değişkenler gibi, sayısal bir değişkenlerdir. Bu sebeple kullanılmadan önce program içinde bildirilmelidir. 

Sözdizimi :   tip_adı *gösterge_adı;

int *bayraktar;
float *x, *y, *z

Gösterge Operatörleri ( & ve *) : "&" değer atama operatörüdür. Örneğin bayraktar = &y; ifadesinde y değişkenini gösteren bayraktar göstergesidir. "*"  yönlendirme operatörünün göstergeyi tanımlamanın dışında bir görevi daha vardır. Örneğin *bayraktar ifadesi, bayraktar'ın gösterdiği hücrenin içeriğine ulaşmak içinde kullanılabilir. *bayraktar = 66; gibi...

Bir göstergenin bellekte herhangi bir hücreyi göstermesini istemediğimiz zaman NULL isimli sabit kullanılır. NULL göstergenin bellekte hiç bir yeri göstermediğini belirten 0 değeridir.
int *bozok = NULL;

Dinamik Bellek Kullanımı: Programın çalışması esnasında özel komutlar kullanarak bellekten yer alınıp kullanılmasına dinamik bellek kullanımı adı verilir. Dinamik değişkenler için bellekte ayrılan yere yığın (heap) adı verilir. Dinamik bellek kullanımını new ve delete komutları ile gerçekleştiririz..

new komutu ile bellekten istediğimiz veri Npi boyutunda bir yer alabiliriz.
int *ornek; //ornek adlı tamsayı gösterecek bir gösterge tanımlıyoruz.
ornek = new int; //bellekten tamsayı kadar yer ayrılır, bu yerin adresi burada ornek'e aktarılır.
*ornek = 9; //bellekten alınan yeni yere 9 atanır.

int *bozok=new int(9); //değişken tanımlanması esnasındada ilk ataması yapılabilir.

Dinamik bir Dizi Oluşturalım ve tekrar bellekten Silelim :
int *ornekdizi; //ornekdizimiz tamsayı gösterecek şekilde tanımlanır. 
ornekdizi=new int[10]; //bellekten 10 tamsayı dizisi için yer tahsis edilir ve dizinin adresi ornekdizi'ye atanır.
ornekdizi[2]=16; //bellekten alınan dizinin 1.indeksteki elemanına 15 atanır.
Bellekten new ile aldığımız yerler, kullanımları sona erdiğinde yeniden kullanılamazlar. Bu nedenle bellekten aldığımız hücreleri program bitmeden delete komutu ile silmemiz gerekir.

int *bozok=new int; //bozok göstergesine tamsayı boyutunda yerin adresi atanır.
*bozok=16; //bozok göstergesinin gösterdiği yere 16 atanır.
cout<<*bozok; //atanan 16 değeri yazdırılır.
delete bozok; //ayrılan yer belleğe geri döndürülür.

int *ornekdizi; //ornekdizi adında tamsayı gösterecek bir gösterge tanımlanır.
ornekdizi=new int[8]; //bellekten 8 tamsayı dizisi için yer ayrılır ve dizinin adresi ornekdizi'e atanır.

ornekdizi[1]= 13; //bellekten alınan dizinin 1.indeksteki elemanına 13 atanır.
delete [] ornekdizi; //oluşturulan dizinin tüm elemanları belleğe geri döndürülür.

Örnek:
#include <stdio.h>
#include <conio.h>
#include <cstdlib>
#include <iostream>

using namespace std;

void oku(int[],int);
int main(int argc, char *argv[])
{
   int mevcut, toplam=0;
   int max=0;
   int *notlar;
   cout<<"Sinif mevcudunu Giriniz: ";
   cin>>mevcut; //Sınıf mevcudunu okuyoruz
   notlar=new int[mevcut]; //Sınıf mevcudu kadar dinamik dizi yaratıyoruz
   oku(notlar,mevcut); 
   
   for(int i=0; i<mevcut;i++) 
   {
           toplam+=notlar[i];
           if (notlar[i]>max)
           max=notlar[i];
   }
   cout<<"Sinif Ortalamasi= "<<toplam/mevcut<<endl;
   cout<<"En yuksek not = "<<max<<endl;
   delete [] notlar;
   getch();
}
void oku(int notDizi[], int boyut) //Notları okuduğumuz fonksiyon
{
     cout<<"Notlari Giriniz:";
     for(int i=0; i<boyut;i++)
             cin>>notDizi[i];
}

SQL'de Detach/Attach İşlemleri

Bir MDF ve LDF dosyasından oluşan veritabanı, VTYS sistemine bağlı iken sistem dosyaların taşınmasına izin vermez Bu durumda dosyalar önce sistemden "Detach" ile ayrılmalı, daha sonra tekrar istenen başka bir sunucuda "Attach" edilmelidir.

Detach İşlemi


Detach yapılmak istenen veritabanına sağ tıklanır ve Tasks / Detach ile Detach Database ekranı açılır.

Veritabanı sistemden ayrılırken, aktif bağlantılar otomatik kapatılsın mı?  (Drop Connections) Eğer bu seçenek seçilmezse ve aktif bağlantılar varsa, veritabanı ayrılması gerçekleşmeyecektir.

Attach İşlemi
Sistemden ayrılan veritabanına ait MDF ve LDF dosyasının yeri gösterilecek, istenen herhangi bir SQL Server sunucusuna tanıtılabilir.  


Attach yapılmak istenen veritabanı dosyası için Databases sağ tıklanır ve Attach ile Attach Databases ekranı açılır. Açılan ekranda Add butonu ile Attach edilmek istenen VT eklenir OK butonuna tıklanır. OK tuşuna tıkladıktan sonra Database Server'a eklenmiş oldu Server da bunu görmek için Object Explorer penceresinden Refresh işlemi yapılmalıdır.

12 Ocak 2015 Pazartesi

C Programlama Yapılar (Structures)

Herkese selamlar bu makalemde C Programlama Dilinde önemli bir yeri olan Yapılar (Structures) hakkında bildiklerimi paylaşmak istiyorum. 

Yapılar (structures) içinde aynı veya farklı veri tipinde birden fazla eleman saklayabildiğimiz bileşik veri tipidir. Programlarımızda değişkenleri kullandığımız için büyük önemleri vardır. Örneğin dizilerde hafızada bir takım yerler açılır, bu hafıza kısımlarını doldururken belirlemiş olduğunuz değişken tipinin dışına çıkamayız...işte yapılar saysesinde farklı veri tiplerinde birden fazla eleman saklayabiliriz.

struct insan{
       string isim;
       float boy;
       int kilo;
}insan birey; //birey nesnesi

Eğer veri tipi tanımlamayıp sadece değişken tanımlamak istiyorsak bunu şu şekilde gerçekleştirebiliriz;

struct {
       string isim;
       float boy;
       int kilo;
}birey; 

Yapılara İlk Değer Atama : Tüm değişkenlere yapabildiğimiz gibi yapı değişkenlerine de tanımları sırasında ilk değer ataması yapabiliriz.
insan birey={"ibrahim bayraktar",1,74,100}; //birey yapı değişkeni

Yapı Elemanlarına Erişim: Yapıda yer alan elemanlara, nokta (.) operatörü ile erişebiliriz.
yapıDegiskeni.elemanAdı

Örnek :
cout<<kitap1.isim;
kitap1.yayinyili+=5;
if(kitap1.baski>35)...

kitaplar kitap1,kitap2;
cin>>kitap1.isim>>kitap1.yayinyili>>kitap1.baski;
kitap2=kitap1;

Yapı Elemanlarına Erişim Örnek :
#include <stdio.h>
#include <conio.h>
#include <cstdlib>
#include <iostream>

using namespace std;
struct rasyonel_erisim //yapiyi tanımliyoruz.
{
int pay, payda;
};
int main(int argc, char *argv[])
{
    rasyonel_erisim sayi1,sayi2,sonuc;
    cout<<"1.Sayinin Pay ve Paydasini Giriniz:";
    cin>>sayi1.pay>>sayi1.payda;  //burada sayilar okunuyor
    cout<<"2.Sayinin Pay ve Paydasini Giriniz:";
    cin>>sayi2.pay>>sayi2.payda; 
    sonuc.pay=sayi1.pay * sayi2.pay;
    sonuc.payda=sayi1.payda*sayi2.payda; //pay ve paydaları carpiyoruz
    cout<< sayi1.pay<<"/"<<sayi1.payda<<" x ";
    cout<< sayi2.pay<<"/"<<sayi2.payda<<" = ";
    cout<<sonuc.pay<<"/"<<sonuc.payda<<endl; //sonucu yazdiriyoruz
    getch();
}

İç İçe Structures: Bir yapının elemanı başka bir yapı olabilir. Bu durumdaki yapılara iç içe yapı (nested structures) adı verilir.

struct tarih {
       string ay;
       int yil,gun;
}; 
struct insan {
       string isim;
       float boy;
       int  kilo;
       struct tarih dogumTarihi;
};
insan icice;
icice.dogumtarihi.gun=17;

İç İçe Structures Örnek :
#include <stdio.h>
#include <conio.h>
#include <cstdlib>
#include <iostream>

using namespace std;

struct personelBilgi {
    char * isim;
    char * soyisim;
    char * Egitim;

  };

struct personelKayit{
  char * kayitYapanPersonel;
  char * kayitTarihi;
  struct personelBilgi personel;
};

int main(){

  struct personelKayit pk001;

  pk001.kayitYapanPersonel="Ibrahim BAYRAKTAR";
  pk001.kayitTarihi="12.01.2015";
  pk001.personel.isim="FISTIKCI";
  pk001.personel.soyisim="SAHAP";
  pk001.personel.Egitim="Lisans";

  printf("Kayit Islemini Yapan Personel: %s\n", pk001.kayitYapanPersonel);
  printf("Kayit Tarihi: %s\n", pk001.kayitTarihi);

  printf("Personel Isim: %s\n", pk001.personel.isim);
  printf("Personel Soyisim: %s\n", pk001.personel.soyisim);
  printf("Personel Egitim Duzeyi: %s\n", pk001.personel.Egitim);

  getch();
}

C Programlama Dizi Örnekleri

Örnek 1: 10 tamsayıyı 10 elemanlı bir diziye okuyup içlerinden negatif olanları negatif isimli bir diziye, pozitif olanlarını pozitif isimli diziye atan program.


#include <stdio.h>
#include <conio.h>
#include <cstdlib>
#include <iostream>

using namespace std;
void yazdir(int[], int);
int main(int argc, char *argv[])
{
    int sayilar[10], pozitif[10], negatif[10];
    int poz=0, neg=0;
    cout<<"10 Sayi Giriniz: ";
    for (int i=0; i<10;i++)
    {
        cin>>sayilar[i];
        if (sayilar[i]>0) pozitif[poz++]=sayilar[i];
        else if (sayilar[i]<0) negatif[neg++]=sayilar[i];        
    }
    cout<<"Girilen Sayilar: ";
    yazdir(sayilar,10);
    cout<<"Pozitif Sayilar: ";
    yazdir(pozitif,poz);
    cout<<"Negatif Sayilar: ";
    yazdir(negatif,neg);
    getch();
}
void yazdir(int a[], int boy)
{
     for (int j=0; j<boy;j++)
         cout<<a[j]<<" ";cout<<endl;
}   
 
Örnek 2: Birincisi 3 karakterden oluşan, ikincisi 6 karakterden oluşan iki kelimeyi iki diziye okutuyoruz. İlk kelimenin tüm harflerinin ikinci kelimede olup olmadığını ekrana yazdıralım.

#include <stdio.h>
#include <conio.h>
#include <cstdlib>
#include <iostream>

using namespace std;

int main(int argc, char *argv[])
{
    char birincikelime[3], ikincikelime[6];
    bool buldum=true;
    cout<<"Birinci Kelimeyi Giriniz: ";
    cin>>birincikelime;
    cout<<"Ikinci Kelimeyi Giriniz: ";
    cin>>ikincikelime;
    for (int i=0; i<3&&buldum;i++)
    {
        buldum=false;
        for(int j=0; j<6&&!buldum;j++)
        if (birincikelime[i]==ikincikelime[j]) buldum=true;
    }
    if (buldum) cout<<birincikelime<<" kelimesinin tum harfleri "<<ikincikelime<<" kelimesinde bulunmustur.";
    else cout<<birincikelime<<" kelimesinin tum harfleri"<<ikincikelime<<" kelimesinde bulunamamistir.";
    
    getch();
}


Copyright 2013-2017 | İbrahim BAYRAKTAR /dev/null Web Günlüğü