BMS-301 Kabuk Programlama Güz 2015 (5. Sunu) (Yrd. Doç. Dr. Deniz Dal)

Slides:



Advertisements
Benzer bir sunumlar
Kabuk ve Kısayollar-I.
Advertisements

STRİNG FONKSİYONLARI.
Fonksiyonlar.
Bilgisayar Programlama Güz 2011
EKRAN ÇIKTISI.
SCANNER SINIFI ve KLAVYEDEN VERİ OKUNMASI
Bilgisayar Programlama Güz 2011
JAVASCRİPT VERİ TÜRLERİ
OPERATÖRLER Programlama dillerinde tanımlanmış sabit ve değişkenler üzerinde işlemler yapmayı sağlayan karakter ya da karakter topluluklarına operatör.
Bölüm 2 C Dilinin Temelleri
switch - case Yapısı Döngü Yapıları
String Diziler(Katarlar)
C Programlama Diline Giriş
Microsoft Office Word 2010 Bireysel Öğretim Sunumu
Atama ve Girdi/Çıktı Komutları
Bölüm 2 C Dilinin Temelleri Genel Kavramlar
Bilgisayar Programlama (Yrd. Doç. Dr. İbrahim ASRİ)
İnternet Programcılığı II
Bilgisayar Programlama Güz 2011
Görsel C# ile Windows Programlama
Bilgisayar Programlama
Kabuk ve Kısayollar BİLGİSAYAR PROGRAMCILIĞI BÖLÜMÜ
Kabuk Programlama Kerem ERZURUMLU
C++ Temelleri C++ genel amaçlı, nesne tabanlı, yüksek seviye programlama dilidir.
C ile Programlamaya Giriş
Paralel Programlamaya Giriş
İnternet Programlama PHP.
DEĞİŞKENLER VE VERİ TİPLERİ
Kabuk Programlama Kerem ERZURUMLU
İnternet Programcılığı II
PHP.
Editörler Asli Ergün.
İnternet Programlama - 2
BM-103 Programlamaya Giriş Güz 2014 (2. Sunu)
Kabuk işlemleri.
Paralel Programlamaya Giriş
Değerler ve Değişkenler
Fonksiyonlar ile Çalışmak
Kabuk Programlama Shell Scripting(bash)
KABUK İŞLEMLERİ.
Kullanıcı Seçeneklerini Güncelleme Kullanıcı güncelleme işlemi konsol ve grafik ortamdan yapılabilir. Komut Satırı ile Kullanıcı Seçeneklerini Güncelleme.
BMS-301 Kabuk Programlama Güz 2015 (2. Sunu) (Yrd. Doç. Dr. Deniz Dal)
BMS-301 Kabuk Programlama Güz 2015 (6. Sunu) (Yrd. Doç. Dr. Deniz Dal)
Bölüm 3 Atama ve Girdi/Çıktı Komutları Bölüm 3 Atama ve Girdi/Çıktı Komutları Atama Komutu Operatörler İsim Sabitleri Veri Tipi Dönüşümü Çıktı Fonksiyonu.
BMS-301 Kabuk Programlama Güz 2015 (3. Sunu) (Yrd. Doç. Dr. Deniz Dal)
BM-103 Programlamaya Giriş Güz 2012 (3. Sunu)
Adım Adım Algoritma.
SAYISAL ANALİZ Doç.Dr. Cüneyt BAYILMIŞ.
BM-308 Paralel Programlamaya Giriş Bahar 2016 (1. Sunu) (Yrd. Doç. Dr. Deniz Dal)
OTO1004 Bilgisayar Destekli Mühendislik Dersi Sunu No:01 Öğr. Gör. Dr. Barış ERKUŞ.
BİLGİSAYAR PROGRAMLAMA Ders 6: Diziler Yrd. Doç. Dr. Altan MESUT Trakya Üniversitesi Bilgisayar Mühendisliği.
5. HAFTA Mart Discussion: comp.soft-sys.matlab An unmoderated newsgroup that focuses on the.
BÖLÜM 5 AKIŞ DİYAGRAMLARINDAN PROGRAM KODLAMAYA GEÇİŞ
BİLGİSAYAR PROGRAMLAMA DERSİ
Programlamaya Giriş-I Bölüm-1. Algoritma Algoritma günlük yaşamımızda yaptığımız işler sırasında sıklıkla kullandığımız bir yöntemdir. Algoritma, bir.
BİLGİSAYAR PROGRAMLAMA DERSİ 4. DERS NOTU Konu: M-dosya yapısı ve Kontrol Yapıları 1.
Bölüm 3 Atama ve Girdi/Çıktı Komutları
Fonksiyonlar ve Diziler
BİLGİSAYAR PROGRAMLAMA Ders 6: Diziler
Paralel Programlamaya Giriş
BİLGİSAYAR PROGRAMLAMA Ders 10: Dosyalama İşlemleri
BİLGİSAYAR PROGRAMLAMA Ders 6: Diziler
Bölüm 9 Dizgiler Dizgi Tanımı Dizgi Girdi İşlemleri
BMS-301 Kabuk Programlama Güz 2017 (7. Sunu) (Yrd. Doç. Dr. Deniz Dal)
Bilgisayar Programlamasına ve Veri Analizine Giriş
Bilgisayar Programlama
Bilgisayar Bilimi Problem Çözme Süreci-2.
Discussion: comp.soft-sys.matlab
Bölüm 3 Atama ve Girdi/Çıktı Komutları
Dosya/Dizin İzinleri - Dosya sahibinin izinleri (Dosyanın sahibi : u)
Sunum transkripti:

