C programlama dili 3 Sohbet, Chat, Sohbet Siteleri
Şifreniz yoksa boş bırakabilirsiniz
mirc indir

C programlama dili 3

Anasayfa > Bilgisayar > C programlama dili 3

Sehirlersohbet.com

C programlama dili 3

Giriş

Orta ve yüksek seviyeli dillerin aşağı yukarı hepsinde veri tipi ve parametre kavramı bulunmaktadır. Bu kısımda C uygulamaylama dilindeki temel veri tipleri, tanımlayıcılar, parametreler ve sabitler konu edilecektir.
2.1 Veri Tipleri

Veri tipi (data type) uygulama içinde kullanılacak parametre, sabit, fonksiyon isimleri gibi tanımlayıcıların tipini, yani hafızate ayrılacak bölgenin büyüklüğünü, saptamak için kullanılır. Bir uygulamacı, bir uygulamaylama dilinde ilk olarak öğrenmesi gereken, o dile ait veri tipleridir. Çünkü bu, uygulamacının kullanacağı parametrelerin ve sabitlerin sınırlarını belirler. C uygulamaylama dilinde dört tane temel veri tipi bulunmaktadır. Bunlar:

char
int
float
double
Fakat bazı özel niteleyiciler vardır ki bunlar yukarıyadaki temel tiplerin önüne gelerek onların türevlerini oluşturur. Bunlar:
short
long
unsigned
Bu niteleyiciler vasıtası ile parametreyin hafızate kaplayacağı alan isteğe göre değiştirilebilir. Kısa (short), uzun (long), ve normal (int) tamsayı arasında sadece uzunluk farkı vardır. Eğer normal tamsayı 32 bit (4 bayt) ise uzun tamsayı 64 bit (8 bayt) uzunluğunda ve kısa tamsayı 16 biti (2 bayt) geçmeyecek uzunluktadır. İşaretsiz (unsigned) ön eki kullanıldığı taktirde, veri tipi ile saklanacak dşayetin sıfır ve sıfırdan büyük olması sağlanır. İşaretli ve işaretsiz verilerin hafızateki uzunlukları aynıdır. Fakat, işaretsiz tipindeki verilerin üst limiti, işaretlinin iki katıdır.

NOT
Kısa ve uzun tamsayı tutacak tanımlayıcılar için int anahtar sözcüğünün yazılmasına gerek yoktur.
short s; /* short int s; anlamında */
long k; /* long int k; anlamında */

Bir C programı içerisinde, veri tiplerinin hafızate kapladığı alan sizeof operatörü ile öğrenilebilir. İlgi cekici olan, bu alanların derleyiciye ve işletim sistemine bağlı olarak değişiklik göstermesidir. Program 2.1’de, sizeof operatörü kullanılarak, veri tiplerinin hafıza uzunlularının nasıl ekrana yazdırılacağı gösterilmiştir. Programın çıktısı, farklı derleyiciler ve işletim sistemi üzerinde denendiğinde bu durum daha iyi anlaşılır. Lütfen inceleyin.

Sehirlersohbet.com da sohbet ederek c dilini ögrenmek icin tıklayın 

Program 2.1: Değişken tipleri ve türevlerinin hafızate kapladıkları alanlar
01:
02:
03:
04:
05:
06:
07:
08:
09:
10:
11:
12:
13:
14:
15:
16:
17:
18:
/* 02prg01.c : sizeof operatörünün kullanımı */

#include <stdio.h>

