Anasayfa > Programlama > Turbo C
Hazırlanıyor..
Makaleye verilen puanlar Makaleye verilen puanlar Makaleye verilen puanlar Makaleye verilen puanlar

Turbo C



 

C++ PROGRAMLAMA DİLİ

 

 

GİRİŞ

 

C, 1970’li yılların başlarında AT&T Bell laboratuarlarında geliştirilmiş bir programlama dilidir. Kendisinden önceki B dili üzerine kurulu olmasından dolayı bu isim verilmiştir. Kısa sürede özellikle üniversite ve askeri çalışmalarda büyük projelerde kullanılmaya başlandı. C’nin en büyük özelliği sistem programlarının geliştirilmesinde kullanılmasıdır. İşletim sistemlerinin hazırlanmasında makine dili olan Assembler tercih edilmiştir. En yaygın işletim sistemlerinden olan UNIX ise büyük bir oranda C dili kullanılarak hazırlanmıştır. Bu da C dilinin önemini oldukça arttırmıştır.

 

C programlama dili yapısal bir dildir. Yapısal programlama dilleri yapı ve temel komutlar bakımından birbirlerine benzerler. Tüm yapısal programlama dillerinde olduğu gibi, C’de yazılan programlar da bloklar halinde yazılırlar. Buna en büyük örnek Turbo Pascal’dır. Turbo Pascal ile C/C++ arasında çok benzerlikler bulunmaktadır. Turbo Pascal kullanıcıları için C’de program yazmak çok daha kolaydır.

 

 

ÖZEL SEMBOLLER VE C KELİMELERİ

 

 

  • Bir C programı içerisinde, A’dan Z’ye büyük harfler , a’dan z’ye küçük harfler (Türkçe karakterler hariç) ve 0’dan 9’a kadar rakamlar kullanılır.
  • Program içerisinde tek başına kullanılan özel karakterler.

 

.      !     ~    +    -    &    *     /     %    ^     |     =

 

 

  =

Eşitliğin sağ tarafında verilen ifadeyi sol taraftaki değişkene aktarır.

 &

Bit seviyesinde AND(VE) operatörü

  |

Bit seviyesinde OR(VEYA) operatörü

  ^

Bit seviyesinde XOR operatörü

  +

Toplama operatörü

  -

Çıkarma operatörü

  /

Bölme operatörü

  %

Modüler bölme operatörü. Bölme işleminde kalanı verir.

 ~

Bit seviyesinde komplementini ( 0 bitini 1,1 bitini 0 yapar) alma

 !

Mantıksal değil(NOT)

 

 

 

 

 

 

TANITICI İSİMLERİ

 

Program içerisinde kullanılan değişken, sabit, fonksiyon gibi isimleri için kullanılan ve programcı tarafından belirlenen özel isimlerdir. Özellikleri aşağıda verilmiştir.

 

  1. Harf veya _(alt çizgi karakteri) ile başlamalıdır.
  2. İlk karakterden sonra rakam ve altçizgi karakterleri kullanılabilir.
  3. İçerisinde Türkçe karakter, boşluk ve özel karakter bulunamaz.
  4. Bir C kelimesi olamaz.
  5. Küçük harf ve büyük harf ayırımı yapılmaktadır. X ile x değişkenleri aynı değildir. Aynı şekilde maas ve Maas değişkenleri de aynı değildir. Bu ifadelerin her biri faklı hafıza alanlarına karşılık gelir.

 

TEMEL VERİ TİPLERİ

 

C programlama dilinde kullanılan temel veri tipleri char, int, Float ve double’dır. Ancak bu veri tiplerinin önüne short , unsigned ve long kelimeleri kullanılarak değişik veri tipleri meydana getirilebilir.

C ve C++ derleyicilerinde kullanılan veri tipleri arasında bazı faklılıklar olmakla birlikte, kullanılan temel veri tipleri aşağıdaki tabloda verilmiştir.

 

Tip Adı

Uzunluk

Sınırlar

Alt Sınır

Üst sınır

Enum

16 bit

-32,768

32,767

Unsigned int

16 bit

0

65,535

Short int

16 bit

-32,768

32,767

Int

16 bit

-32,768

32,767

Unsigned long

32 bit

0

4,294,967,295

Long

32 bit

-2,147,483,648

2,147,483,647

Float

32 bit

3.4 x 10-38

3.4 x 10 +38

Double

64 bit

1.7 x 10 -308

1.7 x 10  +308

Long double

80 bit

3.4 x 10 -4932

1.1 x 10 +4932

Unsigned char

8 bits

0

255

char

8 bits

-128

127

 

 

int ……………….: Tamsayı tipte bilgiler için kullanılır. Sınırları kullanılan C Derleyicisine göre farklılık gösterebilir. Sıralı bir tiptir.

 

long ……………...: Tamsayı tipte bilgiler için kullanılır. Sıralı bir tiptir. Long int tipi ile aynıdır.

 

float………………: Ondalıklı sayılar için kullanılır. Tek inceliklidir.

 

double……………: Ondalıklı sayılar için kullanılır. Çift inceliklidir.

 