BMS-301 Kabuk Programlama Güz 2015 (5. Sunu) (Yrd. Doç. Dr. Deniz Dal)

Kabuk Programlama Bundan önceki derslerimizde öğrendiğimiz linux/kabuk komutlarını bir dosya içerisinde alt alta yazarak (gerektiğinde onları diğer programlama yapıları ile birleştirerek) onların ard arda çalışmasını sağlayabiliriz. Bu sayede komutların girdi ve çıktıları birbirleriyle ilişkilendirilerek belirli işlevler gerçekleştirilebilir. Bu yapı ile oluşturulan ve hazırlanan komut dizisi kabuk programı (shell script) olarak adlandırılır. Bilgisayar programlamayı öğrenirken kullandığımız ve artık geleneksel hale gelen ekrana Merhaba Dünya çıktısı veren bir programın kabuk için nasıl yazılacağı ve çalıştırılacağı sonraki slaytlarda adım adım anlatılmıştır.

Merhaba Dünya Bir komut penceresi editörü (nano veya vim) veya bir grafik editör (gedit) kullanarak ev dizininizde Merhaba.sh adlı bir dosya oluşturunuz, içerisine aşağıdaki 2 komutu yazınız ve kaydederek çıkınız. (Dosyanıza .sh uzantısını vererek onun bir kabuk programı olduğunu daha sonra kolayca anlayabilirsiniz.) #!/bin/bash #İlk Kabuk Programım echo "Merhaba Dünya"; Daha sonra konsol penceresini açınız ve dosyanıza chmod u+x komutuyla çalıştırma izni veriniz. ddal@pardus2011 scripts $ chmod u+x Merhaba.sh

Hatırlatma ddal@pardus2011 scripts $ gedit Merhaba.sh Komut penceresinde çalıştırdığınız bir komutun arka planda çalışmaya devam etmesini ve komut penceresinin kontrolünü size devretmesini isterseniz enter tuşundan önce & karakterini tuşlamalısınız. (run the command in the background)

