TEMEL BİLGİSAYAR BİLİMLERİ Yrd. Doç. Dr. Bahattin ERDOĞAN ([email protected]) Kaynaklar  Busch R, (1985), Basic für Einsteiger  Uzunoğlu vd.

Download Report

Transcript TEMEL BİLGİSAYAR BİLİMLERİ Yrd. Doç. Dr. Bahattin ERDOĞAN ([email protected]) Kaynaklar  Busch R, (1985), Basic für Einsteiger  Uzunoğlu vd.

TEMEL BİLGİSAYAR
BİLİMLERİ
Yrd. Doç. Dr. Bahattin ERDOĞAN
([email protected])
Kaynaklar

Busch R, (1985), Basic für Einsteiger

Uzunoğlu vd. (2002), Matlab 6.0-6.5, Türkmen Kitabevi, İstanbul

www.mathworks.com


The Mathworks Inc., (2003), Statistic Toolbox for use in Matlab’s
User’s Guide
Doğan, U, (2006), Temel Bilgisayar Bilimleri, YTÜ Ders Notları,
İstanbul
07.11.2015
2
İçindekiler

Giriş

Programlama Dilleri

İşlemler

Algoritma Hazırlama

Akış Diyagramları

Matlab
07.11.2015
3
1. GİRİŞ

Verilen bilgileri saklayan, gerektiğinde bu bilgileri hızlı bir
şekilde istenilen amaca uygun kullanmayı
sağlayan/işleyen, mantıksal ve aritmetiksel işlemleri çok
hızlı biçimde yapan bir makinedir.

Bilgisayar terimi İngilizce “computer” kelimesinin dilimize
çevrilmiş halidir. Bu terim de Latince “compurate”
kelimesinden gelmektedir.
07.11.2015
4
1. GİRİŞ

Bundan 25 sene kadar önce, bilgisayarlara bakış açısını
aktarması bakımından Buch (1985)’den şu alıntıya bakmak
faydalı olacaktır:
“Bazıları bu cihazları işyerlerindeki insan gücünü yok eden aletler (jobkiller)
olarak tanımlar. Diğer bir grup ise, elektroniğin yarattığı bu modern
elemanlar ve cihazlar olmadan geleceğin problemlerine hakim
olunamayacağını zanneder. Bu cevaplar, düşünceleri, hisleri, hatta korkuları
yansıtmaktadır. Ve bütün bunlar-tam bilememekten kaynaklanmaktadır.”

Bugün (kişisel) bilgisayarlarımız, hayatımızın o kadar içine
girmiştir ki, onlarsız (ve tabii cep telefonsuz!) bir plan
yapabilmek, günlük işleri halledebilmek imkansızlaşmaya
başlamıştır.
07.11.2015
5
1. GİRİŞ

15 yıl öncesine kadar PC kullanmak (fareye çift kez
tıklayabiliyor olmak!), uygulama yazılımlarını (MS-DOS, MSWord) kullanabilir olmak bir seçilme nedeniydi.

Bilgisayar kullanmak, Windows’un da katkılarıyla(?), artık
oldukça sıradan bir olaydır.

“Bilgisayar kullanabilir misin?” şeklindeki yaygın soru, “şu
programı (aslında soranın bununla “bir uygulama yazılımını”
kastettiği) kullanabilir misin?” e dönüşmüştür.

CV’lerimize her yazdığımız –İLGİLİ- bir uygulama yazılımı
bilgisi bizlere birer puan kazandırmaktadır.
07.11.2015
6
1. GİRİŞ

Artık, yurtdışındaki tüm üniversiteler ve mühendislik firmaları
(LEICA, Trimble, LaCoste-Romberg, vb.) bir programlama dilini
bilip bilmediğinizi soracaklardır.

Yurtdışını düşünmesek bile, “Hesap yapan kişi” anlamındaki
“mühendis” in kendi mühendislik hesaplarını
programlayamaması, ne yazık ki, onu bir teknikerden öteye
taşımayacaktır.
07.11.2015
7
1. GİRİŞ




Daha öncede belirttiğimiz gibi, PC kullanmak ve uygulama yazılımlarını
çalıştırmak sıradan bir olaydır.
Günümüzdeki işletim sistemlerine (Windows, MS-DOS, Mac OS, Linux)
alışık bir PC kullanıcısı bu işletim sistemlerine göre oluşturulmuş uygulama
yazılımlarının hemen hemen hepsini kolaylıkla çözebilmekte ve kısa bir
zamanda kullanabilmektedir. (Çünkü bu yazılımlar, standart bir arayüze
(Graphical User Interface) sahiptirler).
Aynı biçimde, bir mühendislik CAD yazılımına (NETCAD, AutoCAD, vb.)
aşina olan bir mühendis diğer bir CAD yazılımını kolaylıkla öğrenebilir.
Yine bir CBS (Coğrafi Bilgi Sistemi) yazılımını (örneğin, Global Mapper)
bilen biri, ikinci bir CBS yazılımı karşısında zorluk yaşamaz.
07.11.2015
8
1. GİRİŞ

Özetle, bizlerin PC yazılımlarını kolaylıkla öğrenebiliyor olması,
PC’lerin yaygınlaşmış olmasına paralel, yazılımların standart
arayüz modellerine sahip olmasından kaynaklanmaktadır.

Peki, “bir programlama dilini öğrenmek” ile diğer dillere aşina
olmak arasında da böyle bir ilinti var mıdır?

Eski dilleri düşünmezsek, bu sorunun cevabı “EVET” olacaktır.
07.11.2015
9
1. GİRİŞ

ATARI 800XL, Commadore64 gibi ilk PC örneklerindeki BASIC
(Beginners All Purpose Symbolic Instruction Code yeni
başlayanlar için öğrenmesi kolay bir dil) ile başlayan benim
çağdaşlarımın, benden önceki delikli kartlarla çalışanların veya
C, C++, Delphi gibi dilleri bilenlerin ortak olacağı tek nokta,
“Bir programlama dilinden çok, “ALGORİTMA” nın önemli
olduğudur. “
07.11.2015
10
1. GİRİŞ

Programlama dili, bir yabancı dile, algoritma da insanın
düşüncesine benzetilebilir.

Önemli olan düşüncedir. Dil, düşüncelerimizi aktarmanın
yoludur. Öyleyse, algoritma yazabiliyorsak, programlama için
büyük bir aşamayı da geçmiş oluruz.
07.11.2015
11
1. GİRİŞ /Temel Kavramlar


1) Bilgisayar: Belirli komutlara göre veri işleyen ve depolayan bir aygıttır.
Donanım (hardware) ve yazılım (software) olmak üzere iki yapıdan oluşur.
2) Donanım: Bir bilgisayarı oluşturan fiziksel parçaların genel adıdır.
Giriş Donanımı: Fare, Klavye, Tarayıcı (scanner) vb.
Çıkış Donanımı: Monitör, Yazıcı, Plotter
Hem giriş hem de çıkış donanımı: Sabit Disk (Hard-disk), harici
diskler (External hard disk), CD&DVD reader/writer, USB, Hafıza kartları
07.11.2015
12
1. GİRİŞ /Temel Kavramlar

3) Yazılım: Bir bilgisayarda donanıma hayat veren ve bilgi
işlemde kullanılan programlar, programlama dilleri ve
belgelemelerin tümüne verilen isimdir.
Bilgisayar yazılımları, İşletim Sistemleri, Kullanıcı
Arayüzleri, Uygulama Yazılımları ve Programlama Dilleri
olarak dört ana grup altında incelenebilir.
07.11.2015
13
1. GİRİŞ /Temel Kavramlar

İşletim sistemi (Operating System): Bilgisayar donanımının
doğrudan denetimi ve yönetiminden, temel sistem işlemlerinden ve
uygulama yazılımlarını çalıştırmaktan sorumlu olan sistemlerdir.
Örnek: UNIX, Linux, Microsoft Windows, DOS, Mac OS vb.

Kullanıcı Arayüzü (User Interface): Microsoft Windows gibi
bilgisayar programı ile etkileşimi sağlayan yöntemlerin bileşkesidir.
07.11.2015
14
1. GİRİŞ /Temel Kavramlar

Uygulamalar (Applications): PC kullanıcısının,







Kelime İşlem (OpenOffice, Microsoft Office vb.)
Veri tabanı yönetimi (Access vb.)
Hesap çizelgeleri (Excel)
E-posta atma ve alma (Outlook Express)
Web sayfalarına erişim (Explorer, Modzilla vb.)
Ses ve görüntü oynatma (Media Player, BS Player vb.)
Oyun oynama..
gibi kişisel ihtiyaçlarına yönelik olarak, genellikle kullanıcı
arayüzüyle sunulan yazılımlardır.
07.11.2015
15
1. GİRİŞ /Temel Kavramlar

Programlama Dili: Bilgisayarın ilgili donanımlarının çalıştırılarak belirli bir
görevi yapmasını sağlayan, yazı ve karakterlerin kullanıldığı bir araçtır.

Makine dili (düşük düzey)

Assembly dili (orta düzey)

Yüksek düzeyli diller: Örneğin, BASIC, Delphi, C, C++, COBOL,
Fortran, Java, Lisp, Pascal, Flash gibi diller.
07.11.2015
16
1. GİRİŞ /Temel Kavramlar



Yüksek düzeyli dillerin çıkış amacı, programcının bilgisayar sistemine
bağımlılığını ortadan kaldırmaktır. Alt düzeyli dillere göre öğrenmesi ve
program yazılımı daha kolaydır.
Bu diller kendi yapısı ve dilbilgisi kuralları olan ve insanlar için anlaşılması
kolay diller olarak ifade edilmektedir.
Bilgisayarlar sadece ana dili olan makina dilini anladığı için yüksek düzeyli
programlama dilinde yazılan bir program derleyici (compiler) olarak
adlandırılan yazılımlar tarafından makina dilindeki denk bir programa
dönüştürülür (Örneğin, Compaq Fortran Compiler)
07.11.2015
17
1. GİRİŞ /Temel Kavramlar