char………………: ASCII karakterleri ve çok küçük sayılar için kullanılır. (String bilgiler için dizi olarak kullanılır.)

unsigned…………: Unsigned belli veri tiplerinin işaretsiz değerler almasını sağlamak için kullanılır. Örneğin; unsigned int veri tipi 0-65,535 arasında değerler alır. Dikkat edilecek olunursa negatif kısım pozitif kısma eklenmiş. Unsigned char , int ve long türleri için uygulanabilir.

 

 

 

DEĞİŞKEN TANIMLAMA

 

Değişken, bilgileri tutmak için kullanılan ve programcı tarafından tanıtıcı isimleri özelliklerine göre verilen özel isimlerdir. Her değişken belirli bir veri tipine (int,long,char,…) sahip olmalıdır.

 

Değişkenleri tanımlamak için aşağıdaki yazılım şekli kullanılır:

 

Veri Tipi   Değişken Adı1[, Değişken Adı2,…];

 

Örnek:

 

int sayı;

int x,y;

char c;

float maas;

double faktoryel,toplam,kup;

 

DEĞİŞKENLERE DEĞER ATAMA

 

Bir değişkene değer atamak için = operatörü kullanılır. Değişkene değer atama işlemleri tanımlama sırasında yapılabileceği gibi, programın uygun yerlerinde de yapılabilir. Tanımlama sırasında yapılan atama ‘İlk değer atama’  olarak kabul edilir.

 

Tanımlama sırasında değer atama işlemleri aşağıdaki gibi yapılabilir:

 

char cevap=’E’;

int sayi=100;

 

Aynı anda birden fazla değişkene değer ataması yapılabilir:

 

int i , j , k;

:

int i = j = k = 6354;

 

 

 

 

 

 

SABIT TANIMLAMA

 

Program başından sonuna kadar değeri değişmeyen isimlerdir. Değişkenlerin sahip oldukları değerler program içerisinde istenildiği gibi değiştirilebilir.Ancak sabitlerin değerleri program içerisinde değiştirilemez.

 

Sabit tanımlamak için const kelimesi kullanilir. Bunun yazilimi;

 

Const tipadi = deger;

 

Örnek:

 

const float pi=3.14285;

const char sifre[ ] = “Sakarya”;

const int elsay=20;

 

OPERATORLER

 

Bir veya daha fazla bilgi uzerinde ilsem yapilmasini ve sonucta yeni degerler uretilmesini saglayan programlama diline ozgu sembollere operator denir. Operatorler bir veya daha fazla karakterden olusabilir. C programlama dilinde kullanim amaclarina gore aritmetik, mantiksal , karsilastirma ve bit seviyesinde ilsem yapan oparetorler vardir.

 

 

Atama operatoru(=)

 

Bir degiskene, bir ifadeyi (ilsem,sabit veya degisken ) atamak icin kullanilir. = operatoru, sag taraftaki ifadeyi sol taraftaki degiskene aktarir.

 

m=63;   è  m degiskenin degeri 63 olur.

 

m=x+5;  è m degiskenin degeri m+5 isleminin sonucu olur.

 

Aritmetik operatorler

 

Temel aritmetik islemelrin yapilmasini saglayan operatorlerdir.

 

Operator        Tanimi                                    Operator        Tanimi

 

      +               Toplama                                        %              Bölme işleminde kalan

     -               Çıkarma                                       +=              Ekleyerek atama

              *            Çarpma                                        -=               Çıkararak atama         

                  /                 Bölme                                          *=              Çarparak atama

                 ++              Bir arttırma                                    /=              Bölerek atama

                  --               Bir azatma                                    %=             Bölerek kalanını atama

 

 

 

 

Karsilastirma operatorleri

 

Karsıilastirma islemlerinin yapilmasini saglayan operatorlerdir.

 

            Operator                    Tanimi

              

               = =                           Eşit

               ! =                            Farkli

                <                             Kucuk

                >                             Buyuk

   <=                            Kucuk esit

   >=                            Buyuk esit

 

Mantiksal (lojik) operatorler

 

Mantiksal islemlerde sart sayisinin birden fazla olmasi durumunda bu sart ifadeleri arasina mantiksal operatorler kullanilarak tek sart durumuna getirilir ve sartin tumleyeneni alir.

 

 

            &&         : VE(AND)  anlamindadir.

            ||              : VEYA(OR)  anlamindadir.

!           : DEGİL(NOT) anlamindadir. Sartin dogru olmasi durumunda yanlis, yanlis olmasi durumunda ise dogru sonuc uretir.

 

Bit seviyesinde ilsem yapan operatorler

 

Bir bitin degeri ya  0(sifir)  yada 1’dir

 

& Operatoru  : Bit seviyesinde AND(VE) islemi yapar.

|   Operatoru  : Bit seviyesinde OR(VEYA) islemi yapar.

^  Operatoru  : Bit seviyesinde XOR islemi yapar.

~  Operatoru  : Bit seviyesinde NOT(degil) islemi yapar.

<< Operatoru :  Sola kaydirma (left shift) operatoru olarak kullanilir.