Merhaba Dünya Bu adımlardan sonra kabuk programınızı (kabuğunuzun bulunduğu mevcut dizin üzerinden) aşağıdaki şekilde çalıştırabilirsiniz. ddal@pardus2011 scripts $ ./Merhaba.sh Merhaba Dünya Yazdığınız kabuk programına çalıştırma hakkı vermeden de bash komutuyla çalıştırabilirsiniz. ddal@pardus2011 scripts $ bash Merhaba.sh On Unix, usually, the current directory is not in $PATH. When you type a command the shell looks up a list of directories, as specified by the PATH variable. The current directory is not in that list. The reason for not having the current directory on that list is security. The ./ says 'look in the current directory for my script rather than looking at all the directories specified in $PATH'.

Hatırlatma Bir kabuk programı illa da kaydedildiği dizin (klasör) üzerinden çalıştırılmak zorunda değildir. Bir önceki slayttaki kabuk programı aşağıdaki gibi de çalıştırılabilir. ddal@pardus2011 /$ /home/ddal/scripts/Merhaba.sh Merhaba Dünya ddal@pardus2011 ~$ ./scripts/Merhaba.sh

Merhaba Dünya Kabuk programlarının ilk satırındaki: #!/bin/bash ifadesi programın çalışacağı kabuğu belirtir. (Örneğin bu durumda bash kabuğu) Eğer belirtilmezse program üzerinde bulunulan kabuk tarafından çalıştırılır. Kabuk programının yazılım farklarından kaynaklanan hatalarla karşılaşmaması için programın çalıştırılacağı kabuk programı yukarıdaki gibi dosyanın ilk satırında belirtilmelidir. Program dosyanızın ilk satırı (#!) dışındaki herhangi bir yerde # işaretinden sonra kullanılan ifadeler açıklama satırı olarak kabul edilirler ve kabuk programı tarafından yorumlanmazlar.

Değişkenler Değişkenler (variables) bir programın çalışması boyunca gerekli olan verileri saklayan ve gerektiğinde bunları değiştirmeye imkan sağlayan programlama yapılarıdır. Değişkenler programda kullanılan bir sayı değerini (tam veya ondalıklı sayı) ya da bir karakter dizisini (string) saklamak amacıyla kullanılabilirler. Değişkenler Linux kabuklarında = (atama operatörü) ile tanımlanırlar. Değişkenler tanımlanırken = ile ifadeler arasında boşluk bulunmamasına dikkat edilmelidir. Ayrıca değişken tanımlanırken değişken adının önünde herhangi bir sembol bulunmamalıdır, fakat program içerisinde kullanılırken değişken isimlerinin önüne $ sembolü getirilmelidir.

Değişkenler ddal@pardus2011 scripts $ kullaniciYasi=33 ddal@pardus2011 scripts $ kullaniciAdi="Deniz DAL" ddal@pardus2011 scripts $ kullaniciEmaili="ddal@atauni.edu.tr" ddal@pardus2011 scripts $ echo $kullaniciYasi 33 ddal@pardus2011 scripts $ echo $kullaniciAdi Deniz DAL ddal@pardus2011 scripts $ echo $kullaniciEmaili ddal@atauni.edu.tr Yukarıda kullaniciYasi, kullaniciAdi ve kullaniciEmaili isimlerinde üç adet değişken tanımlanmıştır ve daha sonra bu değişkenlerin değerleri echo komutuyla ekrana yazdırılmıştır.

Kabuk Programlarına Klavyeden Veri Girişi ve read Komutu Değişkenlere programın çalışması sırasında dışarıdan değer atanabilir ve bu işlem read komutu ile gerçekleştirilir. Aşağıdaki kabuk programını bir metin editöründe yazarak ve dosya adı olarak DegerOku.sh kullanarak kaydediniz. (echo komutuna –n seçeneği verilerek tırnak işareti içerisindeki bilgi ekrana yazdırıldıktan sonra imlecin bir alt satıra gitmesi engellenir.) #!/bin/bash echo –n "Kullanıcı Adınızı Giriniz: "; read kullaniciAdi; echo "Girdiğiniz Kullanıcı Adı: $kullaniciAdi";

