İşaretsiz (unsigned) Tam Sayıyı Bit olarak Yazdırma
#include <stdio.h>
void displayBits(unsigned int value);
int main(){
unsigned int x;
printf("%s","Enter a nonnegative int: ");
scanf("%u",&x);
displayBits(x);
}
void displayBits(unsigned int value){
unsigned int c; // sayıcı
//displayMask'ı tanımlama ve 31 biti solo kaydırma
unsigned int displayMask = 1 << 31;
printf("%10u = ",value);
for(c=1;c<=32;++c){
putchar(value & displayMask ? '1' : '0');
value <<=1; // 1 ile değeri sola kaydırma
if(c % 8 == 0) { // 8 bitten sonraki yerin çıkışı
putchar(' ');
}
}
putchar('\n');
}
putchar(value & displayMask ? '1' : '0');
Bitsel AND Operatörü (&)
12 = 00001100 (In Binary) 25 = 00011001 (In Binary) Bit Operation of 12 and 25 00001100 & 00011001 ________ 00001000 = 8 (In decimal)
#include <stdio.h>
int main() {
int a = 12, b = 25;
printf("Output = %d", a&b);
return 0;
}
Output = 8
Bitsel OR Operatörü (|)
12 = 00001100 (In Binary) 25 = 00011001 (In Binary) Bitwise OR Operation of 12 and 25 00001100 | 00011001 ________ 00011101 = 29 (In decimal)
#include <stdio.h>
int main() {
int a = 12, b = 25;
printf("Output = %d", a|b);
return 0;
}
Output = 29
Bitsel XOR (exclusive OR) Operatörü (^)
12 = 00001100 (In Binary) 25 = 00011001 (In Binary) Bitwise XOR Operation of 12 and 25 00001100 ^ 00011001 ________ 00010101 = 21 (In decimal)
#include <stdio.h>
int main() {
int a = 12, b = 25;
printf("Output = %d", a^b);
return 0;
}
Output = 21
Shift Operatörleri
Rigth Shift Operatörü(>>)
212 = 11010100 (In binary) 212>>2 = 00110101 (In binary) [Right shift by two bits] 212>>7 = 00000001 (In binary) 212>>8 = 00000000 212>>0 = 11010100 (No Shift)
Left Shift Opetatörü(<<)
212 = 11010100 (In binary) 212<<1 = 110101000 (In binary) [Left shift by one bit] 212<<0 = 11010100 (Shift by 0) 212<<4 = 110101000000 (In binary) =3392(In decimal)
#include <stdio.h>
int main() {
int num=212, i;
for (i=0; i<=2; ++i) {
printf("Right shift by %d: %d\n", i, num>>I);
}
printf("\n");
for (i=0; i<=2; ++i) {
printf("Left shift by %d: %d\n", i, num<<i);
}
return 0;
}
Right Shift by 0: 212 Right Shift by 1: 106 Right Shift by 2: 53 Left Shift by 0: 212 Left Shift by 1: 424 Left Shift by 2: 848
Yapı (Struct) Nedir ?
Yapıların Bildirimi
Yapı Değişkenlerinin Tanımlanması
Yapı Değişkenlerine İlk Değerin Verilmesi
Yapı Üyelerine Erişim
#include <stdio.h>
struct card {
char *face;
char *suit;
};
int main( )
{
struct card aCard;
struct card *cardPtr;
aCard.face = "Ace";
aCard.suit = "Spades";
cardPtr = &aCard;
printf( "%s%s%s\n%s%s%s\n%s%s%s\n", aCard.face," of ", aCard.suit,
cardPtr->face," of ",cardPtr->suit,
(*cardPtr).face," of ",(*cardPtr).suit);
return 0;
}
İç İçe Yapılar
Yapıların Fonksiyonlara Parametre Olarak Geçirilmesi
#include <stdio.h>
struct date{
int day,month,year;
};
void dispDate(struct date x){
printf("Year: %d\n",x.year);
printf("Month: %d\n",x.month);
printf("Dat: %d\n",x.day);
}
int main() {
// Write C code here
struct date n;
n.day = 4;
n.month = 5;
n.year = 1995;
dispDate(n);
}
Gösterici Değişkenlerini Bildirmek
Gösterici Operatörleri
Fonksiyonları Referansa Göre Çağırmak
Göstericilerin Artırılması ve Eksiltilmesi
Göstericiler ve Diziler Arasındaki İlişki
Algoritma
Bir sorunu çözmek veya belirlenmiş bir amaca ulaşmak için tasarlanan yola, takip edilen işlem basamaklarına algoritma denir.
Algoritmalar açıkça belirtilmiş bir başlangıcı ve sonu olan işlemler kümesidir. Amaca ulaşmak için işlenecek çözüm yolları ve sıralamaları belirlenir ve algoritma bu sırayı takip ederek en mantıklı çözüme ulaşır.
Yataktan kalkıp işe gitmek için genç bir idareci tarafından takip edilen "kalk ve ışılda algoritması"nı düşünün:
Bu akış, genç idareciyi kritik kararlar vermeye iyi bir şekilde hazırlar. Aynı adımları biraz farklı sırada yapıldığını düşünün:
Sözde Kod
Bu kodları bilgisayarda çalıştıramayız. Aksine, bir programını C gibi bir bilgisayar programlama dilinde yazmaya teşebbüs etmeden önce sadece programı "planlama"nıza yardımcı olur. Yukarıda örnek olarak bahsettiğimiz "kalk ve ışılda algoritması" sözde koda örnek olarak verilebilir.
Başka bir örnek daha vermek istersek:
2)İkinci sayıyı oku;
3)Üçüncü sayıyı oku;
4)İlk iki sayıdan büyük olanı bul;
5)Büyük sayıyı sonuç isimli değişkene ata;
6)Eğer sonuç değişkeni üçüncü sayıdan büyük ise sonuç değerini yazdır;
7)Değilse
8)Üçüncü sayıyı yazdır;
if Seçim İfadesi
sözde kod ifadesi "öğrencinin notunun 60'tan büyük veya eşit" koşulunun doğru olup olmadığını karşılaştırır. Koşul doğru ise "Geçti" yazılır ve sıradaki sözde kod ifadesi "icra edilir". Koşul yanlış ise, yazma işlemi göz ardı edilir ve sonraki sözde kod icra edilir.
if...else Seçim İfadesi
Kümelenmiş if...else İfadeleri
while Tekrarlama İfadesi
while(şart) { işlemler(s); }
Örnekler
#include <stdio.h>
int main() {
int sayi;
printf("Sayi giriniz: ");
scanf("%d", &sayi);
if (sayi < 0) {
printf("Girdigin sayi: %d.\n", sayi);
}
}
Sayi giriniz: -2 Girdigin sayi: -2.
#include <stdio.h>
int main() {
int sayi;
printf("Bir tam sayi giriniz: ");
scanf("%d", &sayi);
if (sayi%2 == 0) {
printf("%d sayisi çift sayidir.",sayi);
}
else {
printf("%d sayisi tek sayidir.",sayi);
}
}
Ekran çıktısı:
Bir tam sayi giriniz: 7 7 sayisi tek sayidir.
3) Girilen iki tam sayı büyüklük olarak karşılaştıran program:
#include <stdio.h>
int main() {
int sayi1, sayi2;
printf("Iki tam sayi giriniz: ");
scanf("%d %d", &sayi1, &sayi2);
if(sayi1 ==sayi2) {
printf("Sonuc: %d = %d",sayi1,sayi2);
}
else if (sayi1 > sayi2) {
printf("Sonuc: %d > %d", sayi1,sayi2);
}
else {
printf("Sonuc: %d < %d",sayi1, sayi2);
}
}
Ekran çıktısı:
Iki sayi giriniz: 12 23 Sonuc: 12 < 23
4) 1'den 5'e kadar olan sayıları ekrana yazan program:
#include <stdio.h>
int main()
{
int sayi = 1;
while (sayi <= 5)
{
printf("%d\n", sai);
++i;
}
}
Ekran çıktısı:
1 2 3 4 5