4) Anakart (Mainboard): Bilgisayar gibi karmaşık bir elektronik sistemin
birincil ve en merkezi baskılı devre kartıdır. Fiziksel yapı olarak anakartlar
özel alaşımlı bir blok üzerine yerleştirilmiş ve üzerinde çeşitli donanımların
eklenebileceği yerler bulunan dört köşe şeklinde bir plakadır. Bu plaka
çalışma sistemini organize eder.
5) İşlemci: (Central Process Unit-CPU): Bir bilgisayarın en önemli
parçasıdır. Bilgisayarın veri işleyen ve program komutlarını gerçekleştiren
bölümüdür. Aritmetik ve mantıksal işlem yapma yeteğine sahiptir. İşlemci,
makine dili (0 ve 1’den oluşan basit dil) ile çalışır.
07.11.2015
18
1. GİRİŞ /Temel Kavramlar


6) Bellek: İşlemcinin çalıştırdığı programlar ve programa ait bilgiler bellek
üzerinde saklanır.Bellek geçici bir depolama alanıdır. Bellek üzerindeki
bilgiler güç kesildiği anda kaybolur.
Belleğe genellikle, RAM (Random Access Memory, Rasgele Erişimli Bellek)
adı verilir. RAM’de sadece işlemcide çalışan program parçaları tutulur ve
elektrik kesildiği anda RAM bilgileri silinir. Bilgilerin kalıcı olarak saklandığı
yer sabit disklerdir
(ÇALIŞMA DOLABI: Sabit Disk, ÇALIŞMA MASASI: RAM)
7) BIOS (Basic Input-Output System): Bilgisayar açıldığı anda işlemciye tüm
diğer donanımları sırasıyla tanıtan bir yazılımdır. İşletim sistemi çalışırken
donanım ve işletim sistemi arasındaki ilişkileri düzenler
07.11.2015
19
1. GİRİŞ /Temel Kavramlar




6) Chipset: (Yonga Seti): Anakart üzerindeki temel ve bütünleşik arabirimleri
yöneten ve bunlar arasındaki veri akışını sağlayan bir çeşit işlemci (INTEL,
AMD vb.)
7) Görüntü Kartı (Ekran kartı): Bilgisayarın görüntü vermesini sağlayan
donanım. Harici, dahili kart veya anakartta chipset içerisinde yerleşik olarak
bulunmaktadır.
8) Ses Kartı : Analog ve dijital ses işlevlerini yerine getiren elektronik
birimdir.
9) Ethernet Kartı : Bilgisayarın ağa bağlanıp veri alışverişinde, iletişimde
olmasını sağlayan elektronik devredir.
07.11.2015
20
1. GİRİŞ /Temel Kavramlar


10) Bit (Bİnary DigiT): Bilgi depolama, haberleşme ve iletişimde en küçük birimdir.
Bilgi yalnızca 2 farklı biçimde bulunabilir (İkili Sayı Sistemi): 0 veya 1. Bilginin içeriği
bu iki işaretin çeşitli biçimlerde peşpeşe dizilmesiyle belirlenir.
11) Bayt (Byte): Bilgisayarlarda bir veri kelimesi genellikle 8 bit uzunluğundadır. Bu 8
bitlik kelimeye BAYT adı verilir. Onluk düzende 167’nin ikilik düzendeki hali şöyledir:
10100111.
8 Bit=1 bayt
1 Kilobayt = 1 KB= 210 bayt=1024 bayt
1 Megabayt= 1 MB=220 bayt=(1024*1024) bayt
1 Gigabayt = 1 GB=240 bayt=(1024*1024*1024) bayt
1 Terabayt = 1 TB=280 bayt =(1024*1024*1024*1024) bayt
Örneğin, 49451 KB’lık bir dosya 49451/1024=48,3 MB veya 49451*1024=50637824
byte’dir.
07.11.2015
21
1. GİRİŞ /Temel Problem Çözme Teknikleri

