C Dili ile Ekrana Şekil Basmak

C dili nesnel programlama mantığının kazandırılmasında temel olabilme ve programlamada kullanılan birçok dilin temelini oluşturması açısından önemli bir yere sahiptir. Bu yazımda C programlama dilinde karakterlerin ekrana düzenli ve kompleks biçimde dizilerek istenilen şeklin ekrana bastırılmasında dizilerin sağladığı kolaylıktan bahsetmek istiyorum. Bunun örnek üzerinde daha rahat ve anlaşılır olacağını düşünüyorum.

– İlk olarak bize integer türünde bir dizi gerekli. Ben ekrana 25×28 karakter genişliğinde  bir şekil basmak istediğimden dizim iki boyutlu ve alacağı eleman sayısı da bu değerlerde olacak.

 

int dizi[25][28]={
{0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, //1
{0,0,0,0,1,2,2,2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, //2
{0,0,0,1,2,2,2,2,2,1,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,0}, //3
{0,0,1,2,2,3,3,3,2,2,1,0,0,0,0,0,0,0,0,0,0,1,2,2,2,2,1,0}, //4
{0,0,1,2,2,3,3,3,2,2,2,1,1,1,1,1,1,1,1,1,1,2,2,3,3,2,2,1}, //5
{0,0,1,2,2,3,3,2,2,2,2,2,2,2,2,4,4,4,4,4,4,4,4,3,3,3,3,1}, //6
{0,0,0,1,2,2,2,2,2,2,2,2,2,4,4,4,4,4,4,4,4,4,4,4,3,3,2,1}, //7
{0,0,0,1,2,2,2,2,2,2,2,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,1,0}, //8
{0,0,0,1,2,2,2,2,2,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,1,0}, //9
{0,0,1,2,2,2,2,2,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,1,0}, //10
{0,0,1,2,2,2,2,4,4,1,1,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,1,0}, //11
{0,0,1,2,2,2,2,4,1,1,1,1,4,4,4,4,4,4,4,4,4,4,1,1,4,4,1,0}, //12
{0,1,2,2,2,2,4,4,1,1,1,1,4,4,4,4,4,4,4,4,4,1,1,1,1,4,1,0}, //13
{0,1,2,2,2,2,4,4,4,1,1,4,4,4,4,4,4,4,4,4,4,1,1,1,1,4,1,0}, //14
{0,1,2,2,2,2,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,1,1,4,4,1,0}, //15
{0,1,2,2,2,2,4,4,4,4,1,2,3,3,3,1,1,3,3,1,1,4,4,4,4,4,4,1}, //16
{1,2,2,2,2,2,4,4,4,1,2,3,3,3,1,1,1,1,3,3,2,1,4,4,4,4,4,1}, //17
{1,2,2,2,2,2,4,4,4,1,2,2,3,3,3,1,1,3,3,3,2,1,4,4,4,4,4,1}, //18
{1,2,2,2,2,2,2,4,4,4,1,1,2,2,2,2,2,2,2,2,1,4,4,4,4,4,4,1}, //19
{1,2,2,2,2,2,2,4,4,4,4,1,2,3,3,3,3,3,2,1,4,4,4,4,4,4,4,1}, //20
{1,1,2,1,2,1,2,2,4,4,4,1,2,2,3,3,3,2,1,4,4,4,4,4,4,4,1,0}, //21
{1,0,1,0,1,1,2,2,2,4,4,4,1,1,2,2,2,1,4,4,4,2,2,2,1,2,1,0}, //22
{0,0,0,0,0,0,1,1,2,2,2,4,4,4,1,1,1,4,4,2,2,1,1,1,0,1,1,0}, //23
{0,0,0,0,0,0,0,0,1,1,2,2,2,2,2,2,2,2,2,1,1,0,0,0,0,0,0,0}, //24
{0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0} //25
 
};

Dizideki elemanların aldığı 0 ile 4 arasındaki değerler bize ekrana basacağımız şekilde aynı renk olacak yerleri gösteriyor. Her elemanı 25×28 genişliğinde olan resimdeki bir piksel olarak düşünebiliriz.

– Şimdi de bize gereken bu diziyi ekrana basacak bir fonksiyon.

void ciz()
{
int i;
int j;
for(i=0;i<25;i++)
{
for(j=0;j<28;j++)
{
if(dizi[i][j]==0)
renk(0);
if(dizi[i][j]==1)
renk(15);
if(dizi[i][j]==2)
renk(22);
if(dizi[i][j]==3)
renk(7);
if(dizi[i][j]==4)
renk(4);
gotoxy(26+j,1+i);printf("%c",219);
}
 
}
 
}

Burada ciz() olarak tanımladığımız fonksiyonun yaptığı iş önceden tanımlanmış gotoxy() fonksiyonu yardımıyla ekrana istediğimiz türde bir karakteri 25×28 genişliğindeki bütün alana basmak dizideki değerlere göre renk() fonksiyonu yardımıyla basılacak karakterleri renklendirmek. Dizimiz iki boyutlu olduğundan içe içe iki for döngüsü kullanıyoruz. Böylelikle istediğimiz şekli dizi yardımıyla kolaylıkla elde etmiş olacağız. Dizi kullanmamış olsaydık satır boyunca ya da sütun boyunca her renk değişimi sırasında fonksiyonları tekrar tekrar yazacak birçok kez for döngüsü açmak zorunda kalacaktık.

qzq5id

 

Yeni başlayanlar ya da kodların tamamını görmek isteyenler için açıklamalı kaynak kod dosyasını da paylaşıyorum. Haydi hayırlı kodlamalar.

Yandex Disk üzerine yüklediğim kaynak kod bağlantısı http://yadi.sk/d/PiO8wEHsK4cUy

Yazar: Ahmet Kemal YILDIZ

Eskişehir Osmangazi Üniversitesi Bilgisayar ve Öğretim Teknolojileri Öğretmenliği mezunu bir Bilişim Teknolojileri ve Yazılım Dersi Öğretmeniyim. Bilişim Teknolojileri ve Yazılım dersi ile ilgili ders etkinlikleri, kaynak materyaller, örnek etkinlikler ve Bilişim Teknolojileri hakkında ilgi duyduğum birçok konu hakkında vakit buldukça buradan blogluyorum. :)

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir