C programlama dili hata türleri.

projex

Üye
10 Ara 2021
208
135
25
Türkiye
Öncelikle herkese merhabalar, c programlama öğrenirken python yada diğer dillerden aldığınız hatalardan çok daha fazla hata almanız normaldir, sebebi zor bir dil olması.
Tamam assambly kadar olmasada zor işte ;)

Gelin beraber bu hatalara bakalım.

C'de 4 tür hata vardır, bunlar aşağıdaki gibidir.


Uyarı(warning) ; Bu hata biçimi aslında bir hata değildir, bir uyarıdır. Programın çalışmasını yada derlenmesini kesinlikle etkilemez, ama olmazsa iyi olur.
Örnek vermek gerekirse, bir değişken kullanılmamasına rağmen oluşturulmasıdır, aynı şekilde fonksiyon yada dizilerde kullanılmamasına rağmen oluşturulduğunda uyarı alırsınız.


Hatalar (errors) : En sık karşılaşılan hata türüdür, aslında birden fazla hata türüdür. Programın derlenmesini engeller derlense bile doğru bir biçimde çalışmaz, yanlış sonuçlar üretir. bu hatalar genelde derleme zamanında oluştuğu için biz programcılar bu hatalara. Derleme zamanı hataları yani compile time errors deriz. syntax error dediğimiz yazım kuralları hataları da bu sınıfa girer. Bu hata sınıfı kendi içerisinde 4 farklı kategoriye ayrılır, gelin onları beraber inceleyelim.

Dil bilgisi yani yazım hataları:
Yanlış yazım:
kısaca dostlarım. "C deki anahtar sözlüklerinin yanlış yazılması. fonksiyonların yanlış yazılması,
C:
komutların yanlış yazılması, değişken türlerinin yanlış yazılması".
Örnek: printf() yerine print(), değişkenlerdeki float yerine flooat yazmak gibi

Yanlış Noktalama kullanmak ve yanlış karakter kullanımı: Evet noktalama dedim ve C programcılarının sinirini tepesine getirdim :devilish:. Bilindiği gibi C'de bir çok noktalama işareti bulunmaktadır, ve aynı şekilde özel karakterler de bir o kadar vardır denebilir. bunlarda herhangi bir hata yapmak bizleri saatlerce aramamıza sebep olan o meşhur hatalara gönderir, neyse ki derleyici bizler için buluyor artık.
Örnek verelim.

C:
printf("Merhaba Türk Hack team üyesi.\n");
Yerine.
C:
printf(Merhaba Türk hack team üyesi \n)
2. Gördüğünüzde 2 tane hata vardır " " işareti ve sondaki ; işareti yoktur.
Değişken hataları:
Tanımlanmayan bir değişken kullanımı:
C de tanımlanmayan hatta sadece c de değil bir çok programlamada bunu yaparsanız, derleyici derki kardeşim bu ne?
Örnek.


C:
#include<stdio.h>

int main()
{
    printf("%d",a);
    return 0;
}

Burada a diye değişken tanımlanmadan kullandım bu bir hatadır.
Değişkeni tanımlanmadan önce kullanmak: C yukarıdan aşşağı ve soldan sağ doğru akan bir programlama dilidir, değişkeni tanımladığımız satırın üstünde değişkeni işleme tabi tutarsak hataya denk geliriz.
Örnek.


C:
#include<stdio.h>

int main()
{
    printf("%d",a);
    int a;
    return 0;
}

Gördüğünüz gibi, a yı ekrana bastırdıktan sonra tanıttım, derleyici derki kardeşim ben bilmiyorum bu değişkeni, alt satıra indiğimizde işletim sistemi alır değişkeni ve ram'deki bir adrese koyar, ama işlem önce yapıldığı için derleyici bize hata döndürür.
Bir değişkene türüne uygun olmayan bir değer atamak: bizim 4 ana veri tipimiz vardır. int(Tam sayı), float(Ondalıklı sayı), double(Büyük ondalıklı sayı), char( Krakter ), evet c bilen arkadaşlar diyecek şimdi long lar ve shortlara ne oldu, onlar kafa karıştırmasın diye eklemedim.
Şimdi biz int yani tam sayı değişkenine karakter tipi olan bir şey atarsak hata alırız, bazen almayız sebebi o karakter tipinin ASCİİ değerini atayabilirsiniz, burada dikkatli olmanız gerek.
örnek.

C:
#include<stdio.h>

int main()
{
    int a = 'k'
    printf("%d",a);
    return 0;
}

Gördüğünüz gibi, ben int olan a değişkenine k harfini atadım bu bir hatadır.


Fonksiyon hataları.
Fonksiyon tanımlamala:
Fonskiyon tanımlama 2 türlü olur, biri prototip olarak üste 1 satır ile tanımlanır ve fonksiyonlar main fonksiyonun altında yazılır. Yada normal tanımlama mian fonksiyonun üstüne tanımlanması lazımdır, alta tanımlandığı vakit hata verirler, prototip ise üste tanımlar iken bir hata yaparsak bize hata verir. sizlere 2 farklı hatalı kodu Göstericem örnek olarak.
1.Kod

C:
#include<stdio.h>

int main()
{
    int a = topla(2,3);
    printf("%d",a);
    
    return 0;
    
}

int topla(int a, int b)
{
    int c = a+b;
    return c;
}

Buradaki hata, topla fonksiyonun main fonksiyonunun altında tanımlandığı için yukarıda kullanılan int a = topla(2,3) kodu bize hata verecektir.

2.Kod.

C:
#include<stdio.h>

int topla();

int main()
{
    int a = topla(2,3);
    printf("%d",a);
    return 0;
}

int topla(int a,int b);
{
    int c = a+b;
    return c;
}

İlk baktığınızda hata görmeye bilirsiniz. lâkin orjinal topla fonksiyonunda argüman alırken, prototip de almadım, bu bir hatadır. Ama bazı derleyiciler es geçebilir.

Dosya ve veri tabanı hataları.
Dosya hataları:
Dosya açma kapama gibi dosya işlemlerinde yapılan hatalardır, fprintf yerine ffprintf yaparsanız ne oluyorz der derleyici.
Veri tabanı hataları:Bir veri tabanı programı ile c yi beraber kullanacaz diyelim, yanlış çağırdır yada yanlış kodlar kullandık yukardaki hatalarda dahil olmak üzeri, bunlar bize geri döner hata olarak tabiki.

Ölümcül hatalar(Fatal errors) yada Çalışma zamanı hataları(run time error).
Evet arkadaşlar yukarıdaki hatalar ile hiç karşılaşmadınız, derlendi program, ama çalışmıyor , sebebi bu hata türüdür, bu hata çalışma zamanında çıktığı için run time error denir.
matematikte nasıl 0 a bir sayıyı bölemez iseniz aynı şekilde c de bölemezsiniz.
Örnek.

C:
#include<stdio.h>

int main()
{
    int c,a = 52;
    c = a/0;
    printf("%d",c);
    
    return 0;
    
}

Derleyici mesajı.
Bash:
main.c: In function ‘main’:
main.c:8:7: warning: division by zero [-Wdiv-by-zero]
    8 |  c = a/0;
      |       ^



Mantık hatası.
Evet arkadaşlar, yukarıdaki hatalardan hiç biri yapılmadı, derlendi ve çalıştı, ama yanlış çalıştı, hata mantıksal olarak yapılan bir hatadır, düzeltilmesi basittir,testler sırasında fark edersiniz, gelin ben bir kodda hata yapim, bir değişkeni bastırmak yerine kullanıcıdan alim.

C:
#include<stdio.h>

int main()
{
    // değişkeni atadım.
    int a = 22;
    // Ekrana bastırmak yerine kullanıcıdan alacam.
    scanf("%d",a);
    
    return 0;
}

Evet arkadaşlar c programlamadaki hatalar bukadardır umarım sizlerin yararına olur yazım iyi geceler.
 

trombolol33001

Katılımcı Üye
19 Kas 2021
420
142
18
Öncelikle herkese merhabalar, c programlama öğrenirken python yada diğer dillerden aldığınız hatalardan çok daha fazla hata almanız normaldir, sebebi zor bir dil olması.
Tamam assambly kadar olmasada zor işte ;)

Gelin beraber bu hatalara bakalım.

C'de 4 tür hata vardır, bunlar aşağıdaki gibidir.


Uyarı(warning) ; Bu hata biçimi aslında bir hata değildir, bir uyarıdır. Programın çalışmasını yada derlenmesini kesinlikle etkilemez, ama olmazsa iyi olur.
Örnek vermek gerekirse, bir değişken kullanılmamasına rağmen oluşturulmasıdır, aynı şekilde fonksiyon yada dizilerde kullanılmamasına rağmen oluşturulduğunda uyarı alırsınız.


Hatalar (errors) : En sık karşılaşılan hata türüdür, aslında birden fazla hata türüdür. Programın derlenmesini engeller derlense bile doğru bir biçimde çalışmaz, yanlış sonuçlar üretir. bu hatalar genelde derleme zamanında oluştuğu için biz programcılar bu hatalara. Derleme zamanı hataları yani compile time errors deriz. syntax error dediğimiz yazım kuralları hataları da bu sınıfa girer. Bu hata sınıfı kendi içerisinde 4 farklı kategoriye ayrılır, gelin onları beraber inceleyelim.

Dil bilgisi yani yazım hataları:
Yanlış yazım:
kısaca dostlarım. "C deki anahtar sözlüklerinin yanlış yazılması. fonksiyonların yanlış yazılması,
C:
komutların yanlış yazılması, değişken türlerinin yanlış yazılması".
Örnek: printf() yerine print(), değişkenlerdeki float yerine flooat yazmak gibi

Yanlış Noktalama kullanmak ve yanlış karakter kullanımı: Evet noktalama dedim ve C programcılarının sinirini tepesine getirdim :devilish:. Bilindiği gibi C'de bir çok noktalama işareti bulunmaktadır, ve aynı şekilde özel karakterler de bir o kadar vardır denebilir. bunlarda herhangi bir hata yapmak bizleri saatlerce aramamıza sebep olan o meşhur hatalara gönderir, neyse ki derleyici bizler için buluyor artık.
Örnek verelim.

C:
printf("Merhaba Türk Hack team üyesi.\n");
Yerine.
C:
printf(Merhaba Türk hack team üyesi \n)
2. Gördüğünüzde 2 tane hata vardır " " işareti ve sondaki ; işareti yoktur.
Değişken hataları:
Tanımlanmayan bir değişken kullanımı:
C de tanımlanmayan hatta sadece c de değil bir çok programlamada bunu yaparsanız, derleyici derki kardeşim bu ne?
Örnek.


C:
#include<stdio.h>

int main()
{
    printf("%d",a);
    return 0;
}

Burada a diye değişken tanımlanmadan kullandım bu bir hatadır.
Değişkeni tanımlanmadan önce kullanmak: C yukarıdan aşşağı ve soldan sağ doğru akan bir programlama dilidir, değişkeni tanımladığımız satırın üstünde değişkeni işleme tabi tutarsak hataya denk geliriz.
Örnek.


C:
#include<stdio.h>

int main()
{
    printf("%d",a);
    int a;
    return 0;
}

Gördüğünüz gibi, a yı ekrana bastırdıktan sonra tanıttım, derleyici derki kardeşim ben bilmiyorum bu değişkeni, alt satıra indiğimizde işletim sistemi alır değişkeni ve ram'deki bir adrese koyar, ama işlem önce yapıldığı için derleyici bize hata döndürür.
Bir değişkene türüne uygun olmayan bir değer atamak: bizim 4 ana veri tipimiz vardır. int(Tam sayı), float(Ondalıklı sayı), double(Büyük ondalıklı sayı), char( Krakter ), evet c bilen arkadaşlar diyecek şimdi long lar ve shortlara ne oldu, onlar kafa karıştırmasın diye eklemedim.
Şimdi biz int yani tam sayı değişkenine karakter tipi olan bir şey atarsak hata alırız, bazen almayız sebebi o karakter tipinin ASCİİ değerini atayabilirsiniz, burada dikkatli olmanız gerek.
örnek.

C:
#include<stdio.h>

int main()
{
    int a = 'k'
    printf("%d",a);
    return 0;
}

Gördüğünüz gibi, ben int olan a değişkenine k harfini atadım bu bir hatadır.


Fonksiyon hataları.
Fonksiyon tanımlamala:
Fonskiyon tanımlama 2 türlü olur, biri prototip olarak üste 1 satır ile tanımlanır ve fonksiyonlar main fonksiyonun altında yazılır. Yada normal tanımlama mian fonksiyonun üstüne tanımlanması lazımdır, alta tanımlandığı vakit hata verirler, prototip ise üste tanımlar iken bir hata yaparsak bize hata verir. sizlere 2 farklı hatalı kodu Göstericem örnek olarak.
1.Kod

C:
#include<stdio.h>

int main()
{
    int a = topla(2,3);
    printf("%d",a);
   
    return 0;
   
}

int topla(int a, int b)
{
    int c = a+b;
    return c;
}

Buradaki hata, topla fonksiyonun main fonksiyonunun altında tanımlandığı için yukarıda kullanılan int a = topla(2,3) kodu bize hata verecektir.

2.Kod.

C:
#include<stdio.h>

int topla();

int main()
{
    int a = topla(2,3);
    printf("%d",a);
    return 0;
}

int topla(int a,int b);
{
    int c = a+b;
    return c;
}

İlk baktığınızda hata görmeye bilirsiniz. lâkin orjinal topla fonksiyonunda argüman alırken, prototip de almadım, bu bir hatadır. Ama bazı derleyiciler es geçebilir.

Dosya ve veri tabanı hataları.
Dosya hataları:
Dosya açma kapama gibi dosya işlemlerinde yapılan hatalardır, fprintf yerine ffprintf yaparsanız ne oluyorz der derleyici.
Veri tabanı hataları:Bir veri tabanı programı ile c yi beraber kullanacaz diyelim, yanlış çağırdır yada yanlış kodlar kullandık yukardaki hatalarda dahil olmak üzeri, bunlar bize geri döner hata olarak tabiki.

Ölümcül hatalar(Fatal errors) yada Çalışma zamanı hataları(run time error).
Evet arkadaşlar yukarıdaki hatalar ile hiç karşılaşmadınız, derlendi program, ama çalışmıyor , sebebi bu hata türüdür, bu hata çalışma zamanında çıktığı için run time error denir.
matematikte nasıl 0 a bir sayıyı bölemez iseniz aynı şekilde c de bölemezsiniz.
Örnek.

C:
#include<stdio.h>

int main()
{
    int c,a = 52;
    c = a/0;
    printf("%d",c);
   
    return 0;
   
}

Derleyici mesajı.
Bash:
main.c: In function ‘main’:
main.c:8:7: warning: division by zero [-Wdiv-by-zero]
    8 |  c = a/0;
      |       ^



Mantık hatası.
Evet arkadaşlar, yukarıdaki hatalardan hiç biri yapılmadı, derlendi ve çalıştı, ama yanlış çalıştı, hata mantıksal olarak yapılan bir hatadır, düzeltilmesi basittir,testler sırasında fark edersiniz, gelin ben bir kodda hata yapim, bir değişkeni bastırmak yerine kullanıcıdan alim.

C:
#include<stdio.h>

int main()
{
    // değişkeni atadım.
    int a = 22;
    // Ekrana bastırmak yerine kullanıcıdan alacam.
    scanf("%d",a);
   
    return 0;
}

Evet arkadaşlar c programlamadaki hatalar bukadardır umarım sizlerin yararına olur yazım iyi geceler.
Elinize sağlık
 

projex

Üye
10 Ara 2021
208
135
25
Türkiye
Arkadaşlar herkese tek tek mesaj atıp diğer mesajları geride bırakmamak için topluca teşekür mesajdıır bu.
Eline ve emeğine sağlık diyen herkese teşekkür ederim.
 
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.