>> Operatoru :  Saga kaydirma (right shift) operatoru olarak kullanilir.

 

GIRIS- CIKIS FONKSIYONLARI

 

printf                                                                                                                                          

 

Belirtilen sabit, degisken veya islem sonuclarini standart cikis birimine gondermek amaciyla kullanilir.  

 

Yazılımı:

 

            int printf(const  * format [, argı,umanlar,….] )

 

 

Örnek:

 

void  main()

{

            printf(“C programlama ogreniyorum\n”);

}

 

 

Kontrol

karakteri

 

İslevi

 

\n

\t

\r

\v

      \b

\f

 

 

Imlecin bir sonraki satira gecmesini saglar (newline)

Imlecin ayni satir uzerinde bir sonraki tab noktasina gitmesini saglar.

Ayni satir uzerinde satir basina donmeyi saglar.

        Imlecin uzerinde bulundugu satir degistirilmeden bir sonraki satira gecmesini saglar.

        Imlecin bir karakter geri gelmesini saglar.

        Bir sonraki sayfanin basina gidilmesini saglar.Sayfa atlama.

 

 

 

sprintf

 

Formatlanmış bilgiyi ekran yerine belirtilen string değişkene aktarır. Kullanım olarak printf fonksiyonu gibi işlem görür.

 

Yazılımı :

 

            int sprintf(char *degisken1, const char *degisken2 [,argument,…] );

 

Örnek :

 

            #include

            #include

            main()

            {

                        char str[80];

                        int x=63;

                        sprintf(“str,”x değişkeninin değeri %d\n “, x”);

                        printf(“%s”, str);

                        getch();

            }

 

 

puts

 

Belirtilen bilgiyi standart çıkış aygıtına gönderir. \n (yeni satır) karakterini ilave eder. İşlemin başarılı olması durumunda en son yazılan karakteri verir. Hata oluşması durumunda ise EOF değerini döndürür.

Yazılımı :

 

            int puts ( cost char *degisken)

 

Örnek :

 

            # include

# include

main ()

{

            char str [80];

            char num[] = “9905010231”;

            int vize = 63, final = 55;

            float ort;

 

            ort = (vize+final)  / 2.0;

            sprintf ( str,“Öğrencinin Numarası:%s”,num);

           

            puts (str);

            sprintf ( str,”Vize notu  : %d”, vize);

            puts (str) ;

            sprintf ( str,”Final notu : %d”, vize);

            puts (str);

            sprintf ( str,”Ortalama  : %d”, vize);

            puts (str);

            getch();

}

 

scanf

 

Standart giriş aygıtından (klavye , ekran) bilgi okumak için kullanılır.Bu  fonksiyon karakterleri tek tek okur ve herhangi birini veya herhangi bir kombinasyonunu verilen formata göre düzenleyerek belirtilen argümanlara aktarır.

 

Yazılımı :

 

            int  scanf (const char * degisken [, argüman1,…..] );

 

Örnek :

 

#include

#include

main ()

{

            char ad [20] ;

            printf (“Adınız :”);   scanf (“%s”,ad);

            printf (  “Merhaba %s Nasılsın \n”,ad) ;

            getch();

}

 

Örnek :

 

#include

#include

main ()

{

            int x,y,t;

            printf (“İki sayı giriniz :”); scanf (“%d   %d”, &x ,&y);

            printf (“ 1. sayı             : %d \n ”,x);

            printf (“ 2. sayı             : %d \n ”,y);

            t= x+y ;

            printf (“Toplam            : %d \n” , t );

            getch();

}

 

gets

 

Bu fonksiyon ile standart giriş biriminden \n (yeni satır ) karakteri girilinceye kadar karakter okumak için kullanılır.

 

Scanf fonksiyonu ile bilgi okuma işlemleri yapılabilir. Ancak scanf fonksiyonu ile bilgi okuma işlemi sadece bir kelime ile sınırlıdır. Örneğin , bir ad soyad, adres veya açıklama gibi bilgiler içerisinde mutlaka boşluk bulunmalıdır. Cgets fonksiyonu ise belirtilen sayıda karakter okumak mümkündür. Okuma işlemi yeni satır işaretine (\n) kadardır.

 

Yazılımı :

 

            char *gets ( char *string)

           

Örnek :

 

#include

#include

main ()

{

            char adsoy [30];

            char adres [50];

           

            printf( “Ad soyad  :”); gets (adsoy);

            printf(“Adres         :”); gets (adres);

 

            printf(“Girilen Ad soyad : %s \n”, adsoy);

            printf(“Girilen  Adres      : %s \n”, adres);

 

            getch();

}

 

cgets

 

Girilecek  karakter sayısını kontrol ederek, string bilgi okumak için kullanılır

Yazılımı :

 

·                                char * cgets  (char * degisken) ;

·                     

·                    Örnek :

·                     

#include

#include

main ()

{

·                                char isim [30] ;

·                                char *p ;

·                                isim[0] = 10 ;

·                               

·                    printf (“Ad soyad giriniz : ”);

·                    p= cgets (isim);

·                    printf (“\n”);

·                    printf (“Girilen ad soyad   : %s \n ”,isim);

·                    printf (“Fonksiyon değeri : %s \n ”, p);

·                    printf (“Karakter sayısı     : %d \n”, isim[0] );

·                    printf (“İzmir”);

·                     

·                                getch();

·                    }