1.
2.
3.
4.
Problem Çözme Tekniği (Descartes’e göre):
Doğruluğu kesin olarak kanıtlanmadıkça, hiçbir şeyi doğru olarak
kabul etmeyin; tahmin ve önyargılardan kaçının.
Karşılaştığınız her güçlüğü mümkün olduğu kadar çok parçaya bölün.
Düzenli bir biçimde düşünün; anlaşılması en kolay olan şeylerle
başlayıp yavaş yavaş daha zor ve karmaşık olanlara doğru ilerleyin.
Olaya bakışınız çok genel, hazırladığınız ayrıntılı liste ise hiçbir şeyi
dışarıda bırakmayacak kadar kusursuz ve eksiksiz olsun.
07.11.2015
22
1. GİRİŞ /Temel Problem Çözme Teknikleri
1) Problemi anlama
Bir problemi dikkatle inceleyip tüm değişik yönlerini ve kabul edilebilecek
bir çözümün nasıl olacağını anlamaya çalışmak gereklidir.
Problemin çözümünde neler beklendiği ve yaratacağı çözümün girdi ve
çıktılarının neler olacağı kesin olarak belirlenmelidir.
2) Problemi parçalara ayırma
Problem, daha basit ve birbirinden bağımsız parçalara ayrılır. Bu
problemlerin birbiri ardınca çözümünün ana problem çözümüne eşdeğer
olup olmadığı kontrol edilir.
Eğer problem, tekrar tekrar yapılan işlemler içeriyorsa, tekrarlanan işi
tekrarlama olgusundan ayrı düşünmek gerekir.
07.11.2015
23
1. GİRİŞ /Temel Problem Çözme Teknikleri
3) Problem çözümü
Bir problemi daha basit parçalara bölerken, bölme işi birçok aşamada yavaş
yavaş gerçekleştirilmeli ve genel kriterler önce kullanılmalı, daha detaylı
kriterler ise sonraya bırakılmalıdır.
Bulunan çözüm tekrar tekrar gözden geçirerek doğru ve eksiksiz olduğuna
emin olunmalıdır.
4) Tasarım
Bu aşamada problemi çözmek için kullanılacak çözüm adımlarını gösteren bir
liste, yani, algoritma, hazırlanır. Bu algoritma ile akış diyagramı (flowchart)
çizilir.
5) Kodlama
Bu adımda, kağıt üzerinde geliştirilen algoritma bir programlama diline
çevirilir.
07.11.2015
24
1. GİRİŞ /Temel Problem Çözme Teknikleri
6) Kanıtlama
Geliştirilen programın doğruluğu kontrol edilerek; istenildiği gibi çalışıp
çalışmadığı görülmelidir. Bu amaçla program üzerinde değişik denemeler
yaparak programın o denemelere nasıl karşılık verdiği kontrol edilir.
07.11.2015
25
2. PROGRAMLAMA DİLLERİ
Programlama dili, programcı ile bilgisayar arasındaki iletişimi sağlayan bir
araçtır. Programların yazımında kullanılan bir notasyondur.
Programlama dillerindeki komutlar genel olarak İngilizce’deki günlük konuşma
dilindeki kelimelerden türetilmiştir.
“Yaz” Komutu
“Gir” Komutu
Basic
Pascal
C / C++
MATLAB
Basic
Pascal
C / C++
MATLAB
Print
Writeln
Printf
fprintf
input
Readln
Scanf
input,
read
07.11.2015
26
2. PROGRAMLAMA DİLLERİ
Kodlanmış
bir program
örneği
07.11.2015
27
2. PROGRAMLAMA DİLLERİ
Programlama dilleri üç gruba ayrılır:
 Düşük seviyeli diller : Makine dillerini içerir
 Orta seviyeli diller
: Makine dilinden biraz daha gelişmiş diller
 Yüksek seviyeli diller : Konuşma dillerine yakın diller
Amaç program
Kaynak program
Yüksek seviyeli
dil
Derleyici
Düşük seviyeli
dil
Yüksek-düşük seviyeli dillerdeki program dönüşümü
07.11.2015
28
3. İŞLEMLER
Bilgisayar programları ile gerçekleştirilen işlemler genel olarak üç gruba ayrılır:
Matematiksel (aritmetik) işlemler
Karşılaştırma (karar) işlemleri
Mantıksal (lojik) işlemler
07.11.2015
29
3. İŞLEMLER /Matematiksel İşlemler
- Temel aritmetik işlemler (toplama, çıkarma, çarpma ve bölme)
- Matematiksel fonksiyonlar (üstel, logaritmik, trigonometrik, hiperbolik vb)
Ondalıklı sayıların tam ve ondalıklı
kısımlarını ayırmak için;
Sayıların önünde
Ondalık sayı
Pozitif : İşaret yok
Matematik (,)
125,865
07.11.2015
Bilgisayar (.)
125.865
Negatif :

30
3. İŞLEMLER / Matematiksel İşlemler
Matematiksel işlemler ve bilgisayar dilindeki karşılıkları
07.11.2015
İşlem
Matematik
Bilgisayar
Toplama
a+b
a+b
Çıkarma
a–b
a–b
Çarpma
a.b
a*b
Bölme
ab
a/b
Üs alma
ab
a^b
31
3. İŞLEMLER / Matematiksel İşlemler
Matematiksel işlemler, programlarda bilgisayar mantığına göre yeniden
düzenlenmelidir.
Bilgisayar dilinde yazılmış matematiksel ifadelerde işlem öncelik sırası
bulunmaktadır.
Matematiksel işlemler bilgisayar diline aktarılırken yapılacak olan küçük
bir hata işlem sonucunun yanlış çıkmasına neden olur.
Bu nedenle, matematiksel işlemlerin bu öncelik sırasına dikkat edilmelidir.
07.11.2015
32
3. İŞLEMLER / Matematiksel İşlemler
Matematiksel işlem öncelik sıraları
Sıra
İşlem
Bilgisayar dili
1
Parantezler
((.....))
2
Üs alma
a^b
3
Çarpma ve bölme
a*b ve a / b
4
Toplama ve çıkarma
a+b ve a-b
Eğer bilgisayar diline kodlanmış bir matematiksel ifadede, aynı önceliğe sahip
İşlemler mevcut ise, bilgisayarın bu işlemleri gerçekleştirme sırası soldan sağa
(baştan sona) doğrudur.
07.11.2015
33
3. İŞLEMLER / Matematiksel İşlemler
Örneğin,
Y=A*B/C
denkleminde, aynı öncelik sırasına sahip çarpma ve bölme işlemleri
bulunmaktadır. Bu durumda bilgisayar;
A * B işlemini yapıp bulunan sonucu C’ye bölerek işlemi gerçekleştirecektir.
Y=A^B^C
işleminde ise önce A’nın B’inci kuvveti alınır; çıkan sayının C’inci kuvveti
hesaplanır.
07.11.2015
34
3. İŞLEMLER / Matematiksel İşlemler
Bazı matematiksel ifadelerin bilgisayar diline kodlanması
Matematiksel yazılım
Bilgisayara kodlanması
a + b – c + 2abc - 7
a + b – c + 2 * a *b *c-7
a + b 2 - c3
a + b^2 – c^3
ab 
A
07.11.2015
2ab
b 2  4ac
B.C
 E.F
