C

C’de 10 Tabanından 2’lik Tabana Çevirme

Karşınızda fonksiyon, mod, while ve for döngüsü kullanarak C dilinde 10’luk tabandan 2’lik tabana geçiş programı.  Güle güle çevirin.

#include<stdio.h>
#include<conio.h>

int ikilik(int x)
 {
 int i,k[20];
 i=0;
 while(x>=1)
 {
 i++;
 k[i]=x%2;
 x=x/2;
 }

printf("\nIkilik tabandaki sayi karsiligi:");
 for(i=i;i>0;i--)
 printf("%d",k[i]);
 }

int main()
 {
 int a;
 printf("Bir sayi giriniz:");
 scanf("%d",&a);
 ikilik(a);

getch();
 return (0);
 }
C

C’de Dosyalama

Arkadaşlar C’de dosyalamanın C++’tan oldukça farklı olduğundan bahsetmiştim şimdi gelin nasıl olduğuna bir bakalım. Ayrıca dosya fonksiyonlarını da sizinle paylaşmak isterim ve tabii ki mod ile açılacak dosyaların ne amaçla açıldığını.

          r    (read only) yalnızca okuma için açar. 
          w    (write only) yalnızca yazma için açar.
          a    (append) ekleme yapmak için açar.
          r+   Okuma/yazma için açar.
          w+   Okuma/yazma için açar.
          a+   Okuma/yazma için açar.

Dosya Fonksiyonları

  Fonksiyon      Görevi
  fopen()       Dosya oluşturur, açar
  fclose()      Dosyayı kapatır
  putc()        Dosyaya karakter yazar
  getc()        Dosyadan karakter okur
  feof()        Dosya sonuna gelindiğini sorgular
  fprintf()     Dosyaya formatlı veri yazar
  fscanf()      Dosyadan formatlı veri okur
  fputs()       Dosyaya katar yazar
  fgets()       Dosyadan katar okur
  fwrite()      Dosyaya dizi yazar
  fread()       Dosyadan dizi okur
#include <stdio.h>
#include<stdlib.h>

int main()
{
 char str[50];
 FILE *f;
 
 f=fopen("hello.txt","w"); //dosyayı açıp içine yazıyor
 if(f==NULL)
 printf("File did not open");
 
 else
 printf("Everything was alright\n\n");
 fputs("HELLO\n",f);
 fprintf(f,"It is my first experience!");
 fclose(f);
 
 
 f=fopen("hello.txt","r"); //kelime kelime yazdırıyor
 while(!feof(f))
 {
 printf("%s \n",str);
 fscanf(f,"%s",str);
 }
 fclose(f);
 
 // while(fgets(str,sizeof str,f)!=NULL) Dosya bitinceye kadar bu işlemi yapıyor
 
 f=fopen("hello.txt","w");
 fseek(f,9,SEEK_SET); //fseek 9 byte imleci hareket ettirmek bişiler eklemek için
 fputs("New",f); //fputs("....",f);
 
 fclose(f);
 system("PAUSE");
}
C

C Dilinde Katarlar

C ile de size katarları göstermek istiyorum. Tahmin ettiğiniz gibi biraz farklı tam sayıları (integer) printf()’te nasıl %d ile gösteriyorsak; floatı %f, karakteri de %s ile gösteriyoruz. Burada gördüğünüz (sırasıyla) %s=Melis,  %d=62, %f=1.70’i ifade eder. Burada %s ile ifade edilen kelimeler birer katardır.

#include <stdio.h>
#include <conio.h>
int main()
{
 int i;
 char ad[][12]={"Melis","Gökhan","Can"};
 int kilo[]={62,70,65};
 float boy[] ={1.70,1.85,1.68};
 puts("\nISIM \tKILO \tBOY");
 for(i=0;i<3;i++)
 printf("%s\t%d\t%f\n",ad[i],kilo[i],boy[i]);
}
C · C++

C ile C++ Arasındaki Farklar

  • C fonksiyon tabanlı yapısal bir programlama dilidir, C++ ise OOP (Nesne Yönelimli) bir programlama dilidir.
  • C++, C’ nin bir üst düzeyi olarak düşünülebilir.
  • C düşük seviyeli sistemler için yazılabildiği gibi yüksek sistemlilerde de kullanılabilir. Makine diline daha yakındır.
  • C++ daha kolay ve hızlıdır.
  • C, en popüler yapısal programlama dilidir.
  • C++, en popüler nesne temelli programlama dilidir.

C

C Dilinde Matrisler

Geldik çok boyutlu diziler olan matrislere.

Öncelikle dizi, belirli sayıdaki değişkeni bir sıra içinde tutmak için kullanılır. Diziler, tek boyutlu ve çok boyutlu olabilir. Örneğin; matrisler, iki boyutlu dizilerdir. Satır ve sütun olmak üzere iki boyuttan oluşurlar.

Aşağıdaki örnekte matrisin kaça kaçlık bir matris olduğu ve elemanları kullanıcı tarafından girilecektir.

#include<stdio.h>
#include<conio.h>
 int main()
{
  int melis[50][50];
  int i,j,satir,sutun;

  printf("Satir sayisini giriniz:"); 
  scanf("%d",&satir);
  printf("Sutun sayisini giriniz:");
  scanf("%d",&sutun);

  printf("\nDizinin degerlerini giriniz:\n");
  for(i=0;i<satir;i++)
  {
   for(j=0;j<sutun;j++)
   {
    printf("\nmelis[%d][%d] icin deger: ",i,j);
    scanf("%d",&melis[i][j]); 
   }
  } 
    printf("\ndizi %d Satir ve %d Sutundan olusan=melis[%d][%d] cok boyutlu dizi:\n",satir,sutun,i,j);
    for(i=0;i<satir;i++)
  {
    for(j=0;j<sutun;j++)
   {
   printf("%2d",melis[i][j]); 
   } 
    printf("\n\n"); 
  }
   getch(); 
}
C

C Dilinde Gelin ‘H’ Harfi Yapalım!

♣For’ları öğrendiğimize göre bunu yapmak oldukça basit olmalı:

#include <stdio.h>
int main()
{
 int i,j;
 for(i=0;i<=0;i++)
 {
   for(j=0;j<=3;j++)
   printf("*\t*\n");
   printf("---------\n");
 
   for(int a=0;a<=0;a++)
  {
    for(int b=0;b<=3;b++)
    printf("*\t*\n");
  }
 }
}
C

C Dilinde Sayıları Büyükten Küçüğe Sıralama

Scanf’ten bahsetmemişiz bahsedelim hemen. Scanf fonksiyonunun prototip bildirimi de printf fonksiyonu gibi stdio.h başlık dosyasında yer alır. Yazdığımız programda karşı taraftan veri almak istediğimizde adreslerle iş yapan sevgili ‘scanf’i kullanırız.

Puts() ise scanf() gibi bizden bilgiyi alır. Aslında ‘puts’ un asıl görevi, ileride göreceğimiz katarları alıp, atamak için kullanmaktır. Şöyle ki; sevgili scanf() bizden şu cümleyi almak için yetersizdir: “Programlamayı ögrenmek istiyorum”. Çünkü boşluk gördüğü anda, veriyi almayı keser ve sadece “Programlamayı” kelimesinin atamasını yapar. Boşluk içeren böyle cümleler için puts( ) ve gets( ) fonksiyonları kullanılır.

Bu bilgiler ışığında şimdi gelin programa bakalım. Burada görüldüğü gibi bir sayı dizimiz var x[5]; i ve j ise if yardımıyla 2 sayı arasında kıyaslama yapmak için kullanılacak. ‘Gec’ değişkeni kıyaslama için verilen gecici bir değer. Şimdi gelin sıralamaya başlayalım:

#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
 main()
 {
   int x[5],i,j,gec; puts("5 tane sayi gir:");
   for(i=0;i<5;i++)
  {
    printf("%d Sayi: ",i);
    scanf("%d",&x[i]);
  }

   for(i=0;i<4;i++)
  {
   for(j=i+1;j<5;j++)
   {
     if( x[j]<x[i] )
    {
      gec = x[i];
      x[i] = x[j];
      x[j] = gec;
    }
   }
  }
   for(i=0;i<5;i++)
   printf("\n %d",x[i]);
   getch();
 }
C

C Dilinde Mod Alarak 1’den 20’ye kadar Tek Sayıları Yazdırma (Continue ile)

C dilinde mod almak istersek bunu nasıl yaparız? Tek sayıları nasıl yazarız?

Aşağıda gördüğünüz gibi ‘i’ değişkenini integer tipinde ‘for’un içinde tanımlayabiliyoruz.

Şimdi gelelim nasıl çalıştığına:

‘i’ nin 2’ye göre modu 0 ise (yani bir sayı 2’ye bölündüğünde kalan 0’sa) bu bir çift sayıdır. Bu durumda ekrana yazdırılmaması için döngü bir sonraki adıma geçip ekrana tek sayıları basar. (‘continue‘ ile bu sağlanır.)

#include <stdio.h>
#include <conio.h>  // getch() fonksiyonun kütüphanesi. Bu fonksiyon programın durmasını sağlar.

int main()
{
 for(int i=0; i<20; i++)
 {
   if(i%2 == 0) continue;
   printf("%d \n",i);
 }
   getch();
}
C

C Dilinde 1’den 40’a Sayıları yazdır ama 18 ile 28 arasındakiler olmasın!

Evet geldik şimdi başka bir örneğe. Başlıktan da gördüğünüz gibi şimdi 1’den 40’a kadar olan rakamları yazdıracağız. Ancak 18 ile 28 arasındaki sayılar olmayacak. Gördüğünüz gibi bunun için continue diye bir komut kullandık. Gövdenin içindeki continue komutu döngüyü devam ettirmek için kullanılır. Nasıl kullanıldığını görmeniz için burada kullandım yani bunu illa burada kullanmak gibi bir zorunluluğunuz yok.

#include <stdio.h>

int main()
{
 int x;
 for(x=1;x<=40;x++)
 {
  if(x>18 && x<28)
  continue;
  printf("%d \n",x);
 }
}
C

C Dilinde For Döngüsü ile Yıldızlarla Üçgen Yapımı

For Döngüsü, döngünün (loop) kontrol degişkenine başlangıç değerinin atanması ile başlar. Daha sonra koşulumuzu yazar, son olarak kaçar arttırmak (veya azaltmak) istiyorsak onu yazarız.

Sol tarafta gördüğünüz i++ demek i=i+1 demektir yani sayıyı 1 arttırır ve ekrana normal üçgen basar. Sağ tarafta gördüğünüz ise ters üçgendir. Orada da üçgeni tersten elde etmek için i- – diyerek birer azaltıyoruz.  Bunu yapmak için de iç içe for kullanıyoruz.

#include <stdio.h>          #include <stdio.h>
int main()                  int main()
{                            {
 int i,j;                      int i,j;
 int sayi=5;                   int sayi=0;
 for(i=0;i<=sayi;i++)          for(i=10;i>=sayi;i--)
 {                              {
  for(j=0;j<=i;j++)               for(j=0;j<=i;j++)
  printf("*");                    printf("*");
  printf("\n");                   printf("\n");
 }                              }
}                             }