·                     

·                     

PROGRAM KONTROL DEYİMLERİ

·                     

·                    Bazı ifade ya da ifadelerin yerine getirilmesi belirli şart ya da şartlara bağlı olabilir. Bu durumda program içerisinde bu tip ifadeleri işlemeden önce gerekli şartların kontrol edilmesi gerekir. Yapılan kontrolle şartın doğru ya da yanlış olup olmadığı araştırılır, bu sonuca göre ifadeler çalıştırılır ya da çalıştırılmaz.

·                     

IF Deyimi

 

 

if (şart)  ifade

 

if (a>10) printf( “activate 10’dan büyüktür.”);

 

 

 

 

 

if (şart)

{

ifade 1

ifade 2

……..

      }          

 

 

                   if (şart)                                            if (a> 0 || a= =0 )     

                     {                                                        {

                         ifade 1                                               printf (“ a sıfırdan büyük”) ;

                         ifade 2                                               a = 1;

                      }                                                        }

                            else                                                 else

                     {                                                        {

                         ifade 3                                               printf (“ a sıfırdan küçük”);

                         ……..                                                a= -1;

                      }                                                        }

   

 

Örnek 1 :

Klavyeden girilen bir sayının pozitif mi? Negatif mi? Yoksa sıfır mı? olduğunu bulan programı yapınız…..

 

Cevap 1 :

 

 # include

 # include< stdio.h>

 

int a;

 

main ()

{

clrscr();

printf (“Bir sayı giriniz….:”);

scanf (“%d”, &a); // (Bu şekilde iki tane / işaretini gördüğünüzde / ‘tan sonraki  işlem geçerli    değildir.)

 

            if ( a<0 )   printf (“%d  negatif bir sayıdır..”,a);

            if ( a>0 )   printf (“%d   pozitif bir sayıdır..”,a);

            if (a= =0)  printf (“Sıfır girildi….. ”);

 

getch();

}

 

Örnek 2 :

Klavyeden girilen bir harfin büyük mü? küçük mü? olduğunu bulan programı yapınız.

 

Cevap 2 :

 

# include

# include< stdio.h>

 

char  a;

 

main ()

{

clrscr();  // Ekran temizleme fonksiyonu

printf (“Bir harf giriniz….:”);

scanf (“%c”, &a);  //  a = getch();

 

            if (a>=’A’  && a<=’Z’ )   printf (“%c büyük harfle girdiniz…” , a );

            if (a>=’a’   &&  a<=’z’ )   printf (“%c küçük harfle girdiniz…” , a );

 

getch();

}

 

 

 

Örnek 3 :

Klavyeden 2 sayı ve 1 operatör girilmektedir. Girilen operatöre göre (+, - , / , * ) ilgili işlemleri gerçekleştiren programı yapınız….

 

Cevap 3 :

 

# include

# include< stdio.h>

 

char  oper;      int a,b;    float sonuc ;

 

main ()

{

clrscr();

 

printf ( “1 . sayı  :”); scanf (“%d”, &a);

printf ( “2.  sayı  :”); scanf (“%d”, &b);

 

printf (“Operatör giriniz  :”);    oper = getche();

 

            if (oper = = ‘+’)

               {

                    sonuc= a+b;

                    printf (“ %d + %d = % 5.2f ”, a,b,sonuc);

                }

           

            if (oper = = ‘- ’)

               {

                    sonuc = a- b,

                    printf (“ %d - %d = %5.2f ”, a,b ,sonuc);

                }

 

            if ( oper = = ‘*’)

               {          

                    sonuc = a*b;

                    printf (“ %d * %d = %5.2f”,a,b,sonuc );

                }

 

            if ( oper = = ‘/’)

               {

                    sonuc = a/b;

                    printf(“ %d / %d = %5.2f ”, a,b,sonuc);

                }

 

getch();

 

}

 

 

 

 

 

Switch – Case

 

Verilen ifadenin aldığı değere göre programın kışını istenen seçeneklere yönlendirmek için kullanılır.

 

Yazılımı :

 

            switch (ifade) {

                        case sabit1 :  komut (lar)

                        case sabit2 :  komut (lar)

                           :

                           :

                        case sabitN :  komut (lar)

                        [default komut (lar)]

            }

 

Örnek 1 :

 

Klavyeden 1-5 arasında il trafik kodu girilmektedir. Girilen koda göre ilin ismini ekrana yazan programı yapınız…

 

Cevap 1 :

 

# include

 # include< stdio.h>

 

int kod;

 

main ()

{

clrscr();

 

printf (“1-5 arasında il trafik kodunu giriniz  :”);

scanf (“ %d ”, &kod);

 

switch (kod)

{

            case 1 : printf (“Adana \n“);   break;

            case 2 : printf (“Adıyaman \n”);  break;

            case 3 : printf (“Afyon \n“);   break;

            case 4 : printf (“Ağrı \n”);  break;

            case 5 : printf (“Amasya \n”);  break;

default :

            printf (“1-5 arasında bir kod girmediniz..:”);

}

 

getch();

 

}

 