D
sqrt(a+b)-2*a*b/(b^2-4*a*c)
A+B*C/D-E*F
35
3. İŞLEMLER / Matematiksel İşlemler
Örnek 1: a = 4, b = 6, c = 8 ve d = 10 değerleri için bilgisayar
dilinde kodlanmış üç denklemin sonuçlarını inceleyiniz.
1. Denklem
c * d / (a*d) + b + c *d / a
= 28
2. Denklem
c * d / a*d + b + c *d / a
= 226
3. Denklem
c * d / a*d + (b + c) *d / a
=235
07.11.2015
36
3. İŞLEMLER / Matematiksel İşlemler
Örnek 2: A = 9, B = 16 değerleri için aşağıdaki ifadelerin
sonuçlarını bulunuz.
İfade
A + B^1/2
A + B^(1/2)
(A + B)^1/2
(A + B)^(1/2)
07.11.2015
Matematiksel eşdeğeri
B1
A
2
A B
(A  B)1
2
AB
= 17
= 13
= 12.5
=5
37
3. İŞLEMLER / Karşılaştırma İşlemleri
Bilgisayar, temel matematiksel işlemlerin yanında karar modelleri de
üretebilir. Örneğin,
• İki büyüklükten hangisinin büyük veya küçük olduğunu,
• İki değişkenin eşit olup olmadığı gibi konularda karar verebilir.
Karşılaştırma işlemleri, sayısal ve sayısal olmayan bilgilere
uygulanabilmektedir.
07.11.2015
38
3. İŞLEMLER / Karşılaştırma İşlemleri
Karşılaştırma işlemleri
07.11.2015
İşlem Sembolü
Anlamı
==
Eşittir
~=
Eşit değildir
>
Büyüktür
<
Küçüktür
>=
Büyük eşittir
<=
Küçük eşittir
39
3. İŞLEMLER / Karşılaştırma İşlemleri
Örnek 3: x=0 , y=sin(pi) olsun.
Bilgisayarda,
x==y
dendiğinde sonuç,
ans =
0
olur. Çünkü bilgisayarda sin(pi)=1.22410-16 değerine sahiptir ve 0’a eşit
değildir.
07.11.2015
40
3. İŞLEMLER / Mantıksal İşlemler
Mantıksal işlem operatörleri hem karar ifadelerinde hem de matematiksel
İşlemlerde kullanılır.
Programlardaki karşılaştırma ifadelerinde birden fazla koşulun belirli bir
özellikte sağlanması istenir. Bu durumda araya mantıksal işlem operatörleri
konulur.
Mantıksal işlem karşılıkları
07.11.2015
Mantıksal
işlem
Komut
VE
and (&)
VEYA
or ( | )
DEĞİL
not (~)
41
3. İŞLEMLER / Mantıksal İşlemler
VE (&) Operatörü: Bütün koşullar doğru ise sonuç doğrudur.Bütün şartların
sağlatılması isteniyorsa koşullar arasına (VE) mantıksal operatörü kullanılır.
07.11.2015
A
B
A &B , and(A,B)
0
0
0
0
1
0
1
0
0
1
1
1
42
3. İŞLEMLER / Mantıksal İşlemler
VEYA (|) Operatörü: Koşullardan herhangi birisi doğru ise sonuç
doğrudur.
07.11.2015
A
B
A|B, or(A,B)
0
0
0
0
1
1
1
0
1
1
1
1
43
3. İŞLEMLER / Mantıksal İşlemler
Mantıksal işlemlerde öncelik sırası şöyledir:
1. Her zaman parantez içindeki mantıksal işlemler ilk önce yapılır.
2. Değil, yani (~) işleminin diğer mantıksal işlemlere göre önceliği vardır.
3. Son olarak, Ve (&) ve or (|) işlemleri gerçekleştirilir.
07.11.2015
44
3. İŞLEMLER / Mantıksal İşlemler
Örnek 1 : Bir işyerinde çalışan işçiler arasında yalnızca yaşı 23’ün üzerinde olup
maaş olarak 600 TL alanların isimleri istenmektedir.
Eğer
Yaş > 23
& maaş == 600 ise Yaz isim
1. koşul
2. koşul
Yaş
Maaş
1. koşul
2. koşul
Sonuç
Yaz
20
440
0
0
0
Çalışmaz
19
600
0
1
0
Çalışmaz
25
445
1
0
0
Çalışmaz
30
600
1
1
1
Çalışır
07.11.2015
45
3. İŞLEMLER / Mantıksal İşlemler
Örnek 2 : Açıklık açısı problemini düşünelim: (A-B)=atan((YB-YA)/(XB-XA)).
İkinci bölge için,
X
dY=YB-YA; dX=XB-XA olsun
(A-B)
Eger (dY>0) & (dX<0)
(A-B)=(A-B)*200/pi+200
(Tüm hesaplayıcılar RADYAN ile çalışır!)
07.11.2015
A
Y
Hesaplanan
B
46
3. İŞLEMLER / Mantıksal Fonksiyonlar
Sayılar, numeric array (dizi) , karakterler (örneğin, kişi isimleri), character array
olarak tutulurlar:
a=1000
(Numeric array)
b=‘Yildiz’
(Character array)
Bu gibi diziler için bazı mantıksal fonksiyonlar bulunur: Örneğin,
ischar(a)
: a’nın bir karakter olup olmadığını sorgular. Karakterse 1, aksi halde 0
isnumeric(a): a’nın bir sayı olup olmadığını sorgular. Sayı ise 1, aksi halde 0
isempty(a) : a’nın boş dizi olup olmadığını sorgular. Boşsa 1, aksi halde 0 üretir.
07.11.2015
47
4. ALGORİTMA HAZIRLAMA
Algoritma, adımlar halinde probleme çözüm getirecek işlemler dizisidir.
Bu işlemler dizisinin tasarımı da “yukarıdan aşağıya tasarım” olarak bilinir.
Tasarımcı, programa yön verebilecek mantıksal deyim ve ifadeleri tespit eder
ve programı, bu deyimlerin ayırdığı kısımlar halinde alt programlara böler.
Algoritmada,
1. Hangi veri (input) kullanılacak? Bu veriler nereden alınacak?
2. Bunlarla hangi işlemler, nasıl yapılacak?
3. Ne tür sonuçlar (output) üretilecek?
4. Sonuçlar nerede gösterilecek? Nerede saklanacak?
Sorularına açıklık getirilir.
07.11.2015
48
4. ALGORİTMA/ Kullanılan operatörler
Matematiksel işlem
operatörleri
^
Üs alma
*
Çarpma
/
Bölme
+
Toplama
-
Çıkarma
.
Ondalık
kısımları ayırma
Mantıksal işlem
operatörleri
‘
DEĞİL
.
VE
+
VEYA
Karşılaştırma operatörleri
==
Eşittir
<>
Eşit değildir
<
Küçüktür
>
Büyüktür
>=
Büyük eşittir
<=
Küçük eşittir
Genel işlem
operatörleri
= Aktarma operatörü
( ) Parantez operatörü
07.11.2015
49
4. ALGORİTMA/ Kullanılan terimler
1. Tanımlayıcı : Programı yazan kişi tarafından düşünülüp oluşturulan ve
programdaki
- değişkenleri
- sabitleri
- paragrafları
- kayıt alanlarını
- özel bilgi tiplerini
- alt programları vb.
adlandırmak için kullanılan kelimelere denir.
Programdaki tanımlayıcı kelimelerin yerini tuttukları ifadelere çağrışım
yapacak şekilde seçilmesi daha uygundur. Örneğin, “karekök”
07.11.2015
50
4. ALGORİTMA/ Kullanılan terimler
Tanımlayıcılarda İsimlendirme kuralları;
- İngiliz alfabesindeki A-Z arası 26 harf kullanılabilir.
- 0-9 arası rakamlar kullanılabilir.
- tanımlayıcı isimler harf ile başlayabilir.
- tanımlayıcı ismi, rakamla başlayamaz veya sadece rakamlardan oluşamaz .
Bununla birlikte, tanımlayıcının, programın kendisinin veya kullanılan bir
başka alt programın isminde olmamasına dikkat edilmelidir.
07.11.2015
51
4. ALGORİTMA/ Kullanılan terimler
2. Değişken : Programın her çalıştırılmasında farklı değerler alabilen
veya aktarılabilen bilgi alanları değişken olarak ifade edilir.
3. Aktarma: Herhangi bir bilgi alanına, veri yazma, herhangi bir ifadenin
sonucunu başka bir değişkende gösterme gibi görevlerde aktarma operatörü
kullanılır.
değişken = ifade
Herhangi bir değişkenin
ismi
Aktarma operatörü
Matematiksel, mantıksal veya
sayısal olmayan ifade
2. AKTAR
değişken = ifade 1. İşlemi yap
07.11.2015
52
4. ALGORİTMA HAZIRLAMA
Örnek: 1. Başla
2. T = 0
3. Bir sayı (A) gir
4. T = T + A işlemini yap
5. Başka bir sayı gir (B)
6. T = T + B işlemini yap
7. Başka bir sayı gir (C)
8. T = T + C
9. Yaz T
Örnek için çalıştırma sonuçları
İşlem sırası
A
B
C
Eski T
Yeni T
1
3
-
-
0
0+3=3
2
-
4
-
3
3+7=7
3
-
-
5
7
7 + 5 = 12
T = 12
10. Dur
07.11.2015
53
4. ALGORİTMA/ Kullanılan terimler
4. Sayaç: Programlarda bazı işlemlerin belirli sayıda yaptırılması veya işlenen
değerlerin sayılması gerekebilir.
say = say + 1
Şeklindeki işlemde sağdaki ifadede değişkenin eski değerine (1) eklenmekte; bulunan
sonuç yine kendisine yeni değer olarak aktarılmaktadır. Bu tür sayma işlemlerine
algoritmada sayaç veya sayıcı denir.
Sayaç işlem akışı kendisine her geldiğinde belirtilen adım değeri kadar değeri artan
veya azalan değişkendir.
Sayaç değişkeni = sayaç değişkeni
sayacın yeni
değeri
07.11.2015
sayacın eski
değeri

