Unsigned Char Veri Tipi

Benzer belgeler
Karar yapıları, (if else, switch)

Karar yapıları, (if else,

Akış Şeması (Flowchart) nedir? C Programlamaya giriş için yol haritası

Algoritma ve Akış Şemaları

C++ Dilinde Bazı Temel Algoritmalar

Diziler (Arrays) Çok Boyutlu Diziler

Unsigned Char Veri Tipi

Unsigned Char Veri Tipi

PROGRAMLAMAYA GİRİŞ DERS 2

C de Detaylı Üs Alma Programı

Genel Programlama II

Algoritmalar ve Programlama. Algoritma

C Programlama Dilininin Basit Yapıları

Algoritmanın Hazırlanması

Döngü yapıları, (for, do while, while),

HÜPP PYTHON I.HAFTA ALGORİTMA MANTIĞI, AKIŞ DİYAGRAMLARI VE PYTHON'A GİRİŞ

Algoritma ve Programlama: Karar Yapıları ve Döngüler

MAK 1005 Bilgisayar Programlamaya Giriş C DİLİNE GİRİŞ. Prof. Dr. Necmettin Kaya

C PROGRAMLAMA DİLİNE GİRİŞ

BASİT C PROGRAMLARI Öğr.Gör.Dr. Mahmut YALÇIN

BİLGİSAYAR PROGRAMLAMA. Algoritma ve Akış Şemaları

BÖLÜM 6: KARŞILAŞTIRMALI KONTROL YAPILARI

BİLGİSAYAR TEMELLERİ VE PROGRAMLAMAYA GİRİŞ

BMT 101 Algoritma ve Programlama I 3. Hafta. Yük. Müh. Köksal GÜNDOĞDU 1

Bil101 Bilgisayar Yazılımı I. M. Erdem ÇORAPÇIOĞLU Bilgisayar Yüksek Mühendisi

BİLİŞİM TEKNOLOJİLERİ 6. SINIF DERS NOTLARI 2

Uzaktan Eğitim Uygulama ve Araştırma Merkezi

ALGORİTMA VE PROGRAMLAMA I

if (ad == "Sabri") Console.WriteLine("Merhaba Sabri. Ne zamandır gözükmüyodun...");

Bölüm 2 - C ile Programlamaya Giriş

ALGORİTMALAR. Turbo C Bilgisayarda Problem Çözme Adımları. Bilgisayarda Problem Çözme Adımları.

Uzaktan Eğitim Uygulama ve Araştırma Merkezi

Çoktan Seçmeli Değerlendirme Soruları Akış Şemaları İle Algoritma Geliştirme Örnekleri Giriş 39 1.Gündelik Hayattan Algoritma Örnekleri 39 2.Say


PROGRAMLAMAYA GİRİŞ DERS NOTLARI

Bilgisayar Programlama. 1.Hafta

BLM-111 PROGRAMLAMA DİLLERİ I. Ders-7 C Programlama Diline Giriş

Algoritma ve Programlamaya Giriş

C dilinde if-else yapısı

C Dersleri Bölüm 3 : Program akışı

/ C Bilgisayar Programlama Yıliçi Sınavı Test Soruları. Adı soyadı :... Öğrenci no :... İmza :... Tarih, Süre : , 60 dak.

ÖRNEK 1: Verilen iki sayının toplamının bulunmasının algoritması aşağıdaki gibi yazılır:

BBS515 Nesneye Yönelik Programlama. Ders 3 Zümra Kavafoğlu

Kodlanacak programlama dilinin kaynaklarından faydalanılarak kod yazımı yapılır.

EM205 26/9/2014. Programlamaya giriş Algoritmalar. Amaçlar

Genel Programlama II

C#(Sharp) Programlama Dili

ESM-361 Mikroişlemciler. 3. Hafta Ders Öğretim Üyesi Dr.Öğr.Üyesi Ayşe DEMİRHAN

BLM-111 PROGRAMLAMA DİLLERİ I. Ders-8 Değişken Tipleri ve Temel Giriş/Çıkış İşlemleri

MTK467 Nesneye Yönelik Programlama. Hafta 4 - Döngüler Zümra Kavafoğlu

BİLGİSAYAR MÜHENDİSLİĞİ ALGORİTMA VE PROGRAMLAMA II 2.HAFTA SWİTCH (CASE), SAYAÇLAR, DÖNGÜLER,

GÖRSEL PROGRALAMA HAFTA 3 ALGORİTMA VE AKIŞ DİYAGRAMLARI

ALGORİTMA TASARIMI VE SCRATCH UYGULAMASI

PROGRAMLAMA DİLLERİ I

Nesne Yönelimli Programlama

Örnek bir Algoritma. Örneğimiz bir insanın evden çıkıp işe giderken izleyeceği yolu ve işyerine girişinde ilk yapacaklarını tanımlamaktadır.

Program Akış Kontrol Yapıları

Kodlanacak programlama dilinin kaynaklarından faydalanılarak kod yazımı yapılır.

2 ALGORİTMA VE AKIŞ DİYAGRAMLARI

BMT 101 Algoritma ve Programlama I 6. Hafta. Yük. Müh. Köksal Gündoğdu 1

AKIŞ ŞEMASI AKIŞ ŞEMASI AKIŞ ŞEMASI ŞEKİLLERİ GİRİŞ

Değişken nedir? Tanımı nasıl yapılır?

C Konsol Giriş Çıkış Fonksiyonları

NESNE YÖNELİMLİ PROGRAMLAMA HAFTA # 2

B02.6 Karar Verme, Eşitlik ve Bağıntı Operatörleri

C Programlama Dilinde Değişkenler

BÖLÜM 3: AKIŞ DİYAGRAMLARI

İstanbul Teknik Üniversitesi IEEE Öğrenci Kolu

BİLGİSAYAR PROGRAMLAMA MATLAB

Temel Bilgisayar Programlama

Özyineleme (Recursion)

Hafta 7 C Programlama Diline Giriş ve C Derleyicisi

GENEL GĐRĐŞ-ÇIKIŞ FONKSĐYONLARI. ENF102 Jeoloji 1. #include <stdio.h> printf Fonksiyonu ÖRNEK. printf

Algoritma ve Akış Diyagramları

BMÜ-111 ALGORİTMA VE PROGRAMLAMA AKIŞ KONTROLÜ YRD. DOÇ. DR. İLHAN AYDIN

C PROGRAMLAMA YRD.DOÇ.DR. BUKET DOĞAN PROGRAM - ALGORİTMA AKIŞ ŞEMASI

Akış Kontrol Mekanizmaları

Diziler (Arrays) Çok Boyutlu Diziler

BMT 101 Algoritma ve Programlama I 2. Hafta. Yük. Müh. Köksal GÜNDOĞDU 1

EBG101 PROGRAMLAMA TEMELLERİ VE ALGORİTMA

BLG 1306 Temel Bilgisayar Programlama

Program AkıĢ Kontrol Yapıları

YAPILAR BİRLİKLER SAYMA SABİTLERİ/KÜMELERİ. 3. Hafta

Uzaktan Eğitim Uygulama ve Araştırma Merkezi

TEMEL BİLGİSAYAR BİLİMLERİ. Programcılık, problem çözme ve algoritma oluşturma

C# Yazım Kuralları ERCİYES. Ü. BİLGİSAYAR M. COMPUTER PROGRAMMING II 1 FEHİM KÖYLÜ

İçerik. Java da İşleçler, İşleçler. Aritmetik İşleçler - 1. Aritmetik İşleçler - 2. Geçen ders: Bu ders: BS-515 Nesneye Yönelik Programlama

BLM 111 Algoritma ve Programlama I Güz 2018

C Programlama printf() Fonksiyonu

BIL1202 ALGORİTMA VE PROGRAMLAMAYA GİRİŞ (Algoritma Geliştirmek, Satır Kod)

BMT 101 Algoritma ve Programlama I 7. Hafta. Yük. Müh. Köksal Gündoğdu 1

KONTROL YAPILARI JAVADA UC TURLU KONTROL YAPISI VARDIR BUNLAR İF ELSE İF ELSE İF SWİTCH YAPILARIDIR. IF ELSE YAPISI if (deger) { }else {

C de Detaylı Üs Alma Programı. C# Dilinde Metot Tanımlama ve Yazdırma

Java da İşleçler, Ders #3 (4 Kasım 2009)

PROGRAMLAMAYA GİRİŞ VE ALGORİTMA «YTÜROK» EĞİTMEN:REHA ÖZGÜR ŞİMŞEK

Temel Giriş/Çıkış Fonksiyonları

3/3/2011. ENF-102 Jeoloji 1. Akış Diyagramı. Akış Diyagramı Şekilleri

Giriş. ENF102 Jeoloji

Transkript:

Unsigned Char Veri Tipi RAM bellekte 8 bit yani 1 byte yer kaplar.eğer 8 bitin hepsi sıfır ise onlu sayı sistemindeki karşılığı sıfır, hepsi bir ise onlu sayı sistemindeki karşılığı 255 tir. Yani bu veri tipi 0:255 arasında değerler alır. 00000000 >0 11111111 >255 Char kelimesinin önündeki unsigned kelimesi işaretsiz anlamına gelir. Bu da bu veri tipinin sadece pozitif (+) tamsayı barındırabileceği anlamına gelir. Eğer yazdığımız programda 0:255 arası küçük tamsayı değerler arasında çalışacaksak en mantıklı şey bu veri tipini kullanmaktır. Örneğin 0-100 arası öğrenci notları ile çalışacaksak short veya int veri tipi yerine bu veri tipi kullanılmalıdır çünkü int RAM bellekte 4 byte yer kaplarken char veri tipi 1 byte yer kaplar. Sonuçta daha az bellek isteyen ve kaynakları daha iyi kullanan bir program yazmış oluruz. Kaynak: C++/C Fahrettin Erdinç Karar yapıları, (if else, switch) Karar Yapıları

Karar yapıları adından da anlaşılacağı gibi program akışında belirli şart(lar) doğrultusunda hangi kod bloklarının çalışacağına karar vermemize olanak tanır. C dili gibi bir çok dilde 2 farklı karar yapısı vardır. Biri if diğeri ise switch (veya case) ismiyle anılır. if Yapısı Bilgisayarda yapılan bütün mantıksal işlemler kaba bir temele dayanır. Şartlar sağlandığı halde yapılacak işlem belirlenir. Ve şartlar sağlandığında, bu işlemler yapılır. Şartların kontrol edilmesini, C (ve daha birçok) programlama dilinde if operatörünü kullanarak yaparız. if operatörünün genel kullanım yapısı şu şekildedir: [crayon-591fc11626382299268344/] Eğer if in altında birden çok komut varsa, ayraç işareti (veya küme parantezi) koymamız gerekir. Şayet if ten sonra, tek komut bulunuyorsa, ayraç koyup-koymamak size kalmıştır. Zorunluluğu yoktur. Örnek bir program yazalım. Bu programda kullanıcının klavyeden, bir tam sayı girsin. Ve bizde girilen sayı, 100 den büyükse, ekrana yazdıralım: [crayon-591fc1162639b264394568/] if-else Yapısı Bazı durumlarda, bir koşulun doğruluğuna göre sonuç yazdırmak yetmez. Aksi durumda da ne yapacağımızı belirtmek isteriz. Bunun için if-else yapısını kullanırız.

if-else yapısı şu şekildedir: [crayon-591fc116263a5575190994/] Önceki yazdığımız programı düşünelim; 100 den büyük olduğunda, ekrana çıktı alıyorduk. Bu programa bir özellik daha ekleyelim ve 100 den küçükse, bunu da söyleyen bir yapıyı oluşturalım: [crayon-591fc116263ad258259043/] Örnekte gördüğünüz gibi, bir koşulun doğruluğunu program kontrol ediyor ve buna doğru olursa, bazı işlemler yapıyor. Şayet verilen koşul yanlışsa, o zaman daha başka bir işlem yapıyor. Ancak ikisini de yapması gibi bir durum söz konusu değil.aşağıdaki akış diyagramlarında (flowchart) her iki durumu da görebilirsiniz. Yapısı: if-else Yapısı: if İlişkisel (Relational) Operatörler Koşullu operatörlerde, koşulun doğruluğunu kontrol ederken kullandığımız ilişkisel operatörler, aşağıda verilmiştir:

< Küçüktür > Büyüktür == Eşittir <= Küçük eşittir >= Büyük eşittir!= Eşit değildir Birleşik (Compound) Operatörler Bazı durumlarda, kontrol edeceğimiz koşul, tek bir parametreye bağlı değildir. Örneğin, bir kişinin yaşının 65 den küçük olup olmadığına bakabiliriz. Ama 65 den küçük ve 18 yaşından büyük olup olmadığına karar vermek istersek, o zaman Birleşik/Birleştirici Operatörler i kullanmamız uygun olacaktır. Compound operator ler aşağıdaki gibidir: && and ve or veya! not tersi Bu operatörlerin mantıksal (logical) doğruluk tablosu da şu şekildedir: p q p&&q p q!p 0 0 0 0 1 0 1 0 1 1 1 0 0 1 0 1 1 1 1 0

İçiçe geçmiş (Nested) İfadeler if ile bir ifadeyi kontrol ediyor ve doğruysa, buna göre işlemler yapıyorduk. Bir de if else yapısı vardı. if else yapısında da, koşulu gene kontrol ediyor, doğruysa if bloğunun altında kalanları yapıyorduk; yanlışsa, else bloğunda olan kodlar işleme alınıyordu. Son derece basit bir mantık üzerine kurulmuş bu yapıyla, yapılamayacak kontrol yoktur. Ancak öyle durumlar vardır ki, if else yapısı yeterli verimliliği sunamaz. Diyelim ki, birden fazla kontrol yapmanız gereken bir durum oluştu. Hatta örnek vererek konuyu daha da somutlaştıralım. İstenilen bir programda, klavyeden size yaş bilgisi veriliyor. Siz de bu bilgiye göre, şayet yaş 18 den küçükse çocuk; 18-30 yaş arasında genç; 30-50 yaş arasında ortayaş diye bir mesaj bastırıyorsunuz. Basit bir program. Şimdi bunu sadece if yapısıyla kuruyor olsaydık, her seferinde yaşın uygun aralıklara düşüp düşmediğini kontrol eder ve ona göre sonucu ekrana bastırırdık. Ama bu son derece verimsiz bir yöntem olurdu. Çünkü zaten yaş bilgisinin genç olduğuna dair bir karar vermişsek, sonrasında tutup bunun yaşlı olup olmadığını kontrol etmenin bir esprisi olmayacaktır. Verilebilecek en kötü cevabı aşağıda bulabilirsiniz: [crayon-591fc116263bc101651154/] Yukarda ki kodu if else kullanarak daha efektif hale getirebiliriz: [crayon-591fc116263ca590371923/] Yukardaki program daha efektif bir yapı sunmuş olmasına rağmen, eğer kontrol ettiğimiz aralıkların sayısı çok fazla olsaydı, tam bir başbelası olacaktı! Çünkü if else içinde, bir başka if else bloğu ve onun içinde bir başkası bu böyle sürüp gidecekti. Kısacası performans olarak çok bir şey değişmese de, kodu yazan ve/veya okuyacak olan için tam bir eziyete dönüşecekti. İşte bu nedenlerle daha efektif yapılara

ihtiyaç duyuyoruz. if else if Merdiveni if else if merdiveni yukarda verdiğimiz örnekler için biçilmiş kaftandır. if else if merdiveni, doğru bir şey bulduğu zaman kontrolu orada keser ve diğer koşulları kontrol etmeden blok sonlandırılır. Aşağıda if else if yapısını ve akış diyagramını bulabilirsiniz: if else if Yapısı [crayon-591fc116263d4299967683/] if else if Akış Diyagramı

if else if ile söylenebilecek son bir şey sonunda ki else tir. else koymak zorunlu değildir. Ancak hiçbir koşula uymayan bir durumla karşılaştığınızda, else devreye girer. Örneğin yukarda anlatıp, kodunu vermiş olduğumuz programda, belirtilen yaş aralıklarında değer girilmezse, hiçbir şey ekrana bastırılmayacaktır. Çünkü programa tanınmayan yaş aralığında ne yapılacağı öğretilmemiştir. Şimdi bu durumu da içerecek şekilde, programamımızı if else if yapısıyla tekrar yazalım: [crayon-591fc116263e1404174208/] swicth case ifadesi switch case, if else if yapısına oldukça benzer bir ifadedir. Ancak aralarında iki fark vardır. Birincisi, switch case yapısında, aralık değeri girmezsiniz. Direkt olarak ifadelerin bir şeylere eşit olup olmadığına bakarsınız. İkinci farksa, switch case yapılarında, illa ki uygun koşulun sağlanmasıyla yapının kesilmek zorunda olmayışıdır. break komutu kullanmadığınız takdirde, diğer şartların içindeki işlemleri de yapma imkanınız olabilir. switch case en tepeden başlayarak şartları tek tek kontrol eder. Uygun şart yakalanırsa, bundan sonra ki ifadeleri kontrol etmeden doğru kabul eder. Ve şayet siz break koymamışsanız, eşitlik uygun olsun olmasın, alt tarafta kalan case lere ait komutlarda çalıştırılacaktır. if else if ise daha önce söylemiş olduğumuz gibi böyle değildir. Uygun koşul sağlandığında, yapı dışarsına çıkılır. switch case yapısında ki durumu, aşağıdaki tabloda görebilirsiniz: switch case Yapısı [crayon-591fc116263eb167103643/] switch case Akış Diyagramı

Sanırım gözünüze biraz farklı gözüktü. Yapı olarak şimdiye kadar görmüş olduğunuz if else gibi gözükmese de, bir örnekten sonra arasında pek bir fark olmadığını göreceksiniz. Her komut sonunda koyduğum break komutu, zorunlu değildir ve o nedenle köşeli parantezle belirtilmiştir. break koyduğuz takdirde, uygun koşul sağlandıktan sonra, daha fazla kontrol yapılmayacak ve aynen if else if yapısında olduğu gibi program orada kesilecektir. Ama break koymazsanız, altında kalan bütün işlemler -bir daha ki break e kadar- yapılacaktır. Kodun sonunda gördüğünüz default komutu, if else if yapısında ki sonuncu else gibidir. Uygun hiçbir şart bulunamazsa, default komutu çalışır. Öğrendiğimiz bilginin pekişmesi için biraz pratik yapalım. Bir not değerlendirme sistemi olsun. 100 90 arası A, 89 80 arası B, 79 70 arası C, 69 60 arası D, 59 ve altıysa F olsun. Eğer 100 den büyük veya negatif bir sayı girilirse, o

zaman program hatalı bir giriş yapıldığını konusunda bizleri uyarsın. Bunu şimdiye kadar öğrendiğiniz bilgilerle, if else if yapısını kullanarak rahatlıkla yanıtlayabilirsiniz. Ama şu an konumuz switch case olduğundan, cevabını öyle verelim: [crayon-591fc116263f6745658641/] Algoritmaya bakalım: Önce sayıyı alıyor ve 10 a bölüyoruz. Yani girilen not, 57 ise 5.7 sonucunu elde ediyoruz. Ancak iki tam sayının sonucu bir virgüllü sayı veremez, tıpkı işleme giren değişkenler gibi tam sayı olarak döner. Dolayısıyla bilgisayarın elde edeceği sonuç, 5.7 değil, sadece 5 tir. switch case yapısında koşullar yukardan başlayarak kontrol ediliyor. case 5 e gelindiğinde eşitlik sağlanıyor. Ama break konmadığı için, switch case ten çıkılmıyor. Ve altında kalan işlemlerde yapılıyor. Altında herhangi bir işlem veya break olmadığından case 0 a kadar bu böyle sürüyor. Ve case 0 da ekrana bir çıktı alıp switch case yapısı break ile sonlandırılmaktadır. Arttırma (Increment) ve azaltma (decrement) işlemleri Daha önceki derslerimizde, aritmetik işlemlerden bahsetmiştik. Bunların dışında yapabileceğimiz başka şeylerde bulunmaktadır. Bunlardan biri de, arttırma ve azaltma işlemleridir. Eğer i adında bir değişkenin değerini 1 arttırmak isterseniz, i = i + 1 olarak yazarsınız. Veya 1 azaltmak isterseniz, benzer şekilde i = i 1 de yazabilirsiniz. Arttırma ve azaltma işlemleri bu olayı daha basit bir forma sokmaktadır. i = i + 1 yazmak yerine i++ veya i = i 1 yazmak yerine i yazabilirsiniz. Arttırma ve azaltma işlemleri temelde iki çeşittir. Birinci yöntemde yukarda yazdığımız gibi, arttırma/azaltma sonradan yapılır. İkinci yöntemdeyse arttırma/azaltma ilk başta yapılır. Aşağıdaki örneklere bakalım.

[crayon-591fc1162640c377577768/] Yukardaki programı yazar ve çalıştırısanız elde edeceğiniz çıktı şu şekilde görünecektir: i = 11 ve j = 59 Çünkü arttırma ve azaltma işlemleri ekrana bastırmadan önce yapılmış ve i ile j nin değerleri değiştirilmiştir. Şimdi programı değiştirip şöyle yazalım: [crayon-591fc11626415349209177/] Bu sefer program çıktısı şöyle olacaktır: i = 10 ve j = 60 Farkettiğiniz üzere hiçbir değişiklik yapılmamış gibi duruyor. Aslında değişiklik yapıldı ve program sonlanmadan önce i 10 olurken, j de 59 oldu. Ama arttırma ve azaltma işlemleri printf komutu çalıştırıldıktan sonra yapıldığı için, biz bir değişiklik göremedik. Kısacası önce arttırma (pre-increment) veya önce azaltma (predecrement) kullandığınızda, ilgili komut satırında çalışacak ilk şey bu komutlar olur. Ancak sonra arttırma (post increment) veya sonra azaltma kullanırsanız, o zaman bu işlemlerin etkileri ilgili komut satırından sonra geçerli olacaktır. Aşağıdaki özel tabloya bakabilirsiniz: Form Tip İsim Açıklama i++ postfix post-increment İşlem sonrası arttırma ++i prefix pre-increment İşlem öncesi arttırma i postfix post-decrement İşlem sonrası azaltma i prefix pre-decrement İşlem öncesi azaltma Gelişmiş atama (Advanced Assignment) yöntemleri C de yazım kolaylığı amacıyla sunulmuş bir başka konu da,

gelişmiş aşama yöntemleridir. Biraz daha uzun yazacağınız kodu, kısaltmanıza yaramaktadır. degisken_1 = degisken_1 (operator) degisken_2 şeklinde yazacağınız ifadeleri, daha kısa yazabilmeniz için, degisken_1 (operator) = degisken_2 şeklinde ifade edebilirsiniz. Gelişmiş atamalarda sunulan genel formlar şu şekildedir: [crayon-591fc1162641f251048963/] Sanırım aşağıdaki örneklere bakarsanız, konuyu çok daha net anlayacaksınız: [crayon-591fc1162642e105930770/] Conditional Operator (? ) Conditional Operator, if-else ile tamamen aynı yapıdadır. Hiçbir farkı yoktur. Tek farkı koda bakıldığında anlaşılmasının biraz daha zor oluşudur. Bir de if else gibi yazıyla ifade edilmez. Onun yerine soru işareti (?) ve iki nokta üst üste ( : ) kullanarak yazarız. Aşağıdaki tabloda if else yapısıyla karşılaştırılmalı olarak, Conditional Operator verilmiştir: if-else Yapısı [crayon-591fc11626439472135491/] Conditional Operator (? ) Yapısı [crayon-591fc11626440553200195/] Conditional Operator (? ) Akış Diyagramı

Şimdi de aynı programı, hem if-else, hem de conditional operator kullanarak yazalım: [crayon-591fc11626447197899214/] Şimdi de aynı programı conditional operator kullanarak yazalım: [crayon-591fc1162644f214980531/] Program gördüğünüz gibi biraz daha kısaldı. Yazar: Oğuzhan YILMAZ Akış Şeması (Flowchart) Nedir

? Bir problemle karşılaştığımızda çözümüne ulaşmak için zihnimizde bir takım hesaplar yaparız. Bu noktada yardımına başvurduğumuz bazı yöntemler vardır. Örneğin; Flowchart, bize yardımcı olacak tekniklerden biri. İster bilgisayarla ister bilgisayarsız bir sorunu çözmek için belirli bir yol vardır ve ancak bu yol ile sağlıklı bir çözüme ulaşılabilir. Çözüme ulaşırken kullanılan bu yola algoritma denir. Yani algoritma, mevcut bilgilerden istenilene erişme yöntemidir. Bilişim alanı için algoritmayı tanımlayacak olursak, verilerin bilgisayara hangi çevre biriminden girileceğinin, problemin nasıl çözüleceğinin, hangi basamaklardan geçirilerek sonuç alınacağının ve sonucunun nasıl/nereye yazılacağının sözel olarak ifade edilmesi diyebiliriz. Bahsettiğimiz gibi söz ve yazı ile anlatılan algoritmanın görsel olarak simge veya sembollerle ifade

edilmiş şekline Flowchart yani Akış diyagramları diyoruz. Flowchartların algoritmalardan farkı, adımların simgeler şeklinde kutular içine yazılmış olması ve adımlar arasındaki ilişkilerin oklar ile gösterilmesidir. Bu açıdan flowchartlar bir harita olarak düşünülebilir. Bu harita sayesinde mevcut algoritmanın anlaşılırlığı artarak bize process aşamasında yardımcı olur. Flowchart bir processin işlem basamaklarını diyagramsal gösterir. Böylece bir prosedürü başından sonuna kadar incelemeyi kolaylaştırır. Bir problemin çözüm aşamalarını kağıt üzerinde görmek hataları veya eksiklikleri daha rahat fark edip düzeltmeyi sağlar. Flowchartlar içerik ve biçimlerine göre genel olarak 3 grupta sınıflandırılabilirler; 1- Doğrusal Akış Diyagramları: İş akışları input-processingoutput biçiminde olan diyagramlardır. 2. Mantıksal Akış Diyagramları: Geniş ölçüde mantıksal kararları içeren diyagramlardır.

3. Döngüsel Akış Diyagramları: Sorunun çözümü için, çözümde yer alan herhangi bir adım veya aşamanın birden fazla kullanıldığı diyagramlardır. https://youtu.be/ikzsqn3dkxc KAYNAK:http://www.elektrikport.com Yazar : Berat DAĞTEKİN

Değişken kavramı, veri türleri, (int, float, char ) DEĞİŞKEN VE SABİTLER Çoğu programda çıkış değerleri üretilmeden önce bir dizi hesaplamalar yapılır. Bu hesaplamalar esnasında verilerin geçici olarak saklanacağı alanların olması gerekir. C dilinde bu saklama alanlarına değişkenler denir. Veriler program içerisinde değişken ve sabit biçimlerinde kaydedilir. Değişkenler değerleri değiştirilebilen verilerdir. Sabitler ise değişkenlerin aksine atama yapıldıktan sonra değeri değiştirilemeyen verilerdir. Değişken ve sabitler faklı boyut ve biçimde program belleğine kaydedilirler. Veri çeşitleri ve Veri Çeşidi Değiştiricileri C de aşağıda gösterilen 5 temel veri çeşidi vardır: char : Karakter int : Tamsayı float : Kayan noktalı sayı double : Çift duyarlıklı kayan noktalı sayı void : Değersiz Veri çeşidi değiştiricilerini kullandığınız zaman, printf() ve scanf() fonksiyonları farklı format tanımlayıcıları kullanır. Yukarıdaki tabloda gösterilen bütün değişken türlerine göre printf() ve scanf() fonksiyonları ile kullanılan format tanımlayıcıları aşağıdaki tabloda gösterilmektedir:

Burada bahsi geçen format tanımlayıcılarının nasıl kullanıldığını anlamak için konumuza devam etmeden önce printf() ve scanf() fonksiyonlarına kısaca değinelim. printf() Fonksiyonu printf() fonksiyonu C nin genel amaçlı çıktı alma fonksiyonudur. Başka bir deyişle, ekrana istediğimiz verileri yazmak içim kullanılan bir fonksiyondur. printf() fonksiyonu karakter dizisinden oluşan tek bir değeri veya farklı değişken ve sabitlerden oluşan birden fazla değeri ekrana yazdırmak için kullanılabilir. Tek bir karakter dizisini ekrana yazdırmak için aşağıdaki yapı kullanılır: printf( Karakter-Dizisi ); Herhangi bir fonksiyona aktarılan değere argüman adı verilir. Biz bir fonksiyona argüman aktardığımızda, fonksiyonunun bu argüman ile geçirilen değeri kullanarak gerekli işlemi yapmasını istemiş oluruz. Buradaki argüman tırnak işaretleri ( ) arasında yer alan karakter dizisidir. C de tırnak işaretleri arasında yer alan bir veya daha fazla karaktere Karakter Dizisi (String) adı verilir. [crayon-591fc11628192373210175/] Yukarıdaki örnek program derlenip çalıştırıldığında aşağıdaki satırı ekrana yazar:

makucoders Şimdi de, farklı değişken ve sabitlerden oluşan bir veya birden fazla değeri ekrana yazdırmak için printf() fonksiyonunun çalışmasını bir örnek üzerinde incelemeye çalışalım: printf() fonksiyonunu kullanarak her veri türündeki değişken ve sabit değerlerini ekrana yazdırabiliriz. Aşağıdaki işlem satırı, bir int sabit değeri olan 25 sayısını ekrana yazar: [crayon-591fc116281a0933915177/] Yukarıdaki işlem satırı ekrana aşağıdaki satırı yazar: Sayinin değeri : 25 Dikkat ederseniz, burada printf() fonksiyonu içinde yukarıda format tanımlayıcısı olarak verdiğimiz %d ifadesini kullandık. Bir önceki örneğimizde printf() fonksiyonu sadece ( ) işaretleri içinde kalan karakter dizisini ekrana yazmıştı. Ancak bu defa, printf() fonksiyonunun bir virgül ile ayrılmış 2 argümanı vardır. Bunlardan biri ( ) işaretleri arasında yer alan karakter dizisi, diğeri ise bir int sabiti olan 25 sayısıdır. printf() fonksiyonu ilk argüman içinde yer alan normal karakterleri ekrana yazar, format tanımlayıcısının yerine de ikinci argüman olan değeri olan 25 sayısını yazar. printf() fonksiyonunun ilk argümanı ( ) işaretleriyle sınırlandırılmış olan bir karakter dizisidir. Bu karakter dizisinin içinde hem normal karakterler hem de (%) işareti ile başlayan Format Tanımlayıcıları adı verilen ifadeler yer alabilir. printf() fonksiyonu ( ) işaretleri arasında yer alan normal karakterleri sıra ile ekrana yazar. Format tanımlayıcıları ile karşılaştığında ise ekrana farklı bir veri yazacağını ve bu verinin printf() fonksiyonu çağrılırken karakter dizisinden sonra tanımlanmış olan argüman değerlerinden alınacağını anlar. Konunun daha kolay anlaşılması için aşağıda yer alan örneği incelemeye çalışalım:

[crayon-591fc116281ab375641967/] Yukarıdaki program ekrana aşağıdaki satırı yazar: YazilimaGiris.com a hos geldiniz. 1,2,3 Burada printf() fonksiyonu için 3 argüman tanımlanmıştır. printf() fonksiyonu ( ) işaretleri içindeki karakter dizisini taramaya başlar. İlk %s format tanımlayıcısı ile karşılaştığında buraya bir karakter dizisinin geleceğini anlar ve karakter dizisinden sonraki ilk argüman değerini okuyarak (YazilimaGiris.com) ekrana yazar. Sonra ikinci format tanımlayıcısıyla karşılaşana kadar karakter dizisi içindeki normal karakterleri ekrana yazar (öğrenirken). İlk %d format tanımlayıcısı ile karşılaştığında yine buraya bir int sabitinin geleceğini anlar ve karakter dizisinden sonraki ikinci argüman değerini okuyarak (2) ekrana yazar. Daha sonra, karakter dizisinde yer alan bölümü ( farklı kitap ve ) ekrana yazar. İkinci %d format tanımlayıcısı ile karşılaştığında yine buraya bir int sabitinin geleceğini anlar ve karakter dizisinden sonraki üçüncü argüman değerini okuyarak (3) ekrana yazar. Son olarak, karakter dizisinin geriye kalan bölümünü ekrana yazar ( farklı derleyici kullandım). printf() fonksiyonunda kullanılan format tanımlayıcıları yerine sadece sabit değerler değil aynı zamanda değişkenlerin değerleri de konabilir. Yukarıdaki örneğin 2 argümanını sabit değerler yerine değişkenler yoluyla aktaralım: [crayon-591fc116281b5011574781/] Yukarıdaki program ekrana aşağıdaki satırı yazar: YazilimaGiris.com a hos geldiniz 10, 20 Program bu defa format tanımlayıcıları yerine koyacağı değerleri değişkenlerden alır. Farklı örneklerle konuyu pekiştirmeye çalışalım: [crayon-591fc116281bd405410905/]

Yukarıdaki örnekte, program aşağıdaki satırı ekran yazar: sayi1 değişkeninin değeri 100 dir. Program, 1 sayısı ile gösterilen işlem satırında sayi1 adlı int bir değişken oluşturur. 2 sayısı ile gösterilen işlem satırında id1 değişkenine 100 sayısını atar. printf() fonksiyonu ise değişken değerini ekrana yazar. [crayon-591fc116281c6370397710/] Yukarıdaki örnekte, program aşağıdaki satırı ekrana yazar: 25 ve M Program sayi1 adlı int ve harf1 adlı char değişkenlerine atadığı 25 ve C sabit değerlerini printf() fonksiyonu ile ekrana yazar. [crayon-591fc116281ce257165330/] Yukarıdaki örnekte, program aşağıdaki satırı ekrana yazar: 50 25 A 2.23900 dir Program, iki adet int, bir adet char ve bir adet float değişken olmak üzere toplam dört adet değişken bildirimi yapar. Sonra değişkenlere atanan değerleri printf() fonksiyonu ile ekrana yazar. Scanf() Fonksiyonu Şimdi de klavyeden giriş yapılan değeri almak için kullandığımız scanf() fonksiyonuna kısaca değinelim. Klavyeden girilen sayısal bir değeri bellekteki bir değişkene atamak için scanf() standart kütüphane fonksiyonunu kullanabiliriz. Daha ilerideki bölümlerde görülebileceği gibi scanf() fonksiyonunun çok geniş kullanım alanı olmasına rağmen burada sadece klavyeden girilen değerlerin bir değişkene

atanması için kullanılmasını inceleyeceğiz. scanf() fonksiyonunu kullanarak klavyeden girilen bir int değeri bellekte yer alan bir değişkene atamak için aşağıda gösterilen genel yapıyı kullanabiliriz: scanf( %d, &değişken-adı); scanf() fonsiyonunun kullanılması printf() fonksiyonuna benzer. Yapı olarak tek fark ikinci argüman olarak verilen değişkenin başına (&) işaretini almış olmasıdır. Bu işaretin neden kullanıldığı daha sonra ele alınacaktır. Yukarıdaki satırda scanf() fonksiyonu için 2 argümandan ilki ( ) işaretleri içinde yer alan bir karakter dizisidir. Bu dizi scanf() fonksiyonu için kullanılan format tanımlayıcılarından oluşmaktadır. scanf() fonksiyonu %d format tanımlayıcısını gördüğünde klavyeden bir int değerin okunacağını anlar. Bunun üzerine hemen ikinci argümanı olan değişken adına bakarak, klavyeden okuyacağı değeri atayacağı değişken adını tespit etmiş olur. Siz scanf() fonksiyonunu kullanarak klavyeden bir sayı okutmak istediğinizde, yazdığınız sayı bir rakamdan fazla olabileceğinden, siz ENTER tuşuna basana kadar scanf() fonksiyonu işlem yapmadan bekler. [crayon-591fc116281da462512114/] Yukarıdaki ilk işlem satırında, sayi1 adlı bir int değişken bildirimi yapılmakta, ikinci işlem satırında ise klavyeden girilen int değer sayi1 değişkenine atanmaktadır. Şimdi, bu özelliği bir örnek üzerinde incelemeye çalışalım: [crayon-591fc116281e1036461468/] Yukarıdaki örnekte, program klavyeden bir int değer girmenizi ister. Girdiğiniz değeri sayi1 adlı int değişkene atar. Daha sonra değişken değerini ekrana yazar. scanf() fonksiyonunu kullanarak klavyeden girilen float bir değeri bellekteki bir değişkene atamak için aşağıda gösterilen genel yapıyı kullanabilirsiniz: scanf( %f, &değişken-adı);

Yukarıdaki satırda yer alan %f format tanımlayıcısı float sayılar için kullanılmaktadır. double sayılar için kullanılan format tanımlayıcısı ise %lf dir. Şimdi vereceğimiz örneklerle öğrendiklerimizi pekiştirelim: [crayon-591fc116281ea575685473/] Yukarıdaki örnekte, program kullanıcıdan bir int ve bir float değeri klavyeden girmenizi ister. Sonra, girilen her iki değeri ekrana yazar. İlk printf() fonksiyon satırında yer alan \n ifadesi dikkatinizi çekmiş olabilir. Bu ifade program içinden bir sonraki satıra geçme olanağı sağlar. [crayon-591fc116281f3681816693/] Yukarıdaki örnekte, program kullanıcıdan 2 adet int ve 2 adet float sayı değerini klavyeden girmenizi ister. Sonra int değerlerin çarpımını ve float değerlerin toplamını ekrana yazar. [crayon-591fc116281fb767337891/] Yukarıdaki örnekte, program sizden 2 int değer girmenizi ister ve bu değerlerin karelerinin toplamını ekrana yazar. Yazar: Oğuzhan YILMAZ C Programlamaya giriş için yol haritası C programlamaya başlangıç için tavsiye edilen yol haritası aşağıdaki şekilde verilmiştir. 1. Temel kavramlar, 2. Akış şeması, (flowchart), 3. Değişken kavramı, veri türleri, (int, float, char ), 4. Operatörler (mantıksal, aritmetik), 5. Karar yapıları, (if else, switch),

6. Döngü yapıları, (for, do while, while), 7. Diziler (arrays), 8. Fonksiyonlar (fonksiyon tanımlama, çağırma), 9. Kütüphane kullanımı (stdio.h, stdlib.h), 10. Dosya işlemleri (dosya oluşturma, okuma, yazma, silme), 11. String ve karakter fonksiyonları, 12. Tarih ve zaman fonksiyonları, 13. Veri modelleri, 14. Hata ayıklama (debug), 15. Program örnekleri. Artık yıl hesabı yapan program Bu C kodu artık yıl hesabı yapmaktadır. [crayon-591fc11628e8e583214295/] C Diline Giriş C Tarihi AT&T Bell laboratuvarlarında, Ken Thompson ve Dennis Ritchie tarafından UNIX İşletim Sistemi ni geliştirebilmek amacıyla B dilinden türetilmiş yapısal bir programlama dilidir. Geliştirilme tarihi 1972 olmasına rağmen yayılıp yaygınlaşması Brian Kernighan ve Dennis M. Ritchie tarafından

yayımlanan C Programlama Dili kitabından sonra hızlanmıştır. Günümüzde neredeyse tüm işletim sistemlerinin (Microsoft Windows, GNU/Linux, *BSD, Minix) yapımında %95 lere varan oranda kullanılmış, halen daha sistem, sürücü yazılımı, işletim sistemi modülleri ve hız gereken her yerde kullanılan oldukça yaygın ve sınırları belirsiz oldukça keskin bir dildir. Keskinliği, programcıya sonsuz özgürlüğün yanında çok büyük hatalar yapabilme olanağı sağlamasıdır. Programlamanın gelişim süreciyle beraber programlamanın karmaşıklaşması, gereksinimlerin artması ile uygulama programlarında nesne yönelimliliğin ortaya çıkmasından sonra C programcıları büyük ölçüde nesne yönelimliliği destekleyen C++ diline geçmişlerdir. C Diline Giriş C diline geçmeden önce algoritma ve akış şemalarını tam anlamıyla bilmemiz gerekir. Öncelikle C diline başlarken ilk ihtiyacımız olan şey editörlerdir. Tavsiye edilen editörler ; Windows için; -DEV C/C++ -Codeblocks -Visual Studio Linux için; -Netbeans -Codeblocks -Geany Bahsedilen editörlerden işletim sisteminize uygun olanını seçip yükleyiniz. Açıkçası Windows için DEV C/C++ ya da Linux için Netbeans ı tercih ederim.

İlk başta kütüphanelerden başlayalım ve programlama dünyasına kocaman bir merhaba diyerek ilk programımızı yazalım. [crayon-591fc11629546246875002/] Hadi yaptığımız programı ele alalım. İlk başta kullanacağımız kütüphanelerden bahsedelim. Bu yazmış olduğumuz programda stdio.h kütüphanesi kullandık. Bu kütüphane standart giriş çıkış fonksiyonları için kullanılır. Eğer kütüphane yazmadan programı derlemeye çalışırsak programımız kütüphanemiz olmadığı için hata verecektir bu yüzden tanımlamamız gerekecektir. Yazacağımız programlarda int main() adında ana bir fonksiyon tanımlarız ve programımızı bu fonksiyonun içerisine yazarız. İlerideki fonksiyonlar dersimiz de bu konuyu daha detaylı ele alacağız. int main() ana fonksiyonumuzu tanımlarken { } programımızın başlangıç ve bitişine koymamız gerekir aksi halde programımız çalışmayacaktır. Ana fonksiyonumuzu tanımladıktan sonra printf komutu kullanıp ekrana Merhaba Dünya çıkışı verecektir ve return(0) komutu ile programımız sonlanacaktır. C de komutların sonuna ( ; ) işareti getirilir. Ancak bu konu hakkında istisnalar da vardır.bu istisnalardan bazıları; bazı döngü yapıları, karar yapısı vs. İlk programımızda dikkat etmemiz gereken önemli noktalar vardır. Şöyle ki noktalı virgül( ; ), süslü parantez( { } ), kütüphane ekleme gibi durumları unutmamamız gerekir. C de yazacağımız programın ihtiyacı doğrultusunda kütüphane seçimi yapılır. Öncelikle C de kütüphane tanımlarken çalışmamızın başına #include<kütüphane ismi> yazılır ve tanımlanır. Başlarken genellikle kullanacağımız kütüphanelerden bahsedeyim;

stdio.h conio.h math.h stdlib.h graphics.h dos.h Standart giriş/çıkış fonksiyonları DOS destekli giriş/çıkış fonksiyonları Matematiksel fonksiyonlar Dönüşüm sıralama fonksiyonları Grafik fonksiyonları DOS Fonksiyonları ctype.h Karakter dönüşüm ve sınıflandırma string.h Alfa sayısal Genellikle bu kütüphaneler üzerinden işlemler yapacağız. İlerideki derslerde yavaş yavaş ilk basit hesap makinesini operatörler dersimizde yapacağız. Sonraki derse görüşmek üzere Yazar : Ömer Can Eskicioğlu Algoritma ve Akış Şemaları Algoritma : Bir sorunu çözmek veya belirli bir amaca ulaşmak için gerekli olan sıralı düzenli mantıksal adımlara algoritma denir. Algoritma aslında bir işi optimum düzeye minimize ederek en iyi şekilde çalıştırmayıda amaçlar. Algoritmanın başlangıcı ve bitişi belli olmalıdır. Açık ve anlaşılır olmalıdır. Günlük yaşantımızda yaptığımız işler sırasında sıklıkla kullandığımız bir yöntemdir. Örneğin ; Algoritma Örneği 1 :

/* Otobüse binme algoritması tasarlayınız. (BURDUR için) */ A1: Başla A2: Evden çıkmak için hazırlan A3: Evden çık A4: Durağa yürü A5: Durakta otobüsü bekle A6: Eğer otobüs durağa geldiyse bin değilse beklemeye devam et A7: Eğer kartında para var ise kartını okut değilse ücreti nakit olarak öde A8: Eğer etrafta boş yer varsa otur değilse ayakta bekle A9: Eğer otobüs durağa yaklaşırsa düğmeye bas değilse bekle A10: Eğer otobüs gideceğin durağa vardıysa in değilse ineceğin yere gitmesini bekle A11: Otobüsten düğmeye bastığın kapıdan in A12: Bitir Algoritma Örneği 2 : /* iki sayının toplamını yapan algoritmayı tasarlayınız. */ A1: Başla A2: a,b,sonuc Oku A3: sonuc = a + b ; A4: sonuc u yaz A5: Bitir Algoritma Örneği 3 :

/*Dışarıdan okunan iki sayıdan büyük olanının tek sayı mı, çift sayı mı olduğunu belirleyen bir işin algoritmasını tasarlayınız*/ A1:Başla A2:a,b Oku A3:Eğer a>b ise A4 git, Değilse A5 ya git A4:Eğer a%2==0 ise cift yaz, Değilse tek yaz A5:Eğer b%2==0 ise cift yaz, Değilse tek yaz A6:Bitir Algoritma Örneği 4 : /* Hesap makinesi algoritmasını tasarlayınız. */ A1: Başla A2: a,b,toplama,cikarma,bolme,carpma Oku A3: toplama = a + b A4: cikarma = a b A5: carpma = a * b A6: bolme = a / b A7: toplama Yaz A8: cikarma Yaz A9: carpma Yaz A10: bolme Yaz A11: Bitir

Algoritma Kriterleri: Etkinlik Anlaşılır, basit, kesin olmalı Sonluluk Başla bitiş noktası olmalı Kesinlik Aynı veri için her yeni çalıştırımda aynı sonucu vermeli Giriş/Çıkış Giriş / Çıkış değerleri olmalı Başarım/Performans Çalışma süresi az başarım ve performansı yüksek olmalı Algoritma 2 şekilde ifade edilir; 1. 2. Metin olarak Pseudo Code (Kaba Kod) olarak Sonuç olarak algoritmayı hayatımızın bir parçası olarak kullanmaktayız. Yaptığımız işler düzenli ve sıralı olarak mantık çerçevesinde yapmaktayız. Algoritmayı da tasarlarken amacınız basit, anlaşılabilir, düzenli, sıralı bir algoritma yapmaktır. Akış Şeması Akış şemaları algoritmalarda verilen her adımın görsel olarak anlatılması amacıyla kullanılan yöntemlerden birisidir. Başla : Programın nereden başlayacağını belirtir. Dur/Bitir : Programın nerede sonlanacağını gösterir. Giriş Simgeleri : Klavye, kart okuyucu gibi birimler üzerinden program içerisine veri/bilgi aktarmak için kullanılır. Çeşitli giriş simgeleri vardır.

Çıkış Simgeleri : Ekranda göstermek, yazıcıdan kağıda çıkış almak gibi işlemlerde kullanılır. İşlem Simgesi : Dikdörtgen şeklindeki simgenin içine yapılacak işlemler yazılır. Karşılaştırma Simgesi : Koşullu ifade simgesidir. Koşula göre farklı işlem yapılacağı zaman kullanılır. Simgenin içine koşul yazılır ve evet ve hayır olmak üzere 2 yöne dallanır. Döngü Simgesi : Belirli bir grup işin birden çok sayıda yinelenmesi gerektiğinde kullanılır. Yapılacak işlem simgenin içine yazılır. Fonksiyon Çağırma : Daha önce yazılmış algoritmaların, o andaki algoritmanın içerisine koyulmadan kullanılması için kullanılır. Dosyayı Saklama Simgeleri : Elde edilen bilgi cd, bellek, harddisk gibi saklama birimlerinde saklanması veya daha önceden saklanmış birimleri okunması için kullanılır. Akış Yönü : Bir işlem bittikten sonra program akışının nereye dallanacağını belirtir. Bağlantı Simgeleri : Akış şema çizimi yapılırken sayfaya sığmazsa çizimin başka bir yerden devam edilmesi için kullanılır.

İlk C dersimizde görüşmek üzere Yazar : Ömer Can Eskicioğlu C Dilinde karar yapıları lsjf hkasdfj kasjdh kajshd fjash kfjah kdfjh akdsh fasdf asdlfj khlasdkf lask dfjlaksdfl klasdf [crayon-591fc11629c32149102623/]

Örnek Metin Kod yazımı Buraya video gelecek Buraya kod eklemek istesek ne olur acaba? [crayon-591fc1162a3d3880474113/] C kodları buradan devam ediyor.. [crayon-591fc1162a3e2390470364/]