Meslek seçiminizi elektronik olarak belirlemişseniz kesinlikle öğrenmeniz gereken şeylerden biri program yazmaktır.
Bu yazma işlevini çok ya da az kullanırsınız o size kalmış, fakat eninde sonunda bir satırdan sonra ‘;’ koyacaksınızdır.
Bir programcının ana dili C’dir. C, aynı bir suya benzer. İsterseniz siz bu su ile kola, kahve ya da gazoz yapıp, onu kullanın fakat ne olursa olsun her programcı C’yi ucundan, köşesinden bilir, bilmelidir.
Bizlere üniversite birinci sınıfın, ikinci yarısında öğretilen bu dili başta anlamak çok zor olsa da, mantığını oturttuktan sonra, oldukça kolaylaştığını, tüm C severler bilecektir.
C dili ile uğraşanların çoğu, fonksiyon çağırma, diziler ve çok az da olsa pointer’lar ile uğraşırlar. Tüm bu işlemlerin kullanılabileceği, en çok sorulan program ise girilen sayıyı sıralayan programdır.

Günümüzde oldukça fazla sıralama algoritması olsa da, ben aşağıda bubble sort algoritmasının bir örneğini sizlere sunuyorum. Sınavlarında kullanmak isteyenlere yardımcı olabilir ki bizlere zamanında 8051 dersinin finalinde sormuşlardı. Program aşağıdakinin neredeyse aynıydı, tek farkı başta 8051 için seri port ayarları yapıyor oluşumuzdu.
8051 demişken, bu müzelik mikrodenetleyiciyi kullanmak isteyen arkadaşlar için, timer kullanıp, tam olarak milisaniyelik ve mikrosaniyelik gecikmeler yaratan delay.h kütüphanesini de aşağıda bulabilirsiniz.

Son olarak sitemi takip edenler için, dönemin sonuna doğru güzel projeler yayınlayacağım, şimdilik bu kodlarla idare edelim..

bubble_sort.c dosyası:

// Fırat Deveci
// www.FxDev.org
// Bubble sort kullanarak sayıları dizen programdır.
// Kullanımı serbesttir.

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

void girdirici(int duzelt[], unsigned char boyut)
{
    unsigned char i;
    for(i=0;i< (boyut) ;i++)
    {
        printf("Duzenleyeceginiz %d. sayiyi giriniz: \n",i+1);
        scanf("%d", &duzelt[i]);
    }
}

void duzeltici(int duzelt_2[] , unsigned char boyut)
{
    unsigned char i,j,temp;

    for(i=0;i<(boyut-1);i++)
    {
        for(j=0;j<(boyut-1);j++)
        {
            if(duzelt_2[j]>duzelt_2[j+1])
            {
                temp=duzelt_2[j+1];
                duzelt_2[j+1]=duzelt_2[j];
                duzelt_2[j]=temp;
            }
        }
    }
}

void yazdirici(int yazdir[] , unsigned char boyut)
{
    int i;
    for(i=0;i< (boyut) ;i++)
    {
        printf("dizi[%d]=%d\n", i, yazdir[i]);
    }
}

void main(void)
{
    int boyut,a,i;
    char b;
    printf("Sayi Duzenleme Programi\n");
    printf("Firat DEVECI\n");
    printf("http://www.fxdev.org\n\n");

    for(;;)
    {
        printf("Kac sayi duzenleyeceginizi giriniz: \n");
        scanf("%d", &boyut);

        int dizi[boyut];
        girdirici(dizi,boyut);   /*Fonksiyonlarla çağırmak daha kolay*/
        duzeltici(dizi,boyut);
        yazdirici(dizi,boyut);

        printf("\nBaska sayilar kullanmak istiyor musunuz?\nE/H?\n");
        /*program tekrar kullanılmak isteniyor mu istenmiyor mu diye soruluyor*/
        scanf("%s", &b);

        if(b=='e' || b=='E')
        {
            a=0;
        }
        else if(b=='H' || b=='h')
        {
            break;
        }
        else
        {
            printf("Yanlis secenek girdiniz program sonlandirilacak\n");
            break;
        }
    }
    printf("Programdan cikmak icin bir tusa basiniz");
}

8051 için delay.h dosyası:

//Firat Deveci
//www.fxdev.org

void Delay_Us(unsigned char m)		//Mikrosaniyelik gecikmeler
{
	TMOD=0x02;
	TR0=0;
	TL0=0x00;
	TH0=256-m;
	TF0=0;
	TR0=1;
	while(!TF0);
	TF0=0;
	TR0=0;
}

void Delay_Ms(unsigned int a)		//Milisaniyelik gecikmeler
{
	int i;
	for(i=0;i< (a) ;i++)
	{
		TMOD=0x01;
		TH0=0xFC;
		TL0=0x17;
		TF0=0;
		TR0=1;
		while(!TF0);
		TR0=0;
		TF0=0;
	}
}
{lang: 'tr'}