adım
artma veya azalma
miktarı
54
4. ALGORİTMA/ Kullanılan terimler
5. Şartlı deyimler (koşullar): Belirli bir işlemin belirli koşullar altında yapılmasını
sağlayan ifadelere denir. “Eğer” karşılığının program dilindeki ifadesi olan “if” deyimi
böylesi bir şartlı deyime örnektir.
Örneğin, bir A değişkeninin B değişkenine eşit olması durumunda, A’nın C/2 olarak
değiştirilmesini sağlayan bir algoritmayı ele alalım.
1.
2.
3.
4.
5.
6.
7.
Başla
A=99
B=(A+1)*A/100
C=50
Eğer A==B A=C/2
YAZ A
Dur
07.11.2015
A=C/2=25 olacaktır. Çünkü A=B koşulu
sağlanmıştır.
55
4. ALGORİTMA/ Kullanılan terimler
5. Döngü: Programlardaki belirli işlem bloklarını verilen sayıda gerçekleştiren
işlem akış çevrimlerine döngü denir.
Döngüler, programların belli ifadelerinin istenilen sayıda tekrarını sağlarlar.
Örnek : 1- 10 arasındaki tek sayıların toplamını yapan bir algoritma düşünelim.
1.
2.
3.
4.
5.
6.
7.
8.
9.
Başla
T=0
J=1
Eğer J > 10 ise git 8
T=T+J
J=J+2
Git 4
döngü
Yaz T
Dur
07.11.2015
döngünün çalışması
Eski J
Eski T
Yeni T
Yeni J
1
0
0 + 1= 1
3
3
1
1+3=4
5
5
4
4+5=9
7
7
9
9 + 7 = 16
9
9
16
16 + 9 = 25
11
11
-
-
56
4. ALGORİTMA / Avantajları
I.
Program yazmayı kolaylaştırır
II.
Hatalı kodlama oranını azaltır
III. Program yazımı için geçen süreyi kısaltır
IV. İşlem akışını açık bir şekilde gösterdiğinden program kontrolünü
kolaylaştırır
V.
07.11.2015
Sonradan yapılacak düzenlemelerde kolaylıklar sağlar.
57
5. AKIŞ DİYAGRAMLARI
Algoritmanın özel geometrik şekillerle çizilmiş haline akış diyagramı denir.
I. Başla / Dur
Başla
II. Bilgi Girişi
Dur
Bilgisayara dışarıdan veri girişini temsil eden şekildir. Bu şeklin
içine klavyeden girilen bilginin aktarılacağı değişkenin ismi
yazılır.
A, B, C
Programın
III. İşlem
C = (a^2 + b^2)^ 1/2
07.11.2015
çalışması sırasında yapılacak
işlemleri ifade etmek için kullanılan şekildir. İçine
işlem cümleleri/ifadeleri aynen yazılır. Program
akışı buraya geldiğinde, şeklin içerisindeki yazılı
işlem gerçekleştirilir. Birden fazla işlem; aynı şekil
içinde, aralarına virgül konularak veya alt alta
yazılarak gösterilebilir.
58
5. AKIŞ DİYAGRAMLARI
IV. Döngü
Kontrol değişkeni = başlangıç değeri, bitiş değeri, adım
I = 1, 20 ,3
Artan döngü
J = 30, 4 ,-2
Azalan döngü
k = 1, 99
1’er artan döngü
Tek döngü
I = 1, N, 1
07.11.2015
işlem A
59
5. AKIŞ DİYAGRAMLARI
İç içe döngü
İç döngü
I = 1, N, 1
J = 1, N, 1
işlem B
Dış döngü
07.11.2015
60
5. AKIŞ DİYAGRAMLARI
Örnek: 1’den N’e kadar olan sayıların toplamını hesaplayan programın akış
diyagramını çiziniz.
N = 5 girilirse sonuçlar =
07.11.2015
61
5. AKIŞ DİYAGRAMLARI
Örnek: Aşağıdaki akış diyagramının N = 3 için verecegi sonuçları bulunuz.
07.11.2015
62
5. AKIŞ DİYAGRAMLARI
Örnek: Aşağıdaki akış diyagramının sonucunu bulunuz.
07.11.2015
63
5. AKIŞ DİYAGRAMLARI
V. Karar (Karşılaştırma)
algoritmada bir kararın verilmesini ve bu
karara göre iki seçenekten birinin uygulanmasını
sağlayan şekildir. burada eşkenar dörtgen
içerisine kontrol edilecek mantıksal koşul yazılır.
Program akışı sırasında koşulun doğru olması
durumunda "Evet" yazılan kısma Yanlış olması
durumunda "Hayır" yazılan kısma sapılır. Tek
Bir
girişli ve çift çıkışlı bir şekildir.
koşul
H
E
İşlem 1
Bağlantı noktası
İşlem 2
Karşılaştırma işlem şekli
07.11.2015
64
5. AKIŞ DİYAGRAMLARI
VI. Bağlantı
Bağlantı şekli genel anlamda birleştirici bir noktadır. Aşağıdaki amaçlar için
kullanılır:
a) Farklı yerlere dallanan işlem akışlarını tekrar toplamak,
b) Akış diyagramı bir sayfaya sığmadığı zaman diğer sayfadaki akış diyagramı
ile bağlantı kurmak,
c) Parça parça çizilen akış diyagramları arasında bağlantı yapmaktır.
VII. Yazdır / Çıktı
Ekrana veya yazıcıya bilgi yazdırmak için
kullanılır.
VIII. İşlem Akış Yönleri
Akış diyagramında işlem akışının hangi yönde olduğunu
gösteren oklardır.
07.11.2015
65
5. AKIŞ DİYAGRAMLARI
Bu
yapıyı art arda birden çok kez kullanıp aşağıdaki gibi bir karşılaştırma
dizisi oluşturulabilir.
07.11.2015
66
5. AKIŞ DİYAGRAMLARI
ax2+ bx + c = 0 şeklindeki ikinci dereceden bir denklemin köklerini
bulan algoritmayı tasarlayıp akış şeması ile gösteriniz.
Örnek:
E
H
E
07.11.2015
H
67
5. AKIŞ DİYAGRAMLARI
Döngü Yapısı
Bu
yapı kullanılırken, döngü sayacı, koşul bilgisi ve sayacın artım bilgisi
verilmelidir. Döngü sayacı kullanılmıyorsa sadece döngüye devam
edebilmek için gerekli olan koşul bilgisi verilmelidir.
Genel

