Ms Sql tabloda bir kolonun dilini değiştirme

Aşağıdaki sql kodu ile mssql de tabloda  kolonda dil değişikliği (collaction) yapılır

ALTER TABLE TABLO_ADI
 ALTER COLUMN KOLON_1 VERI_TIPI COLLATE DIL_DEGERI(COLLACTION_NAME)
ALTER TABLE TABLO_ADI
 ALTER COLUMN KOLON_2 VERI_TIPI COLLATE DIL_DEGERI(COLLACTION_NAME)

Ms sql'de stored procedure'e liste yada dizi göndermek

Ms sql'de stored procedure içine bir liste yada dizi göndermek istiyorsanız aşağıdaki yöntemi kullanabilirsiniz.

CREATE PROCEDURE [dbo].[SPADI]
@listparametreadi nvarchar(600)
AS
BEGIN

DECLARE @SQL varchar(700)

SET @SQL = 'select * from TABLOADI where id in ('+@listparametreadi +')'

EXEC(@SQL)
END


parametreyi aşağıdaki şekilde göndermeniz lazım. string olarak

1,2,45,56,8,23

C Dili - Ders 31 - Structure (Yapılar) & Pointerlar



Şimdi bir structure oluşturalım ve bu structureın üyelerini 5 elemanlı bir dizi olsun daha sonra bu dizinin elemanlarını pointer kullanarak kullanıcıdan alalım.



#include "stdio.h"
struct yapi_turu{ int yas;};
struct yapi_turu insanlar[5];
int main(){
struct yapi_turu* pointer;
pointer=insanlar; int i=0;
for(i=0;i<5;i++) {
printf("gir:");
scanf("%d",pointer->yas);
printf("%d degerini girdin!\n",(*pointer).yas);
pointer++;
}
return 0;
}

Yukarıda pointerı tanımlarken türüne dikkat edin. elemanları kullanıcıdan alma işlemini bir fonksiyonla yapabilirsiniz.

C Dili - Ders 30 - Structure(Yapılar)



Bu yapı paralel dizi oluşturmamıza gerek kalmadan birden fazla değişken türüyle yeni bir değişken türü oluşturmamıza yarayan yapıdır.

Kullanılışı aşağıdaki gibidir. integer ve char değişken türlerinden yeni bir değişken türü oluşturdum.



struct kitap_turu{
int fiyat;
char isim[100];
char yazar[100];
};

Yukarıda yeni bir struct kitap_turu adında değişken türü oluşturduk. Şimdi bu türden bir kitap adında bir değişken oluşturalım.



struct kitap_turu kitap;
//hatta dizi değişken bile oluşturabiliriz.
struct kitap_turu kitap_dizisi[10];

Şimdi bir değişken daha oluşturalım ve değer atayalım.



#include "stdio.h"
struct kitap_turu{
int fiyat;
char isim[100];
char yazar[100];
};
struct kitap_turu kitap2={10,"Define Adasi","Robert Louis Stevenson"};
int main(){
printf("Kitap ismi: %s\n",kitap2.isim);
printf("Kitap fiyat: %d TL\n",kitap2.fiyat);
printf("Kitap yazar: %s\n",kitap2.yazar);
return 0;
}

Structurelara değer atarken içerisindeki değişkenlerin sıralamasına uymalısınız.

C Dili - Ders 29 - Paralel Diziler



Örneğin bir kitap listesi tutacak bir veri yapısı olulşturmak istedik. Veri yapısı kitap isimlerini ve fiyatlarını tutacak, fakat isimler char türünde fiyatlar ise integer türünde olacak, biz bunu tek bir değişken türü olarak tanımlayamayız. Bunun için paralel dizi yöntemini kullanacağız.

İlk olarak fiyatları tutacak dizimizi tanımlayalım.

int fiyat[10];

Şimdi kitap isimlerini tutacak diziyi tanımlayalım.

char isim[10][100];

Programın tamamını yazalım şimdi.

#include "stdio.h"
int main(){
int fiyat[10];
char isim[10][100];
int i=0;
while(i<10){
printf("kitap ismi gir:");
scanf("%s",isim[i]);
printf("fiyat gir:");
scanf("%d",fiyat[i]);
i++;
}
return 0;
}

Bu yapıyı daha sonra göreceğimiz structure yapılarını kullanarak oluşturabiliriz.