main()
{
printf( “char : %d bayt\n”, sizeof(char));
printf( “short : %d bayt\n”, sizeof(short));
printf( “int : %d bayt\n”, sizeof(int));
printf( “long : %d bayt\n”, sizeof(long));
printf( “unsigned char : %d bayt\n”, sizeof(unsigned char));
printf( “unsigned short : %d bayt\n”, sizeof(unsigned short));
printf( “unsigned int : %d bayt\n”, sizeof(unsigned int));
printf( “unsigned long : %d bayt\n”, sizeof(unsigned long));
printf( “float : %d bayt\n”, sizeof(float));
printf( “double : %d bayt\n”, sizeof(double));
printf( “long double : %d bayt\n”, sizeof(long double));
}
ÇIKTI
Windows (32 bit) Turbo C Windows (32 bit) Salford Linux (32 bit) GCC Linux (64 bit) GCC
char : 1 bayt
short : 2 bayt
int : 2 bayt
long : 4 bayt
unsigned char : 1 bayt
unsigned short : 2 bayt
unsigned int : 2 bayt
unsigned long : 4 bayt
float : 4 bayt
double : 8 bayt
long double : 10 bayt
char : 1 bayt
short : 2 bayt
int : 4 bayt
long : 4 bayt
unsigned char : 1 bayt
unsigned short : 2 bayt
unsigned int : 4 bayt
unsigned long : 4 bayt
float : 4 bayt
double : 8 bayt
long double : 10 bayt
char : 1 bayt
short : 2 bayt
int : 4 bayt
long : 4 bayt
unsigned char : 1 bayt
unsigned short : 2 bayt
unsigned int : 4 bayt
unsigned long : 4 bayt
float : 4 bayt
double : 8 bayt
long double : 12 bayt
char : 1 bayt
short : 2 bayt
int : 4 bayt
long : 8 bayt
unsigned char : 1 bayt
unsigned short : 2 bayt
unsigned int : 4 bayt
unsigned long : 8 bayt
float : 4 bayt
double : 8 bayt
long double : 16 bayt
int veritipi ve türevleri ile hesaplanabilecek en ufak ve en büyük tamsayılar için aşağıdaki formül kullanmak mümkün:

Alt sınır = -28*sizeof(tip)
Üst sınır = 28*sizeof(tip)-1
Örneğin 4 baytlık bir int tipi için:
Alt sınır = -28*sizeof(int) = -232 = -2147483648
Üst sınır = 28*sizeof(int)-1 = 232-1 = 2147483647
Tablo 2.1’de tüm tipler, hafızate kapladıkları alanlar ve hesaplanabilcek (hafızate doğru olarak saklanabilecek) en büyük ve en ufak sayılar listelenmiştir.

Tablo 2.1: Değişken tipleri ve hafızate kapladıkları alanlar
Veri Tipi Açıklama Bellekte işgal ettiği boyut (bayt) Alt sınır Üst sınır
char Tek bir karakter ya da
ufak tamsayı için 1 -128 127
unsigned char 0 255
short int Kısa tamsayı için 2 -32,768 32,767
unsigned short int 0 65,535
int Tamsayı için 4 -2,147,483,648 2,147,483,647
unsigned int 0 4,294,967,295
long int Uzun tamsayı için 8 -9,223,372,036,854,775,808 9,223,372,036,854,775,807
unsigned long int 0 18,446,744,073,709,551,615
float Tek duyarlı gerçel sayı için (7 basamak) 4 -3.4e +/- 38 +3.4e +/- 38
double Çift duyarlı gerçel sayı için (15 basamak) 8 -1.7e +/- 308 +1.7e +/- 308
2.2 Değişkenler

Değişkenler bilgisayarın geçici belleğinde bilginin saklandığı gözlere verilen sembolik adlardır. Bir C programında, bir parametre tanımlandığında bu parametre için hafızate bir yer ayrılır. Her parametreyin tuttuğu dşayetin nasıl bir veri olduğunu gösteren (önceki bölümde anlatılan) bir veri tipi vardır fakat , işletim sistemi üzerinde.

C uygulamaylama dilinde, parametreler ve sabitler programın başında bulunmalıdır. Bazı programlarda parametreyin bir başlangıç dşayetinin olması istenir. Böyle durumlarda parametre bildirilirken başlangıç dşayeti verilebilir. Örneğin:

char isim=’X’, z; /* dşayet atamak zorunlu değil */
int sayi=0, n;
float toplam=0.0, sonuc=22.14;
Değişken isimleri verirken bazı kurallara uymak zorunludur. Bunlar:

Değişken adları en çok 32 karakterden oluşabilir. 32 karakterden uzun parametre adları ilk 32 karakteri değerlendirilir. Geriye kalan karakterler prosedüre tabi tutulmaz.
Değişken adları ingiliz alfabesinde bulunan karakterler (A-Z) ya da (a-z) yada rakamlar (0-9) ile yazılmalıdır. Türkçe karakterler, özel karakter ya da boşluk karakteri kullanılamaz.
Değişken adları herhangi bir rakam ile başlayamaz. Ilk karakter bir harf olamalıdır. Sonrakiler rakamlardan oluşabilir.
Aşağıda verilen kelimeler ANSI C ‘nin anahtar kelimeleridir (key Words) ve parametre ismi olarak kullanılamaz.

auto double int struct
break else long switch
case enum register typedef
char extern return union
const float short unsigned
continue for signed void
default goto sizeof volatile
do if static while
Bu kurallara göre aşağadaki parametre (sabit, fonksiyon) isimlerinin geçerliliğini inceleyiniz.