Kabuk Programlarına Klavyeden Veri Girişi ve read Komutu Daha sonra yazdığınız DegerOku.sh adlı programınızı konsol üzerinde aşağıdaki gibi çalıştırınız. ddal@pardus2011 scripts $ chmod u+x DegerOku.sh ddal@pardus2011 scripts $ ./DegerOku.sh Kullanıcı Adınızı Giriniz: ddal Girdiğiniz Kullanıcı Adı: ddal

echo Komutu ve –e Seçeneği echo komutunun –e (escape) seçeneğinin ne işe yaradığını araştırınız.

printf printf "Surname: %s\nName: %s\n" "$SURNAME" "$FIRSTNAME"; printf "%d\n" 5; printf "%f\n" 5; printf "There are %d customers with purchases over %d.\n" 50 20000; printf "%10d\n" 11; printf "%-10d %-10d\n" 11 12; printf "%10.5f\n" 17.2;

Aritmetik İşlemler Kabuk programlarında aritmetik işlemler için let komutu veya (( )) karakter grubu kullanılabilir. Toplama için +, çıkarma için -, çarpma için *, bölme için / , üs alma için ** ve kalan bulmak için % operatörleri kullanılır. (Bir sonraki slayttaki programı Aritmetik.sh adlı dosyanın içerisine yazınız. Satır başlarındaki rakamları kullanmayınız. O satırlar programı açıklamak üzere eklenmiştir.)

Aritmetik.sh 01 #!/bin/bash 02 #Değişken tanımlamaları 03 a=5; 04 b=3; 05 #Doğrudan hesaplama 06 ((sonuc=a+b)); 07 echo $sonuc; 08 #'let' komutu ile toplama 09 let sonuc=a+b; 10 echo $sonuç; 11 #'let' komutu ile çarpma 12 let sonuc=a*b; 13 echo $sonuc;

Aritmetik.sh 3. ve 4. satırlarda a ve b değişkenlerine başlangıç değerleri, 6. satırda ise sonuc değişkenine a ve b değişkenlerinin toplamı atanmıştır. Aritmetik işlemler (( )) arasında değişkenlerin değerlerini okumak amacıyla ihtiyaç duyduğumuz $ işaretsiz gerçekleştirilebilirler. let komutu ile de aritmetik işlemler gerçekleştirilebilir. 9. satırda a ve b değişkenlerinin değeri toplanarak sonuc değişkenine atanmıştır. 12. satırda ise let komutu kullanılarak çarpma işlemine bir örnek verilmiştir. Hesaplamalardan sonra echo komutuyla sonuçlar ekrana yazdırılmıştır. ddal@pardus2011 scripts $ ./Aritmetik.sh 8 15

bc Komutu (basic calculator) $echo "57+43"|bc 100 $echo "57-43"|bc 14 $echo "57*43"|bc 2451 $echo "scale=25;57/43"|bc 1.3255813953488372093023255 $echo "scale=30;sqrt(2)"|bc 1.414213562373095048801688724209 $echo "6^6^6"|bc $echo "(7+6)*5"|bc 65 $echo "obase=16;255"|bc FF $echo "obase=2;12"|bc 1100 $echo "ibase=2;obase=A;10"|bc 2 $echo "ibase=2;obase=A;10000001"|bc 129 $echo "ibase=16;obase=A;FF"|bc 255 $sayi=5;echo "$sayi^2"|bc 25 $sayi=16;echo "$sayi/3"|bc -l 5.33333333333333333333 $a=22 $b=7 $echo "$a/($b-34)"|bc -l -.81481481481481481481 -l seçeneği scale değişkenine varsayılan olarak 20 değerini atayan matematik kütüphanesini çağırır. http://www.basicallytech.com/blog/?/archives/23-command-line-calculations-using-bc.html