Örnek 2 :

Klavyeden iki sayı girilmektedir. Aşağıdaki menüye göre ilgili işlemi gerçekleştiren programı SWITCH CASE ile yapınız.

                       

1-     Toplama

2-     Çıkarma

3-     Çarpma

4-     Bölme

5-     Çıkış

Cevap 2 :

 

# include

# include< stdio.h>

 

char  oper;      int a,b;   

 

main ()

{

clrscr();

 

printf ( “1 . sayı  :”); scanf (“%d”, &a);

printf ( “2.  sayı  :”); scanf (“%d”, &b);

           

puts (“1- Toplama”);

puts (“2- Çıkarma “);

puts (“3- Çarpma ”);

puts (“4- Bölme  ”);

puts (“5- Çıkış ”);

 

puts (“Seçiminiz…:”); scanf (“%d”,&sec);

 

switch (sec)

{

            case 1 :  printf (“  %d + %d = %d ”, a,b, a+b);   break;

            case 2 :  printf (“  %d -  %d = %d ”, a,b, a-b );   break;

            case 3 :  printf (“  %d * %d = %d ” , a,b, a*b);   break;

            case 4 :  printf (“  %d /  %d = %d “ , a,b, a/b );   break;

            case 5 :  abort ();

}

 

getch();

 

}

 

 

DO – While Döngüsü

 

Verilen şart doğru olduğu sürece belirtilen işlemleri tekrarlamak için kullanılır. Şart kontrol işlemi  döngünün sonunda yapılır.

 

Yazılımı :

 

            do {

                        :

                        Komut / komutlar

                        :

                  }  while (şart) ;

 

Örnek 1 :

Klavyeden bir mesaj ve mesajın kaç kere yazdırılacağı girilmektedir. Buna göre mesajı istenilen sayıda ekrana yazan programı do-while döngüsüyle yapınız…

Cevap 1 :

 

# include

# include

 

int x, a=0; char msj;

 

main()