C Dili - Ders 28 - Hafıza ile Çalışma II



Bu dersimizde hafızdan ayırdığımız bölümü işimiz bittiğinde serbest hale getirmeyi göreceğiz.

Bu işlemi free fonksiyonu ile yapıyoruz. Aşağıda görüldüğü gibi.

#include "stdio.h"
#include "stdlib.h"

int main()
{
 int* pointer=(int *)malloc(sizeof(int));
 *pointer=6;
 printf("Deger: %d   -   Adres: %d\n",(*pointer),pointer);
 free(pointer);
 return 0;
}

C Dili - pointer to pointer



C dilinde pointerları başka pointerlarda gösterebilir. Aşağıdaki kodda p pointerını q pointerı gösteriyor ve p pointerı da x değişkenini gösteriyor.

#include "stdio.h"
#include "stdlib.h"
int main()
{
int x, *p, **q;
x = 10;
p = &x;
q = &p;
printf("%d\n", **q);
printf("%d\n", q);
printf("%d\n", p);
printf("%d\n", *q);
printf("%d\n", *p);
return 0;
}

C Dili - Ders 27 - Hafıza ile Çalışmak (malloc)



Bu dersimizde hafızadan nasıl yer ayrılır(allocate) ve ayrılan yer nasıl tekrar boşaltılır onu göreceğiz. Biz bunun için malloc (memory allocate) fonksiyonunu kullanıyoruz.

int *pointer=null;
pointer=malloc( sizeof(int) );

yukarıdaki kodda en başta bir pointer tanımlıyoruz. Daha sonra malloc ile hafızadan yer ayırıyoruz. Ve hafızanın baş adresini pointera atıyoruz. malloc fonksşyonunu kullanırken içine ayırmak istediğimiz hafıza miktarını yazıyoruz.

2 integer değişkeni tutacağımız kadar hafıza ayıralım ve hafızaların içini dolduralım.

#include "stdio.h"
#include "stdlib.h"
int main()
{
 int *pointer=(int *)malloc((2*sizeof(int)));
 *pointer=10;
 printf("Adres: %d , Deger: %d\n",pointer,*pointer);
 pointer++;
 *pointer=9;
 printf("Adres: %d , Deger: %d\n",pointer,*pointer);
 return 0;
}

Bu fonksiyonu kullanabilmek için stdlib.h kütüphanesini include etmeniz lazım. Daha karışık bir örnek dinamik dizi oluşturmak yazısında var.

C Dili - Ders 27 - Stringler



Stringler çok boyutlu char dizileridir. örneğin aşağıda.

char kelime[10]="merhaba";

Bu tek boyutlu bir dizi bunda sadece bir kelime yada bir satır bilgi tutabiliriz. peki çok satırlı bir yazımız var ise onu çok boyutlu char dizisinde tutmalıyız.

char metin[5][10]={
"csharp","assembly","fortran","pascal","java"
};
printf("ilk dilimiz %s",metin[0]);

C Dili - Ders 26 - Pointer ve Fonksiyonlar



Bu dersimizde pointerlarla fonksiyonlar nasıl kullanılır onu görecez. Örneğin dışarıda bir dizi tanımlayalım ve dizisirala adında bir fonksiyonumuz olsun. fonksiyona dizinin ilk adresini ve boyutunu gönderelim ve dizi elemanlarını ekrana sıralayalım.

#include "stdio.h"
#include "stdlib.h"

void dizisirala(int *pointer,int boy){
 int i=0;
 while(i<boy){
  printf("%d\n",*pointer);
  pointer++;
  i++;             
 }     
}

int main()
{
  int dizi[10]={1,2,3,4,5,6,7,8,9,0};
  dizisirala(dizi,10); 
  return 0;
}

C Dili - Ders 25 - Pointer Aritmetik



bu yazımızda pointer aritmetik konusuna değineceğiz. Pointerlar bildiğiniz gibi adresleri gösterir. integer türünde bir pointer 1002 adresini gösteriyorsa; pointerın adresini bir artırırsak (pointer++) 1006 adresini göstercektir. Sebebi integer türünün 4 byte alan kaplamasıdır. Şimdi Bunu bir örnekle görelim.

int degisken=10;
int* p=°isken;
printf("%d\n",p);
p++;
printf("%d\n",p);
p++;
printf("%d\n",p);
p++;