olarak çoğu programlama dilinin döngü deyimleri ;
•While
•Do-while
•For
gibi
yapılar üzerine kurulmuştur. Farklı dillerde bu yapılara farklı
alternatifler olsa da döngülerin çalışma mantığı genel olarak benzerdir.
07.11.2015
68
5. AKIŞ DİYAGRAMLARI
1. Durum (While)
Koşul
daha çevrim içerisine girmeden sınanır. Koşul olumsuz olduğunda
çevrime hiç girilmez ve döngü içerisinde yapılması gerekenler atlanır.
07.11.2015
69
5. AKIŞ DİYAGRAMLARI
2. Durum (Do-While)
Bu
döngü deyiminde, çevrim en az bir defa olmak üzere gerçekleşir.
Çünkü koşul sınaması döngü sonunda yapılmaktadır. Eğer koşul
sonucu olumsuz ise bir sonraki çevrime geçilmeden döngüden çıkılır.
Çevrimin devam edebilmesi için her döngü sonunda yapılan koşul
testinin olumlu sonuçlanması gerekir.
07.11.2015
70
5. AKIŞ DİYAGRAMLARI
3. Durum (For)
Diğer
deyimlerden farklı olarak, döngü sayacı doğrudan koşul
parametreleri düzeyinde verilir.
Döngü girmeden önce sayaç değişkenine başlangıç değeri atanmakta
ve daha sonra koşula bakılmaktadır. Döngü içerisinde belirtilen işlemler
yapıldıktan sonra sayaç değişkeni arttırılmaktadır.
07.11.2015
71
5. AKIŞ DİYAGRAMLARI
İç içe Döngülerin Kullanılması
İçiçe
döngü kurulurken en önemli unsur, içteki döngü sonlanmadan bir
dıştaki döngüye geçilmemesidir. Diğer bir deyişle döngüler birbirlerini
kesmemelidir.
En
içteki döngü
bir dıştaki
döngünün her
adımında N kez
tekrarlanır.
07.11.2015
72
5. AKIŞ DİYAGRAMLARI
Örnek:
Klavyeden girilen N sayısının faktöriyelini alan algoritmanın akış
diyagramını çiziniz.
 N ile hangi sayının faktöriyelin
hesaplanacağı belirlenir ve N
çevrimlik bir döngü kurulur.
İlk
çevrimde 1!, ikinci çevrimde 2!
ve sırayla N’inci çevrim
sonucunda da N! değeri
hesaplanmış olur.
koşulu oluştuğunda
döngüden çıkılır ve elde
edilen sonuç dış ortama
aktarılır.
Sayac>N
07.11.2015
73