{ clrscr();

 

printf (“Mesajı giriniz……….:”);  scanf (“%s”,&msj);

printf (“Kaç kere yazılsın…....:”);  scanf (“%d”,&x);

 

do {

            printf (“%s\n”,msj);

            ++a;

      }while ( a

 

getch ();

 

}

 

Örnek 2:

1-10 arasındaki sayıların karesini ve küpünü yazan programı aşağıdaki şekilde  do-while döngüsüyle yapınız….

 

            Sayı                Karesi            Kübü

            1                      1                      1

            2                      4                      8         

            3                      9                      27

            4                      16                    64

            :                      :                      :

            :                      :                      :

 

Cevap 2 :

 

# include

# include

 

int i;

 

main()

{ clrscr();

 

printf(“Sayı\t   Karesi\t  Kübü\t”);

do {    

            printf (“\n %d\t %d\t %d\t”, i, i*i , i*i*i  );

            ++ i;

      }while( i<=10);

getch ();

 

}

 

Örnek 3 :

80 ile 10 arasındaki tek sayıları ekrana yazan programı yapınız…

 

Cevap 3 :

 

# include

# include

 

int  a;

 

main()

{ clrscr();

 

do {     a --;

             if (a%2 = =1) printf (“%d\t ”,a);

       } while (a>10);

 

getch ();

 

}

 

While

 

Verilen şart doğru olduğu sürece belirtilen işlemleri tekrarlamak için kullanılır. While komutunda şart başlangıçta kontrol edilir. Şayet şart doğru ise döngüye girilir, şart doğru değil ise döngüye uğramadan diğer terimler çalıştırılır.

 

Yazılımı :

 

            while (şart) ifade;

 

            while (şart )

              {

                   ifade -1;

                  ifade -2 ;

                     :

                     :

                  ifade –n;

              }

 

Örnek 1 :

Klavyeden 0 girilene kadar sayıyı ve karesini ekrana yazan programı yapınız….

Cevap 1 :

 

# include

# include

 

int a=1;

 

main()

{ clrscr();

 

while(a= = a)

            { printf (“Bir sayı girin  :”);

               scanf (“%d”, &a);

               if (a= = 0 ) break;

               printf (“Sayı : %d  Karesi : %d \n”,a,a*a);

             }

getch();

 

}

 

Örnek 2 :

Küçük harfle girilen bir cümleyi büyük harfe çeviren programı while döngüsünü kullanarak yapınız.

Cevap 2:

# include

# include

# include

# include

 

int u, i;  char cumle[50];

 

main()

{ clrscr();

 

puts (“Küçük harf ile bir cümle giriniz…:”);

scanf(“%s”, &cumle);

 

u= strlen (cumle);

i=0;

 

while(i

printf(“%c”, toupper(cumle[i]));

            i ++; }

getch();

 

}

 

FOR Döngüsü

 

Verilen şart doğru olduğu sürece belirtilen işlemlerin tekrarlanmasını sağlar.

 

Yazılımı :

 

            For ( [İfade 1]; [İfade 2]; [İfade 3]; ) Komut / Komutlar

 
Örnek 1 :

1-10 arasındaki sayıları ekrana yazan programı yapınız..

Cevap 1 :

 

#include

#include

 

main()

{ clrscr();

 int i;

 

for( i=1; i<=10; i++)  printf(“%d\n”,i);

 

getch();

}

 

Örnek 2 :

Klavyeden girilen bir sayının faktöriyelini bulan programı for döngüsü kullanarak yapınız…

 

Cevap 2 :

 

#include

#include

 

main()

{ clrscr();

 

int a,f;

 

printf (“Bir sayı giriniz….:”);   scanf (“%d”,&a);

f=1;

 

for (; ;)  // Sonsuz döngü

{      f = f*s;

        s--;

        if ( s = = 1) break ;

}

getch();

}

 

DİZİLER

 

Dizi bellekte ard arda sıralanmış aynı türden verilere verilen isimdir. Diziler tek bir isin altında bellekte ardışık olarak sıralanmış birden fazla aynı tipte veriye ulaşılabildiği için basit bir bellek değişkenine göre daha geniş bir kullanım alanına sahiptir. Programda kullanılan verilerin aynı çatı altında adlandırılabilmesi için ortak özelliklere sahip olması gerekir. Tek boyutlu dizilere  vektör, çift boyutlu dizilere  matris denilir.

 

Örnek 1 :

Dizileri anlamamız için basit, kolay ve anlaşılır bir örnek….

Cevap 1 :

 

# include

# include

int i,a[5];

 

main()

{ clrscr();

 

for( i=0;i<5; i++)

{

printf (“%d. Sayıyı giriniz : ”,i+1 );

scanf ( “%d ”, & a[i]);

}

 

printf (“ \n İlk girilen sayı………: %d”, a[0]);

printf (“ \n Üçüncü girilen sayı…: %d”, a[2]);

printf (“ \n Son girilen sayı……..: %d”, a[4]);

 

getch();

}

 

Örnek 2 :

Klavyeden girilen 8 adet sayı bir diziye okutulmaktadır. Girilen sayılar içinde en büyük ve en küçük  sayıyı bulan programı yapınız….

Cevap 2 :

 

# include

# include

 

 

main()

{ clrscr();

 

int z[8] , eb, ek, i ;

 

for (i=0; i<8; i++)

            {

                printf (“%d . sayı......:”,i+1);

                scanf (“ %d”,&z[i] );

             }

eb= z[0];  ek= z[0];

 

for (i=1; i< 8; i++)

            {

                        if(z[i] > eb)   eb= z[i];

                        if(z[i] < ek)   ek= z[i];

            }

 

for(i=0; i<8; i++)

{

            if (z[i] = = eb) printf (“En büyük sayı : %d ve %d. sırada yazıldı…\n”, eb,i+1);

            if (z[i] = = ek) printf (“En küçük sayı : %d ve %d .sırada yazıldı…\n”, ek,i+1);

}

getch();

}

 

Örnek 3 :

Bilgisayar tarafından rasgele üretilen 10 adet sayı bir diziye okutulmaktadır. Bu dizinin elemanlarını ekrana yazan programı yapınız…

 

Cevap 3 :

 

#include

#include

#include

 

main() { clrscr();

randomize();

 

int  i,a[10];

for (i=0; i<10; i++)    a[i]=random(1000);

for (i=0; i<10; i++)    printf (“%d. sayı : %d \n” ,i+1, a[i] );

 

getch();

}

 

Örnek 4 :

Klavyeden girilen 20 adet sayının pozitif olanlarını pozitif adlı diziye, negatifleri negatif dizisine atayan ve ayrı yarı ekrana listeleyen programı yapınız..

 

Cevap 4 :

 

#include

#include

 

main() { clrscr();

 

int a[20],i,b,c;

int pozitif[20] , negatif[20];

b=-1; c=-1;

 

for( i=0; i<20; i++)

            {

                        printf(“%d. sayıyı giriniz…:”,i+1);

                        scanf (“%d”, &a[i]);

                        if (a[i]<0) { b++; negatif[b] = a[i];}

                        if (a[i]>0) { c++; pozitif [c] = a[i];}

            }

clrscr();

 

for (i=0; i<=c; i++)      printf (“Pozitif Sayılar……..: %d\n”,pozitif[i]);}

for (i=0; i<=b; i++)    printf (“Negatif Sayılar…….: %d\n”,negatif[i]); }

 

getch();

}

 

 

 

 // Çift boyutlu diziler (Matrisler) ile ilgili örnekler

 

Örnek 5 :

2 x 2 boyutlu iki matrisin toplamını üçüncü matrise aktaran programı yapınız. Her iki matrisin değerleri aynıdır. Ve değerleri şöyledir

 

   A Matrisi           B Matrisi                

1

2

3

4

1

2

3

4

                                   
          

  C Matrisi

2

4

6

8

 

 

 

                                              

Cevap 5 :

 

#include

#include

 

int a[2][2]={1,2,3,4};

int b[2][2]={1,2,3,4};