Yukarıdaki örneği bir de char ve float türleriyle deneyin.

Yukarıda yaptığımız adresleri bir arttırmaktı. Pointerın gösterdiği değişkeni bir artıralım.

*p++;
printf("Degiskenin degeri:%d\n",*p);

Pointerları biraz daha işe yarar bir şeyde kullanalım. Bir dizi oluşturalım ve dizinin ilk elemanının adresini pointer göstersin. Daha sonra pointer ile dizinin bütün elemanlarını ekrana yazdıralım.

#include "stdio.h"
#include "stdlib.h"

int main()
{
  int dizi[5]={1,2,3,4,5};
  int* pointer=dizi; //dizinin ilk elemaninin adresi
  int i=0;
  while(i<5)
  {
   printf("eleman %d:%d - Adresi:%d\n",i,*pointer,pointer);
   pointer++;
   i++;         
  } 
  return 0;
}

C Dili - Dinamik Dizi Oluşturmak



Yazacağımız program önce kullanıcıdan dizinin kaç elemanlı olacağını sorsun. Daha sonra dizinin elemanlarını kendi atayarak ekrana yazdırsın.

#include "stdio.h"
#include "stdlib.h"

int main()
{
  int boyut=0;
  printf("Dizi boyutunu girin:");
  scanf("%d",&boyut);
  int* dizi;
  dizi=(int *)malloc((boyut*sizeof(int)));
  
  int i=0;
  for(i=0;i<boyut;i++)
  {
   *dizi=i;
   printf("%d",*dizi);
   dizi++;                   
  }
 
  return 0;
}

C Dili - Ders 24 - Pointer



C programlama denilince akla ilk gelenler arasında pointer meselesi vardır. Aslında en zorlanılan konudur. Ama aslında süper bişeydir

Kısaca Pointerlar oluşturduğumuz değişkenlerin adreslerini gösterirler. Peki bu nasıl olur.

int a=5; //temel değişken tanımı.

şimdi bu değişkenin adresini ekrana yazdıralım.

printf("\na degiskenin adresi : %d",&a);

şimdi bir pointer tanımlayalım ve bu pointer a değişkenini göstersin.

int* pointer=&a;

Yukarıda görüldüğü gibi pointer tanımlarken *(yıldız) karakterini kullanıyoruz.

printf("\npointerin gostedigi adres : %d",pointer);
printf("\npointerin gosterdigi adresteki deger : %d",*pointer);

Yukarıdaki konuyu anlamışsınızdır umarım.Bu ilk bölümdü. Pointerlar daha bitmedi.

C Dili - Örnek 08 - Faktoriyel (Rekürsif)



Faktoriyel alan rekürsif bir fonksiyon.

#include "stdio.h"
int faktoriyel(int x);
int main(){
 int deger=1;
 int sonuc=faktoriyel(deger);
 printf("Sonuc=%d",sonuc);
 return 0;
}
int faktoriyel(int x){
 int birim;
 if(x>0){
  birim=faktoriyel(x-1);
  return x*birim;
 }else{
  return 1;
 }
 
}

C Dili - Ders 23 - Değişkenlerin Adresleri



Değişkenler herbirinin hafızda saklandıkları yerlerin adresleri vardır. Bu adresleri & (adresse of) operatörüyle görebiliriz. Örneğin;

int a=10;
printf("a degiskeninin adresi:%d",&a);

float b=56;
printf("b degiskenin adresi:%d",&b);

char harf='d';
printf("harf degiskenin adresi:%d",&harf);

Bu bilgi ileride pointerlar konusunda yardımcı olacak

C Dili - Örnek 07 - Recursif Fonksiyon Örneği



Aşağıdaki kod decimal(onluk) tabandaki sayıyı ikilik tabandaki sayıya dönüştürür.

#include "stdio.h"

void fonk(int sayi){
 if(sayi==1 || sayi==0){
  printf("%d",sayi);
  }else {
  fonk(sayi/2);
  printf("%d",sayi%2);
  }
 }

int main(int argc, char **argv)
{
 fonk(9);
 return 0;
}

C Dili - Örnek 07



Tek parametre alan ve parametreye göre 4 işlemden herhangi birini yapan program.

#include "stdio.h"

void fonksiyon(int x);