Değişken/Sabit/Fonksiyon/Yapı Adı Geçerlilik Açıklama
asal geçerli –
Momentum geçerli –
ivme geçerli –
olasilik geçerli –
IsikHizi geçerli –
isik_hizi geçerli Alt çizgi karakteri ‘_’ kullanmak mümkün
isik hizi geçersiz Boşluk karakteri kullanılamaz
ışık_hızı geçersiz Türkçe karakter kullanılamaz
1Bit geçersiz rakam ile başlanamaz
typedef geçersiz Anahtar kelimelerden birisi kullanılamaz

2.3 Sabitler

Sabit bildirimi, başlangıç dşayeti verilen parametre bildirimi gibi yapılır. Ancak, veri tipinin önüne const anahtar sözcüğü konmalıdır. Örneğin:

const float PI = 3.142857;
const double NOT= 12345.8596235489;
const int EOF= -1;
const char[] = “devam etmek için bir tuşa basın…”;
gibi sabit bildirimleri geçerli olup bunların içerikleri uygulama boyunca değiştirilemez. Yalnızca kullanmak mümkün. Genellikle, sabit olarak bildirilen parametre isimleri büyük harflerle, diğer parametre adlarının ise ufak harflerle yazılması (gösterilmesi) C uygulamacıları tarafından geleneksel hale gelmiştir.

Birçok C programında sabitler #define önprosedürci komutu ile de tanımlandığını görebilirsiniz. Bu komutla sabit bildirimi, bir uygulama parçasına ve makro fonksiyon tanımlaması yapılabilir. Bir uygulama geliştirilirken simgesel sabitlerin kullanılması programın okunlinkuğunu arttırır ve bazı durumlarda gerekli de olabilir. Aşağıda verilen simgesel sabit bildirimleri geçerlidir. #define önprosedürcisi ile makro fonksiyon tanımalama prosedürü, Bölüm 8 ve Bölüm 20’de anlatılacaktır.

#define MAX 100
#define DATA 0x0378
#define YARICAP 14.22

2.4 Rakamsal Bilgiler

C uygulamaylama dili içinde tanımlanabilecek sabit rakamlar rakamsal bilgi (literal) olarak adlandırılır. Her veri tipi kendi rakamsal bilgisine sahiptir. Bu bilgiler, kaynak kod içerisinde, özel dşayetleri ifade eder. Örneğin aşağıdaki atama prosedüründe 25 ve 17.2 sayıları gibi:

i = 25; /* 25, int tipinde bir rakamsal bilgidir */
r = 17.2; /* 17.2, double tipinde bir rakamsal bilgidir */
C dilinde tüm tamsayı sabitler varsayılan (default) olarak int tipinde, gerçel sayı sabitler varsayılan olarak double tipindedir. Ancak sabitleri gösteren rakamların sonuna eklenecek U (ya da u), L (ya da l) ve F (ya da f) harfleri ile bu durum değiştirilebilir. Bu yüzden, aşağıdaki atamalar aynı anlamda değildir.

i = 25; /* int rakam */
i = 25U; /* unsigned int rakam */
i = 25L; /* long int rakam */
i = 25UL; /* unsigned long rakam */
i = 25L; /* long int rakam */

r = 17.2; /* double rakam */
r = 17.2L; /* long double rakam */
r = 17.2F; /* float rakam */
Tamsayı (int) rakamsal bilgiler, 8 (oktal) ve 16 (hexadesimal) sayı tabanında da gösterilebilir. Bunun için sabit rakamın başına, 8 tabanı için 0 (sıfır) ve 16 tabanını için 0x sembolleri eklenir. 16’lık sistemdeki hafler büyük (A, B, C, D, E ve F) ya da ufak (a, b, c ,d, e ve f) olabilir. Buna gösterime göre, aşağıdaki atmalar aynı anlamadadır:

i = 75; /* i = 75, 10 tabanında */
i = 0113; /* i = 75, 8 tabanında */
i = 0x4b; /* i = 75, 16 tabanında */
i = 0x4B; /* i = 75, 16 tabanında */
Gerçel sayılar ondalıklı ya da üstel olmak suretiyle iki şekilde gösterilebilir. Örneğin 123.456 sayısının aynı anlama gelen dört farklı sunumu aşağıda verilmiştir. Üstel gösterimde, 1.23456e+2 ya da 1.23456E+2 sayısı matematikteki 1.23456 x 102 sunumu ile eşdşayetdir.

