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:
1)Yataktan kalk,
2)Pijamalarını çıkar,
3)DuÅŸ al,
4)Giyin,
5)Kahvaltı yap,
6)İşe git.
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:
1)Yataktan kalk,
2)Pijamalarını çıkart,
3)Giyin,
4)DuÅŸ al,
5)Kahvaltı yap,
6)İşe git.
Bu durumda, genç idarecimiz işe sırılsıklam gidecek. Bir bilgisayar programında ifadelerin hangi sırada yürütüleceğini belirlemeye program kontrolü denir.
Sözde Kod
Sözde kod algoritma geliştirmenize yardımcı olan yapay ve gayri resmi bir dildir. Günlük dile benzer; gerçek bir bilgisayar programlama dili olmamasına rağmen uygun ve kullanıcı dostudur.
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.
Seçim ifadeleri, alternatif eylemler arasında seçim yapmak için kullanılır. Örneğin, bir sınavdaki geçme notunun 60 olduğunu düşünün:
Eğer öğrencinin notu 60'tan büyükse veya 60' a eşit ise
"Geçti" Yaz
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.
Yukarıdaki if ifadesi sözde kodu C'de:
if ( not >= 60 )
printf ( "Geçtiniz\n" );
gibi yazılabilir.
if...else Seçim İfadesi
if seçim ifadesi, yalnızca koşul doğru olduğu zaman işaret edilen eylemi yapar; diğer türlü eylem atlanarak geçilir. if...else seçim ifadesi koşul doğru olduğu zaman ve yanlış olduğu zaman yapılacak farklı eylemleri belirlemenize izin verir. Örneğin,
Eğer öğrencinin notu 60'tan büyük veya eşit ise
"Geçti" Yaz
DeÄŸilse
"Kaldı" Yaz
sözde kod ifadesi, öğrencinin notu 60'tan büyük veya eşit ise "Geçti" veya öğrencinin notu 60'tan küçükse "Kaldı" yazar. İki durumda da, yazma işlemi olduktan sonra, sıradaki sözde kod "icra edilir." Değilse 'nin gövdesinde de boşluk bırakılmamıştır.
Yukarıdaki if..else ifadesinin sözde kodu C'de:
if ( not >= 60 )
printf ( "Geçti" );
else
printf ( "Kaldı" );
Kümelenmiş if...else İfadeleri
if...else ifadeleri içinde if...else ifadeleri yerleştirerek çoklu durumlar için karşılaştırma yapar. Örneğin aşağıdaki sözde kod ifadesi, 90'dan büyük veya eşit olan sınav notları için A, 80'den büyük veya eşit ( fakat 90'dan küçük) notlar için B, 70'ten büyük veya eşit ( fakat 80'den küçük ) notlar için C, 60'tan büyük veya eşit (fakat 70'ten küçük ) notlar için D ve diğer tüm notlar için F yazılacaktır.
Eğer öğrencinin notu 90'dan büyük veya eşit ise
"A" Yaz
DeÄŸilse
Eğer öğrencinin notu 80'den büyük veya eşit ise
"B" Yaz
DeÄŸilse
Eğer öğrencinin notu 70'den büyük veya eşit ise
"C" Yaz
DeÄŸilse
Eğer öğrencinin notu 60'dan büyük veya eşit ise
"D" Yaz
DeÄŸilse
"F" Yaz
Bu sözde kod C'de:
if ( not >= 90 ){
printf("A\n");
} // if sonu
else{
if ( not >= 80 ){
printf("B\n");
} // if sonu
else {
if (not >= 70){
printf ("C\n");
} // if sonu
else {
if ( not >= 60 ){
printf ( "D\n" );
} // if sonu
else {
printf ("F\n" );
} // else sonu
} // else sonu
} // else sonu
} // else sonu
gibi yazılabilir. not değişkeni 90'dan büyük veya eşitse, dört koşulda olacaktır, ancak sadece ilk karşılaşmadan sonra printfifadesi yürütülecektir. Bu printfifadesi yürütüldükten sonra, "en dış"taki if...else ifadesinin else kısmı atlanarak geçilir.
Yukarıdaki if ifadesini;
if ( not >= 90 ) {
printf("A\n");
}
else if ( not >= 80 ){
printf("B\n");
}
else if (not >= 70){
printf ("C\n");
}
else if ( not >= 60 ){
printf ( "D\n" );
}
else{
printf ("F\n" );
}
şeklinde yazmayı tercih edebilirsiniz.
while Tekrarlama İfadesi
Bir tekrarlama ifadesi, koşullar doğru olduğu sürece tekrar edilecek bir eylem belirtmemize izin verir.
Alışveriş listemde daha alınacak olduğu sürece
Sonraki malzemeyi al ve listede üzerini çiz.
sözde kod ifadesi alışveriş boyunca meydana gelen tekrarı tanımlar. "Alışveriş listemde daha alınacak var" koşulu doğru veya yanlış olabilir. Doğru ise "Sonraki malzemeyi al ve listede üzerini çiz" eylemi gerçekleşir. Bu eylem, koşul doğru kaldığı sürece tekrarlı olarak gerçekleştirilir. while tekrarlama ifadesinin içerdiği ifade(ler) while 'ın gövdesini oluşturur.
En sonunda , koşul yanlış olacaktır. Bu noktada, tekrarlama sonlanır ve tekrarlama yapısından sonraki ilk sözde kod yürütülür.
C programlamada while döngüsünün syntax yapısı:
while(ÅŸart) {
iÅŸlemler(s);
}
while ifadesine örnek olarak, 100'den büyük ve 3'ün kuvveti olan ilk sayıyı bulmak için tasarlanmış bir program parçası düşünün. sonuc tam sayı değişkeninin başlangıçta 3 olduğunu farz edin. Aşağıdaki while tekrarlama ifadesinin çalışması bittiği zaman sonuc istenen cevabı içerecektir.
sonuc = 3;
while( sonuc <= 100 ) {
sonuc = 3 * sonuc ;
} // while sonu
Örnekler
1) Negatif bir sayıyı ekrana yazan program:
#include<stdio.h>intmain(){
int sayi;
printf("Sayi giriniz: ");
scanf("%d", &sayi);
if (sayi < 0) {
printf("Girdigin sayi: %d.\n", sayi);
}
}
Ekran çıktısı:
Sayi giriniz: -2
Girdigin sayi: -2.
2) Bir tam sayının tek mi çift mi olduğunu kontrol eden program:
#include<stdio.h>intmain(){
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:
def show_choice(self): self.message='You selected:\n' if self.cb_var1.get()==1: self.message=self.message+'1\n' if self.cb_var2.get()==1: self.message=self.message+'2\n' if self.cb_var3.get()==1: self.message=self.message+'3\n' tkinter.messagebox.showinfo('Selection', self.message)
my_gui=MyGUI()
Ekran Çıktısı:
Basit bir C Programı: Bir Satır Yazı Yazma
C, daha önce bilgisayar programlaması yapmamış insanlara garip gelebilecek bazı gösterimler kullanır. Basit bir C programı düşünerek başlayalım. İlk örneğimiz Console ekranına yazı yazar.
1 // C'de ilk program.
2 #include <stdio.h>
3
4 //main fonksiyonu çalışmaya başlar
5 int main( void )
6 {
7 printf("Welcome to C!\n");
8 } //main fonksiyonunun sonu
Ekran Çıktısı
Welcome to C!
Bu kodu satır satır inceleyelim: İlk satır // ile başlar ve // satırların açıklama olduğunu işaret eder. Program dosyasına açıklama ekleyerek, programın okunabilirliğini iyileştirmiş olursunuz. Açıklamalar program çalışırken dikkate alınmaz ve bilgisayarın herhangi bir işlem yapmasına neden olmaz. Açıklamalar C derleyicisi tarafından göz ardı edilir ve herhangi makine-dili nesne kodu üretmesine neden olmaz. Aynı zamanda /* ile başlayıp */ arasında olan satırlar da açıklamadır.
#include Önişlemci Değimi
2. satır:
#include <stdio.h>
C ön işlemcisine bir talimattır. # ile başlayan satırlar, program derlemeden önce ön işlemci tarafından işlenir. 2. satır ön işlemciye standart giriş/çıkış başlık (<stdio.h>) içeriğini programa eklemesini söyler. Derleme, printf (7. satır) gibi standart giriş/çıkış kütüphane fonksiyonlarını çağırdığı zaman, derleyici tarafından kullanılan bilgiler bu başlık ihtiva eder.
Boş Satırlar ve Boşluklar
3. satır sadece boş bir satırdır. Programı daha kolay okumak için boş satırlar, boşluk karakterleri ve sekme karakterleri kullanırsınız. Bu karakterlerin hepsi beyaz boşluk olarak bilinir. Beyaz boşluk karakterleri normalde derleyici tarafından göz ardı edilir.
main() Fonksiyonu
int main( void )
main fonksiyonu, her C programının bir parçasıdır. main'den sonraki parantez main'in fonksiyon olarak adlandırılan bir program yapı taşı olduğunu işaret eder. C programları, bir veya daha fazla fonksiyon içerir. Bu fonksiyonların içerisinden bir tanesi mutlaka main olmak zorundadır. Her C programı yürütülmeye main fonksiyonlarından başlar. Fonksiyonlar bilgi gönderebilir. main'in solundaki int anahtar kelimesi main'in bir tam sayı değer gönderdiğini işaret ederi. Buradaki parantez içerisindeki void main'in herhangi bir bilgi almadığı anlamına gelir.
Sol küme parantezi, { bir fonksiyonun gövdesini başlatır(6. satır). Karşılık gelen sağ küme parantezi bir fonksiyonu sonlandırır(8. satır). Bu parantezler çifti ve parantezler arasındaki program bir blok olarak isimlendirilir.
Bir Çıkış İfadesi
7. satır:
printf("Welcome to C!\n");
Bilgisayara ünlem işareti ile sonlanan bir karakter dizinini ekrana bastırmak için, yani bir eylem yapması için bilgisayara talimat verir. Bazen bir karakter dizini bazen bir karakter katarı , bazen mesaj veya bir söz olarak adlandırılır. printf fonksiyonu ("f" "biçimlendirilmesine"e karşılık gelir), parantez içerisindeki argümanı ve noktalı virgül(;) dahil tüm satıra ifade denir. Her ifade noktalı virgül (;) ile ( aı zamanda iade sonlandırıcı olarak bilinir) sonlanmak zorundadır. printf ifadesi yürütüldüğü zaman, ekrana Welcome to C! mesajı yazılır. Karakterler normalde printf ifadesindeki çift tırnaklar arasında tam olarak göründükleri gibi basılır.
Kaçış Dizileri
\n karakterinin ekrana basılmadığını fark etmişsinizdir. Ters bölü(\) kaçış karakterleri olarak adlandırılırlar. printf'in sıra dışı bazı şeyler yapacağını belirtir. Bir karakter dizisinde ters bölü ile karşılaşıldığında , derleyici devam ederek sonraki karaktere bakar ve ters bölü ile birleştirerek bir kaçış dizisi haline gelir. \n kaçış dizisi yeni satır anlamındadır. printf karakter katarın da yeni satır varsa, yeni satır imlecin ekranda sonraki satır başına konumlanmasına neden olur.
Kaçış dizisiTanım
\n Yeni satır. İmleci sonraki satır başına konumlandırır.
\t Yatay sekme. İmleci sonraki sekme noktasına kaydırır.
\a Uyarı. İmlecin o andaki konumunu değiştirmeden bir ses veya görüntülenebilir bir uyarı üretir.
\\ Ters bölü. Dizi içerisinde ters bölü karakterini yerleştirir.
\" Çift tırnak. Dizi içine çift tırnak karakteri yerleştirir.
Çoklu printf 'ler Kullanma
1
2 #include <stdio.h>
3
4 //main fonksiyonu çalışmaya başlar
5 int main( void )
6 {
7 printf("Welcome ");
8 printf("to C!\n");
9 } //main fonksiyonunun sonu
Ekran Çıktısı
Welcome to C!
---------------
1
2 #include <stdio.h>
3
4 //main fonksiyonu çalışmaya başlar
5 int main( void )
6 {
7 printf("Welcome\nto\nC!\n");
8
9 } //main fonksiyonunun sonu
Ekran Çıktısı
Welcome
to
C!
Bir Başka Basit C Programı: İki Tam Sayıyı Toplama
1
2 //Toplama programı
3 #include <stdio.h>
4
5 int main( void ) //main fonksiyonu çalışmaya başlar
6 {
7 int tamsayi1; // kullanıcı tarafından girilecek ilk sayı
8 int tamsayi2; // kullanıcı tarafından girilecek ikici sayı
9 int toplam; //toplamın saklanacağı değişken
10
11 printf ( "Ilk tam sayiyi giriniz\n" ); // istem
12 scanf ( "%d",&tasayi1); //bir tam sayı oku
13 printf ( "Ikinci tam sayiyi giriniz\n" ); // istem
14 scanf ( "%d",&tamsayi2); // bir tam sayı oku
15 toplam = tamsayi1+tamsayi2; // sayıların toplamını toplama aktar
16 printf ( "Toplam = %d\n",toplam );// toplamı yaz
17
18 } //main fonksiyonunun sonu
Ekran Çıktısı
Ilk tamsayiyi giriniz
45
Ikinci tamsayiyi giriniz
72
Toplam = 117
2. satırdaki açıklamalar programın amacını ifade eder. Daha önce de dediğimiz gibi her program main ile çalışmaya başlar. Sol küme parantezi { (6. satır) main'in gövdesinin başladığını gösterir ve karşılığı olan sağ küme parantezi } (18. satır) main'in sonunu gösterir.
Değişken ve Değişken Tanımlamaları
7-9 satırlar tanımlamadır.
int tamsayi1;
int tamsayi2;
int toplam;
tamsayi1, tamsayi2 ve toplam değişkenlerin isimleridir - bir programın kullanımı için değerlerin saklandığı hafızadaki yerlerdir. Bu tanımlamalar, tamsayi1, tamsayi2 ve toplam değişkenlerinin, tam sayı değer alacağı anlamına gelen int türü olduklarını belirtir.
Bir programda kullanılmadan önce tüm değişkenler bir isim ve bir veri türü ile tanımlanmak zorundadır.
İstem Mesajları
11. satır:
printf ( "Ilk tam sayiyi giriniz\n" ); // istem
"Ilk tam sayiyi giriniz " karakter dizinini gösterir ve imleci sonraki satır başına konumlandırır. Kullanıcıya belirli bir eylem yapmasını söylediği için bu mesaja istem denir.
scanf Fonksiyonu ve Biçimlendirilmiş Girişler
12. satır:
scanf ( "%d",&tamsayi1); //bir tam sayı oku
Kullanıcıdan veri almak için scanf kullanılır ("f" "biçimlendirilmiş" e karşılık gelir). Fonksiyon genede standart giriş birimi olan klavyeden okur. Burada scanf'in "%d" ve &tamsayi1 şeklinde iki argümanı vardır. Birincisi biçim kontrol katarı, kullanıcı tarafından girilecek veri türünü belirler. %d çevrim belirteci verinin tam sayı olması gerektiğini belirtir ( d harfi "onluk tabanda tam sayı" ya karşılık gelir). Buradaki %'ye scanf tarafından bir çevrim belirteci başlatan özel bir karakter olarak işlem görür. scanf'in ikinci argümanı değişken isminin önündeki "ve işareti"(&) ile başlar - adres işlemi denir. Değişken ismi ile birlikte &, tamsayi2 değişkeninin saklandığı hafızadaki yerini(veya adresini) scanf 'e bildirir. Sonra bilgisayar kullanıcısı tamsayi1 için girdiği değeri burada saklar.
Bilgisayar yukarıdaki scanf 'i çalıştırdığı zaman, kullanıcıdan tamsayi1 değişkenine bir değer girmesi için bekler. Kullanıcı bir tam sayı yazar, sonra da sayıyı bilgisayara göndermek için Enter tuşuna basarak karşılık verir. Bilgisayar daha sonra bu sayıyı veya değeri, tamsayi1 değişkenine aktarır. Bu programda bundan sonra tamsayi1 değişkeninin geçtiği her yerde aynı değer kullanılacaktır. printf ve scanf fonksiyonları kullanıcı ve bilgisayar arasındaki etkileşimi kolaylaştırır. Bu etkileşim karşılıklı konuşmayı andırdığı için buna etkili hesaplama denir.
13. satır:
printf ( "Ikinci tam sayiyi giriniz\n" ); // istem
Ekranda Ikinci tam sayiyi giriniz mesajını gönderir, sonra imleci sonraki satır başına konumlandırır. Bu printf aynı zamanda kullanıcının eylem yapmasına sebep olur.
14. satır:
scanf ( "%d",&tamsayi2); // bir tamsayı oku
Kullanıcıdan tamsayi2 değişkeni için bir değer alır.
Atama İfadeleri
15. satırdaki atama ifadesi:
toplam = tamsayi1+tamsayi2; // sayıların toplamını toplama aktar
tamsayi1 ve tamsayi2 değişkenlerinin toplamını hesaplar ve atama işlemi = kullanarak sonucu toplam değişkenine aktarır. İfade "toplam alır tamsayi1 + tamsayi2 ' nin değeri" şeklinde okunur. Çoğu hesaplama atama işlemlerinde icra edilir.
Biçim Kontrol Karakter Katarı ile Yazma
16. satır:
printf ( "Toplam = %d\n",toplam );// toplamı yaz
Toplam = karakter dizinini takip eden toplam değişkeninin sayısal değerini ekrana yazmak için printf fonksiyonunu çağırır. Bu printf 'in "Toplam = %d\n" ve toplam olmak üzere iki argümanı vardır. İlk argüman biçim kontrol karakteri katarıdır. Gösterilecek bazı sözel karakterleri ve bir tam sayı yazılacağını belirten %d çevrim belirteci içerir.
C 'de Aritmetik İşlemleri
C işlemi Aritmetik İşlemCebir İfadeC İfadesi
Toplama + f + 7 f + 7
Çıkarma - p - c p - c
Çarpma *bm b * m
Bölme / x / y x / y
Kalan % r mod s r % s
C 'de Eşitlik ve İlişkisel İşlemler
Cebirsel eşitlik C eşitlik veya C koşul örneği C koşul anlamı
veya iliÅŸkisel iÅŸlem iliÅŸkisel iÅŸlem
= == x == y x, y 'ye eÅŸittir
!=!=x != y x, y 'ye eÅŸit deÄŸildir.
> > x > y x, y 'den büyüktür.
< < x < y x, y 'den küçüktür.
>=>=x >= y x, y 'den büyük veya eşittir.
<=<=x <= y x, y 'den küçük veya eşittir.
Kısa Yollar:
Aşağıdaki linkler ile C programlama ile ilgili olan diğer bölümlere ulaşabilirsiniz:
Bu çalışmada, arduino da nextion ekran kullanarak hesap makinesi yapacağız. Nextion Editor kullanarak arayüzümüzü tasarlayacağız. Ben bu uyg...
Bu çalışmada raspberry pi üzerindeki cpu'nun sıcaklık değerini okuyacağız. Bu okuduğumuz sıcaklık değerini TCP ile oluşturacağımız serve...
Arduino da nextion ekranı kullanarak led yakma ve led söndürme uygulaması gerçekleştireceğiz. Nextion ekran kullanacağımız için Nextion Edit...