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.
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
Yorumlar