int c[2][2];     int i,j;

 

for(i=0; i<2; i++)

            for(j=0; j<2; j++)   c[i][j] = a[i][j] + b[i][j];

for(i=0; i<2; i++)

            for(j=0; j<2; j++) 

                        {

                                   printf(“%d \t”, c[i][j]);

                                   if(j= =1)  printf (“\n”);

                        }

getch();

}

 

Örnek 6 :

5 x 5 boyutundaki A matrisini sabit olarak tanımlayarak, 10’dan büyük elemanlarını tek boyutlu B matrisine aktaran programı yapınız…

 

Cevap 6 :

 

#include

#include

 

int a[5][5] = { 25,1,58,14,2,47,36,3,5,41,11,8,4,22,12,7,77,33,27,98,55,66,32,18,38};

int b[20];

int i,j,k=0;

 

main()

{ clrscr();

 

for (i=0; i<5; i++)

            for (j=0; j<5; j++)  if (a[i][j]>10) { b[k] = a[i][j] ; k++;}

 

for (i=0; i<5; i++)        printf(“%d\t”, b[i]);

getch();

 

}

 

POINTERLAR

 

Pointer tipi değişkenler normal değişkenlerin adreslerini tutan değişkenlerdir. Pointerlar kullanılarak C programlama dilinde adres bazında işlemler yapmak mümkündür.  Özetle pointer başka bir değişkenin bilgisayar belleğindeki adresini gösteren değişkendir.

 

Pointer tipi değişkenler değişkenin başına * operatörü kullanarak tanımlar. Örneğin; int tipi bir değişkenin adresini tutacak olan pointer tipi değişken int *a şeklinde tanımlanır. Pointerlarda * ve & operatörlerinin görevleri  şu şekildedir.

 

* operatörü   : Adresin içindeki değeri bulmak için kullanılır.

& operatörü  : Değişkenin adres bilgisini tutar.

 

Örnek 1 :

Pointer kavramını anlamamız için basit ve anlaşılır bir örnek….

 

Cevap 1 :

#include

#include

 

main() { clrscr();

 

int j, *p;

p= &j;

j=112;

 

printf(“j değişkeninin adresi  : %p \n ”,&j);

printf(“j değişkeninin tuttuğu sayı : %d\n ”, j);

printf(“p pointerının adresi : %p\n”,p);

printf(“p pointerının tuttuğu adresteki sayı : %d \n ”,*p);

 

getch();

}

 

****  Pointerlar bellekte 2 byte’lık yer kaplar.

 

Örnek 2 :

Klavyeden girilen 10 adet sayı bir diziye okutulmaktadır. Diziyi düz ve ters sırada ekrana yazan programı pointer kullanarak yapınız..

Cevap 2 :

 

#include

#include

 

main() { clrscr();

int a[5], i , *p;

p=a;

 

for (i=0; i<5; i++)

            {

                        printf(“%d. sayıyı girin :”,i+1);

                        scanf(“%d”,&a[i]);

            }

for(i=0; i<5; i++)  printf(“%d .sayı…:%d\n”,i+1,*p++);

 

p=&a[4];

for(i=5; i>=1; i--) printf(“%d. sayı…:%d\n”,i,*p--);

getch();

 

}

 

 

Örnek 3 :

Klavyeden girilen 10 adet  sayı bir diziye okutulmaktadır. Sayıların toplamını ve ortalamasını pointer ve fonksiyon kullanarak yapınız…

 

Cevap 3 :

 

#include

#include

 

int a[10],i;              float x,ort;

 

toplam ( int *k)

int n;

            for (n=0; n<10;n++)   x+ = *k++;

            ort = x/10;

}

 

main()

{   clrscr();

            for (i=0; i<10; i++)

                        {

                                   printf(“%d. sayıyı giriniz…:”,i+1);

                                   scanf(“%d”,&a[i]);

                        }

toplam(a); // a dizisinin ilk adresine gider…..

 

printf(“Sayıların toplamı ….: %3.0f”,x);

printf(“Sayıların ortalaması…: %3.2f”,ort);

 

getch();

}

 

Örnek 4 :

Yarı çapı girilen dairenin alanını ve çevresini hesaplayan programı fonksiyon ve pointer kullanarak yapınız. Alan ve çevre ana programda yazdırılacaktır.

Cevap 4 :

 

#include

#include

#include

# define PI 3.14

 

daire (float cvp1, float *a1, float *cev1)

{

            *a1=PI * cvp1 * cvp1;

            *cev1 = PI *cvp1 * 2;

}

 

main()

{

float cvp,a,cev;

clrscr();

 

printf(“Dairenin yarı çapını giriniz…: ”);

scanf(“%f”,&cvp);

daire(cvp,&a,&cev);

 

printf (“Dairenin alanı….:%4.2 f\n”,a);

printf(“Dairenin çevresi...: %4.2f\n”,cev);

 

getch();

}

 

YAPISAL VERİ TİPLERİ

Struct (Yapı)

 