int main(){
//toplama
fonksiyon(1);
//çıkarma
fonksiyon(2);
//çarpma
fonksiyon(3);
//bölme
fonksiyon(4);
}

void fonksiyon(int x){
switch(x){
case 1:
printf("%d",3+6);
break;
case 2:
printf("%d",3-6);
break;
case 3:
printf("%d",3*6);
break;
case 4:
printf("%d",3/6);
break;
}

}

Fonksiyon tanımalaması yukarıdaki gibide yapılabilir. Önemli olan o fonksiyonu kullanacağımız fonksiyondan önce (bu genellikle ana fonksiyon olur) ne girdiğini ve ne çıktığını tanımlamaktır.

C Dili - Ders 22 - Fonksiyonlar



Fonksiyonlar programlama da önemli bir konudur. Büyük programlar yazarken programı fonksiyonlara ayırırız daha sonra bunların herbirini ana fonksiyonumuzda birleştiririz. Örnek fonksiyon tanımlaması aşağıda gösterildiği gibidir.

#include "stdio.h"
int toplama(int x,int y){
 int toplam=x+y;
 return sonuc;
}

int main(){
 int islem=toplama(3,6);
 printf("%d",islem);
 return 0;
}

Yukarıdaki kodu açıklamak gerekirse fonksiyon bir toplama fonksiyonu iki parametre alıyor. ve daha sonra bunları toplamyıp ana fonksiyonu geri döndürüyor. Bizim programımızda gönderdiğimiz parametreler 3 ve 6 bunlar sırasıyla x ve y yerel değişkenlerine aktarılıyor. daha sonra bu değişkenler toplanıyor ve toplam değişkenine aktarılıyor ve toplam değişkeni fonksiyonun sonunda geri döndürülüyor(return). Bundan sonra işlemler ana(main) fonksiyonunda devam ediyor. Fonksiyondan dönen değer islem değişkenine aktarılıyor ve islem değişkeni ekrana yazılıyor. Program son buluyor.

Arkadaşlar fonksiyonu tanımlarken başındaki int ibaresine dikkat edin. Bunu koymamızın sebebi fonksiyondan dönen değerin integer türünden olması. Eğere float türünden olsaydı float koyacaktık. Prki fonksiyon bir değer döndürmeseydi. O zaman ne koyacaktık. Aşağıda bunun örneği verilmiş.Ayrıca hiç parametre almayan fonksiyonada bir örnek.

#include "stdio.h"
void toplama(){
 int toplam=3+6;
 printf("%d",toplam);
}

int main(){
 toplama();
 return 0;
}

Yukarıdaki kodda fonksiyonun ana fonksiyonda kullanılışına da dikkat edin. Şimdi siz birşeyler yapın gelen bir parametreye göre 4 işlemden birini yapan ve geri değer döndürmeyen bir fonksiyon yazın ve kullanın.

C Dili - Ders 21 - Rastgele Sayı Üretmek

C dilinde rastgele sayı üretmek için rand() fonksiyonunu kullanırız. Aşağıda kullanılışını görelim

#include <stdio.h>
/*Kütüphaneleri unutmayın.*/
#include <time.h>
#include <stdlib.>

int main()
{
 srand(time(null));
 int rastgele=rand()%20; //0-19 arasında sayı üretir.
 printf("%d",rastgele);
 return 0;
}

Yukarıdaki örnekte üreteceği sayılar sıfırdan başlar. Peki bir 5 ile 19 arasında sayı üretmesini istersek.

#include <stdio.h>
/*Kütüphaneleri unutmayın.*/
#include <time.h>
#include <stdlib.>

int main()
{
 srand(time(null)); //bu her zaman olacak.
 int rastgele=5+rand()%15;
 printf("%d",rastgele);
 return 0;
}

Yukarıdakini anladıysanız sizde -5 ve 5 arasında sayı üreten kodu yazın.

C Dili - Örnek 06



Kullanıcıdan sürekli karakter alıyoruz. karakterin ascii kodunu ekrana yazdırıyoruz eğer karakter sıfır ise programı sonlandırıyoruz.

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

int main(){
 char c;
 printf("\nBir karakter Girin:");
 while((ch=getch())!=0){
  printf("%d",c);
  printf("Bir karakter daha girin:");
 }
 printf("gule gule");
 return 0;
}