x = 123.456; /* ondalıklı sunumu */
x = 123.456e+0; /* üstel gösterim */
x = 1.23456e+2; /* üstel gösterim */
x = 1234.56E-1; /* üstel gösterim */
Karakter sabitler, bir harf için tek tırnak, birden çok karakter için çift tırnak içinde belirtilirler.

‘A’ /* bir karakter */
“Merhaba Dunya” /* bir karakter kümesi */
Program 2.1’de, uygulama içinde tanımlanan parametre sabitlerin ekrana nasıl yazdırılacağı gösterilmiştir.
Program 2.2: Değişkenlerin ve sabitlerin ekrana yazdırılması
01:
02:
03:
04:
05:
06:
07:
08:
09:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
/* 02prg02.c : Değişkenler ve sabitlerin ekrana yazdırılması */

#include <stdio.h>

#define PI 3.141593

int main()
{
const int MAX = 100;
char c = ‘a’;
char *s = “Bu bir sicim”;
int i = 22;
float f = 33.3;
double d = 44.4;

printf(“PI = %lf\n”,PI);
printf(“MAX= %d\n”, MAX);
printf(“c = %c\n”, c);
printf(“s = %s\n”, s);
printf(“i = %d\n”, i);
printf(“f = %f\n”, f);
printf(“d = %lf\n”,d);

return 0;
}
ÇIKTI

PI = 3.141593
MAX= 100
c = a
s = Bu bir sicim
i = 22
f = 33.299999
d = 44.400000
2.5 Değişken Bildirim Yerleri ve Türleri

Yerel (local) Bildirim

Yerel parametreler kullanıldığı fonksiyon içerisinde bildirilir. Yalnızca bildirildiği fonksiyon içerisinde tanınır ve kullanmak mümkün.

int topla(int a,int b)
{
/* mahalli (local) parametre c nin bildirimi */
int c;
c = a + b;
return c;
}
Genel (general) Bildirim

Genel parametreler tüm fonksiyonların dışında bildirilir. Bir parametre uygulama boyunca sürekli olarak kullanılıyorsa genel olarak bildirilmelidir.

#include <stdio.h>

void karesi();

/* m ve n global tip parametredir.
Bu iki parametre bütün uygulama boyunca kullanılmaktadır. */

int m,n;

main()
{
m=7;
karesi();
printf(“%d nin karesi %d dir”,m,n);
}

void karesi(){
n = m*m;
}

2.6 Tip Dönüşümleri

Bir formül içerisinde birçok parametre ya da sabit olabilir. Bu parametre ve sabitler birbirinden farklı tipte olursa, hesap sonucunun hangi tipte olacağı önemlidir. Bir bağıntıda, içeriği dönüşüme uğrayan parametreler eski içeriklerini korlinkar. Dönüştürme prosedürü için geçiçi hafıza alanı kullanılır; dönüştürülen dşayet kullanılmasının ardından o alan serbest bırakılır.

char kr;
int tam;
long int ltam;
unsigned int utam;
short int stam;
float f;
double d;
bildirimlerine göre:

Bağıntı Sonuç Tipi
——- ———-
kr+5 int
kr+5.0 double
d+tam double
f+d-2 double
utam-tam unsigned
ltam*tam long
tam/2 int
tam/2.0 double
NOT
Tamsayılar arası bölme kesme hatalarına (truncation error) neden olur.
Bunun anlamı iki tamsayının oranı yine bir tamsayıdır.
örnek olarak: 4/2=2; ancak 3/2=1 (1.5 değil).

Bir parametreyin sabit dşayetin ya da bağıntının önüne tür ya da takı (cast) yazılarak sonucun hangi tip çıkması istendiği söylenebilir. Genel yazım şekli:

(tür tipi) bağıntı;
Örneğin:
int x=9;
float a,b,c;
double d;

a = x/4;
b = x/4.0;
c = (float) x/4;
prosedürünün sonucunda a parametreyine 2.0, b ve c parametrelerine 2.25 dşayeti transfer edilir. Yani 9/4 ile 9/4.0 farklı anlamdadır.

Ekleyen : - Tarih: 06 Haziran 2017 - 8:08 PM - Okunma Sayısı :
chat, chat siteleri Google
chat, chat siteleri

BENZER İÇERİKLER

İlginizi Çekebilecek Diğer İçeriklerimiz

DİĞER YORUMLAR

Yorumlarınızı Paylaşabilirsiniz

İsminiz

E-Posta Adresiniz

Cevabınız



Sohbet haber