Diziler aynı tipteki verilere indis verilerek tek bir isimle erişmek için kullanılır. Struct deyimiyle bildirilen topluluk ise farklı tipteki verilere tek bir isimle erişmek için kullanılır. Topluluk bildiriminde (struct) birçok farklı tipteki değişken bir araya getirilerek tek bir isim altında toplanır.

 

Örnek 1 :

Klavyeden doğum günü ve günün tarihi girilen bilgiler doğrultusunda yaşınızı ve genç ya da yaşlı olup olmadığınızı bulan programı struct veri tipini kullanarak yapalım….

Cevap 1 :

 

#include

#include

 

struct tarih { int ay,gun,yil;} ;

 

main() { clrscr();

 

struct tarih bugun,dg; // bugun ve dg degişkenleri tarih tipinde tanımlanmıştır.

int yas;

 

puts (“Doğum gününüzü girin….:”);

scanf(“%d  %d  %d ”, &dg.gun, &dg.ay, &dg.yil);

puts (“Bugünün tarihini girin…..:”);

scanf(“%d %d %d”,&bugun.gun, & bugun.ay, &bugun.yil);

 

if((bugun.ay = = dg.ay && bugun.gun>= dg.gun) ||  (bugun.ay >dg.ay))

            yas= bugun.ay – dg.yil;

else     

            yas = (bugun.yil- (dg.yil-1));

 

if(yas>15 && yas<25)

            printf(“%d yaşında ve gençsiniz…”,yas);

else

            printf(“%d yaşında ve yaşlısınız….”,yas);

 

getch(); }

Örnek 2 :

10 kişilik bir sınıftaki öğrencilerin matematik ve fizik derslerinden 2 not girilmektedir. Her bir öğrenci ve derse ait ortalamaları bulup matematik ve fizik ortalamalarının  toplamı 50 ve üzeri olanların isimleri ile beraber “Geçti” mesajını, aksi durumda “Kaldı” mesajını yazan programı yapalım…

Cevap 2 :

 

#include

#include

 

struct  ders { char ad[20];

                      int matnot1,matnot2,matnot3,fiznot1,fiznot2,fiznot3;

                      int matort,fizort,genelort;           

                    } dersnot[10];

main()

{  clrscr();

int i;

 

for (i=0; i<10; i++)

            {

                        printf(“%d . Ad………………:”,i+1);  scanf(“%s”,¬[i].ad);

                        printf(“Matematik 1. not……..:”);        scanf(“%d”,¬[i].matnot1);

                        printf(“Matematik 2. not……..:”);        scanf(“%d”,¬[i].matnot2);

printf(“Fizik 1. not…………...:”);        scanf(“%d”,¬[i].fiznot1);

printf(“Fizik 2. not…………...:”);        scanf(“%d”,¬[i].fiznot2);

 

not[i].matort = (not[i].matnot1 + not[i].matnot2 ) / 2;

not[i].fizort   = (not[i].fiznot1  + not[i].fiznot2   ) / 2;

not[i].genelort = (not[i].matnot1 + not[i].fiznot2) / 2;

            }

for(i=0; i<10; i++)

            {

                        printf(“\n Adı………….:%s\n”, not[i].ad);

 

                        if(not[i].genelort >=50)

 printf (“Öğrenci geçti....”) ;

                        else

                                     printf (“Öğrenci kaldı… ”);

            }



Bu makalenin yazar yada kaynağını bildirmek için tıklayınız.

Digg this Post! Add Post to del.icio.us Bookmark Post in Technorati Furl this Post!
Eklenme tarihi: 7-4-2008

Ekleyen:  bilgin aslan

Bu Makaleye Verilen Puan:    Makaleye verilen puanlar Makaleye verilen puanlar Makaleye verilen puanlar Makaleye verilen puanlar
Bu Makaleye Puan Ver  

Bölüm Başlık Kullanıcı Yorumları


Bu makaleye yorum gönderilmemiş, ilk yorumu sen gönder !

Yorum Ekle  

Bölüm Başlık İlgili Dökümanlar

Animasyon Görüntülü Ders - Yeni TuneUp turbo taktı! Yeni TuneUp turbo taktı!
Popüler Windows optimizasyon programının yeni sürümü TuneUp Utilities 2010 ekim ayından itibaren temin edilebilecek. Program bu sürümüyle beraber Windows 7'yi de resm...

Animasyon Görüntülü Ders - Çift grafik ve Turbo gücü! Çift grafik ve Turbo gücü!
Asus'un UL50VT-XO037V modeli overclock ile performansı yüzde 33'e kadar artan 15,6 inçlik bir notebook.Unlimited serisinden gelen notebook tek dolum ile...

Animasyon Görüntülü Ders - Turbo Internet hayal değilmiş Turbo Internet hayal değilmiş
Hepimiz herhangi bir dosya indirmek için GetRight, FlashGet gibi çok parçalı hızlandırıcılar kullanmışızdır. Ama bu gibi yazılımlar sadece dosya indirmekle sınırlı ka...

Reklam Netinternet
Gizlilik | Copyright © 2006-2009 ™ Tüm hakları saklıdır.
Powered by BilgiPortal v2.2
Frasb Etiler WebTasarım Web Tasarım