Temel Bilgisayar Programlama Final Sınavı Çalışma Notları

Benzer belgeler
BİL1001 Bilgisayar Bilimlerine Giriş 1

BLM-112 PROGRAMLAMA DİLLERİ II. Ders-8 Dosya İşlemleri-1. Yrd. Doç. Dr. Ümit ATİLA

Diziler. Yrd.Doç.Dr.Bülent ÇOBANOĞLU

Yrd. Doç. Dr. Caner ÖZCAN

ELN1002 BİLGİSAYAR PROGRAMLAMA 2

DİZİLER-KATARLAR ALGORİTMA VE PROGRAMLAMA II

ALGORİTMA VE PROGRAMLAMA I DERS NOTU#8

mod ile açılacak olan dosyanın ne amaçla açılacağı belirlenir. Bunlar:

Diziler (Arrays) Çok Boyutlu Diziler

BLM-111 PROGRAMLAMA DİLLERİ I. Ders-12 Fonksiyonlar. Yrd. Doç. Dr. Ümit ATİLA

HSancak Nesne Tabanlı Programlama I Ders Notları

Eln 1002 Bilgisayar Programlama II

Hafta 12 Karakter Tutan Diziler

ALGORİTMA VE PROGRAMLAMA I

Dizgiler. C dilinde karakter m şeklinde tek tırnak içerisinde yazılan ifadelerdir. Bu karakterlerin her biri aslında bir tamsayı ile ifade edilir.

Değişkenler, içerisinde tek bir değer tutabilen yapılardır. Örneğin haftanın günlerini değişkenlerde tutmak istersek, her bir gün adı için bir

Özyineleme (Recursion)

C PROGRAMLAMA D İ L İ

KOCAELİ ÜNİVERSİTESİ BİLGİSAYAR MÜHENDİSLİĞİ. BİLGİSAYAR LABORATUVARI II FİNAL SINAVI SORU ve CEVAPLARI(I. ogr)

DOSYA İŞLEMLERİ Programlama dilleri hafta -

Temel Bilgisayar Programlama

Genel Programlama II

Giriş. ENF102 Jeoloji

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

Örnek 4: Örnek Özyinelemeli fonksiyon örneği Bölüm 9. C++ programlama dilinde Nesne ve sınıf

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

Fonksiyonlar. C++ ve NESNEYE DAYALI PROGRAMLAMA 51. /* Fonksiyon: kup Bir tamsayının küpünü hesaplar */ long int kup(int x) {

Eln 1001 Bilgisayar Programlama I

Metin Dosyaları. Metin Dosyaları Dosya Açma ve Kapama Dosya Okuma ve Yazma Rastgele Erişim Standart Girdi/Çıktı Hata Kontrolü

Dizi nin Önemi. Telefon rehberindeki numaralar, haftanın günleri gibi v.b.

Hafta 13 Fonksiyonlar

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

BMB1002 Bilgisayar Programlamaya Giriş. Dosyalar. Prof. Dr. Necmettin Kaya

Sınav tarihi : Süre : 60 dak.

Sınav tarihi : Süre : 60 dak. a) strstr b) strchr c) strcat d) strcpy e) strlen. a) b) d) e) 0

İstanbul Teknik Üniversitesi IEEE Öğrenci Kolu DİZİLER

ALGORİTMA VE PROGRAMLAMA I

DİZİLER 5/4/2010. ENF-102 Jeoloji Giriş. Tek Boyutlu Diziler. Tek Boyutlu Diziler. Örnek. Örnek

Yrd. Doç. Dr. Caner ÖZCAN

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

BLM-111 PROGRAMLAMA DİLLERİ I. Ders-11 Karakter Diziler. Yrd. Doç. Dr. Ümit ATİLA

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

PROGRAMLAMAYA GİRİŞ DERS 2

enum bolumler{elektronik, insaat, bilgisayar, makine, gida};

ALGORİTMA VE PROGRAMLAMA I

Diziler İndisli Değişkenler

10. DOSYA GİRİŞ ÇIKIŞ FONKSİYONLARI

ALGORİTMA VE PROGRAMLAMA II

Dr. Fatih AY Tel: fatihay@fatihay.net

Telefon Rehberi Uygulaması

Adı soyadı :... Öğrenci no :... İmza :... Tarih, Süre : dak.

Final Sınavı Soruları Güz, Süre: 90 Dakika

ÇOK BOYUTLU DİZİLER VE DİNAMİK BELLEK YÖNETİMİ İLE İLGİLİ ÖRNEKLER

Temel Bilgisayar Programlama

Programlama Dilleri. C Dili. Programlama Dilleri-ders08/ 1

AHMET YESEVİ ÜNİVERSİTESİ BİLİŞİM SİSTEMLERİ VE MÜHENDİSLİK FAKÜLTESİ BİLGİSAYAR MÜHENDİSLİĞİ LİSANS DÖNEM ÖDEVİ

Temel Giriş/Çıkış Fonksiyonları

String ve Karakter Dizileri. Yrd. Doç. Dr. Fehim KÖYLÜ Erciyes Üniversitesi Bilgisayar Mühendisliği Bölümü

YAPILAR (STRUCTURES)

Strings(Karakter Dizisi)

Değişkenler. Geçerli değişken isimleri : baslamazamani, ad_soyad, x5 Geçersiz değişken isimleri : 3x, while

Görsel Programlama DERS 03. Görsel Programlama - Ders03/ 1

Diziler. Dizi Tanımı Dizi Elemanlarına Değer Atama Diziler ve Göstergeler 2-Boyutlu Diziler

Ders 4: Diziler (Arrays( Arrays) barisgokce.com

C Programlama Dilininin Basit Yapıları

BLM-111 PROGRAMLAMA DİLLERİ I. Ders-10 Diziler. Yrd. Doç. Dr. Ümit ATİLA

Bölüm 8, Yrd. Doç. Dr. A. Kadir YALDIR PAÜ Bilgisayar Mühendisliği Bölümü BÖLÜM 8: DİZİLER

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

BMÜ-111 Algoritma ve Programlama. Bölüm 5. Tek Boyutlu Diziler

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

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

Algoritma Geliştirme ve Veri Yapıları 9 Ağaç Veri Modeli ve Uygulaması. Mustafa Kemal Üniversitesi

BLM111 Programlama Dilleri I. Hafta 10 Diziler. Yrd. Doç. Dr. Caner ÖZCAN

Bir dizinin boyutları sabittir ve kullanılmadan önce belirlenmelidir. Dizi boyutunu belirlemek için başka bir değişkende kullanabilirsiniz.

ALGORİTMA VE PROGRAMLAMA I

BİLGİSAYAR UYGULAMALARI Şırnak Üniversitesi Mühendislik Fakültesi Güz Dönemi Arş.Gör. Eren DEMİR ve Arş.Gör. Veysel KIŞ (

Yrd. Doç. Dr. A. Burak İNNER Bilgisayar Mühendisliği

Temel Bilgisayar Bilimleri Ders Notu #4-2. kısım

8. Bölüm DİZİLER. tip dizi_ismi[eleman_sayısı]; Bütün diziler 0 ile baţlar.

Veri Yapıları. Amaçlar: Temel Veri Yapılarını Tanımlamalı Veri Yapılarını Veri Modeli ve Türlerini Öğreneceksiniz. İçindekiler:

elemanlarının gezilmesine yönelik bir örnek sunulmuştur, inceleyiniz.

Programlama Dilleri 3

JAVADA DİZİ İŞLEMLERİ

Genel Programlama II

Pointer Kavramı. Veri Yapıları

Programlama Dilleri 1. Ders 4: Diziler

şeklinde tanımlanmıştır. O halde, dosyaları daha önceki bilgilerimizi kullanarak FILE *Dosya1, *Dosya2;

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

C++ Dersi: Nesne Tabanlı Programlama

Fonksiyonlar (Altprogram)

C ile Uygulamalar 2 - Cevaplar

Göstericiler (Pointers)

BİL-142 Bilgisayar Programlama II

Bigisayar Programlama

BLM 111 Algoritma ve Programlama I Güz 2018

ALGORİTMA VE PROGRAMLAMA II

ALGORİTMA VE PROGRAMLAMA II

Temel Dosya İşlemleri. Kütük Organizasyonu 1

8. İŞARETCİLER (POINTERS)

ELN1002 BİLGİSAYAR PROGRAMLAMA 2

Transkript:

Diziler Temel Bilgisayar Programlama Final Sınavı Çalışma Notları (Dr. Övünç ÖZTÜRK, Dr. Tahir Emre KALAYCI) (İnşaat Mühendisliği ve Gıda Mühendisliği Grupları İçin) Diziler aynı türden bilgileri saklamak için kullanılan veri yapılarıdır. Belirli sayıda aynı türden veriyi bellekte saklamak için kullanılan değişkenler listesidir. C programlama dilinde dizileri tanımlamak için köşeli parantezlerden yararlanılır. int a[5]; ifadesi 5 adet tamsayı değer içeren a ismindeki tamsayı dizisini tanımlama ifadesidir. Dizilerin içerdiği değerlere elemanlara yine köşeli parantezlerle erişiriz. Köşeli parantezler içerisinde verdiğimiz sayı indistir. İlk eleman saymaya sıfırdan başladığımız için a[0], ikinci eleman a[1] ve son eleman boyuttan bir eksik indis değerine sahip a[4]'tür. Tek boyutlu diziler yukarıda tanımladığımız a dizisi gibi olan mutlaka boyut bilgisi, dizi türü ve dizi adı verilerek tanımlanmalıdır. Dizilere başlangıç (ilk) değer ataması küme parantezleri ile yapılabilir: int a[5] = {1,2,3,4,5; yukarıdaki şekilde tanımlanmış bir dizinin ilk elemanı (a[0]) 1 değerine, son elemanı da (a[4]) 5 değerine sahiptir. Birden fazla boyuta sahip olan dizilere çok boyutlu diziler denilmektedir. Çok boyutlu diziyi tek boyutlu dizilerde olduğu gibi köşeli parantezlerle her bir boyut için eleman sayısı vererek tanımlıyoruz. Örnek olarak 2 boyutlu bir diziyi ki bu dizi bir matristir aşağıdaki şekilde tanımlayabiliriz: int matris[3][3]; yukarıdaki şekilde tanımlanan matris ismindeki iki boyutlu tamsayı dizisinin 3 satır ve 3 sütundan oluşan bir tablo yapısı vardır. İlk değer ataması yine küme parantezleriyle yapılır: int matris[2][2] = {{1,1,{2,2; görüldüğü gibi her bir boyut için bir dizi tanımlanıyormuş gibi ek küme parantezleri kullanılabilmektedir. Bu dizinin görünümü şu şekilde olacaktır: 1 1 2 2 Çok boyutlu dizilerde de indislerden yararlanılarak elemanlara erişim sağlanır (saymaya yine sıfırdan başlıyoruz). printf( %d, matris[1][1]); ifadesi ekranda 2 (2. satırın 2. sütundaki elemanı sayma sıfırdan başlıyor) yazılmasını sağlayacaktır. Dizilerde Arama ve Sıralama Kullanıcının girdiği verilerle oluşturulmuş bir dizide yine kullanıcının girdiği bir değerin aranması örnek kodu aşağıdadır. //Basit bir dizi arama ornegi

main(){ int boyut; //dizinin eleman sayisini kullanicidan alalim scanf("%d", &boyut); int dizi[boyut]; int i; //diziye elemanlari okuyalim scanf("%d",&dizi[i]); //simdi aranacak olan degeri isteyelim int aranan; scanf("%d", &aranan); //dizide arayalim //diziyi dolasarak karsilastirma yoluyla ariyoruz if(dizi[i]==aranan){ printf("bulundu:%d",i); //buldugumuz icin dongunun devam etmesine gerek yok break; Kullanıcının girdiği verilerle oluşturulmuş bir dizinin küçükten büyüğe sıralanması örnek kodu aşağıdadır. //Basit bir dizi siralama ornegi main(){ int boyut,i,j,temp; //dizinin eleman sayisini kullanicidan alalim scanf("%d", &boyut); int dizi[boyut];

//diziye elemanlari okuyalim scanf("%d",&dizi[i]); //simdi diziyi kucukten buyuge siralayalim for(j=i+1;j<boyut;j++) //> yerine < kullanirsak buyukten kucuge siralar if(dizi[i]>dizi[j]){ //yer degistirelim temp = dizi[i]; dizi[i] = dizi[j]; dizi[j] = temp; //siralanmis diziyi goruntuleyelim printf("%d\n",dizi[i]); Karakter Dizileri Özel bir dizi türü olarak karakter dizileri önemli bir yer tutar. Karakter dizileri metinsel ifadelerin kolay bir şekilde sistemde saklanması için kullanılır. Belirli sayıda karakteri bellekte saklamak için kullanılan özel dizilerdir. Tanımlarken dizi tanımlamadaki aynı yöntemden yararlanılır: char karakterler[15]; Karakter dizilerine katarlar, stringler vb. isimler de verilmektedir. Karakter dizilerinin son elemanı her zaman için \0 (NULL) karakteridir. Karakter dizisinin tanımlarken verdiğimiz uzunluk miktarı o dizinin üst sınırını belirlerken atama yaptığımızda dizinin asıl karakter sayısı uzunluğu ortaya çıkacaktır. Tanımlamaları çift tırnak ile gerçekleştirebiliriz: char dizi[10] = Deneme ; Karakter dizilerini kullanıcıdan almak için gets ve ekranda görüntülemek için puts hazır fonksiyonlarından yararlanılır. Bu fonksiyonlar parametre olarak karakter dizisi alırlar: gets(dizi); puts(dizi); Karakter dizilerinde kullanılmak üzere hazır fonksiyonlar vardır. Bu hazır fonksiyonlar için string.h dosyasının içe aktarılması gerekmektedir (#include <string.h>). Bu fonksiyonlar ve işlevleri şöyledir: strcpy(dizi1, dizi2): dizi2 karakter dizisindeki karakterleri dizi1 karakter dizisine kopyalar strcat(dizi, Deneme ): dizi karakter dizisine ikinci parametrede verilen karakterleri ekler

strcmp(dizi1, dizi2): dizi1 ve dizi2 karakter dizilerini karşılaştırır. Eğer ikisi eşitse 0 tamsayı değerini döndürür. strlen(dizi): karakter dizisinin uzunluğunu içerdiği karakter sayısını - bulur Dosya İşlemleri Bilgisayar tarafından işlenen tüm veriler en alt seviyede yalnızca 1 ve 0 lardan oluşur. Bilginin bu en küçük parçasına bit adı verilir. Bit ler birleşerek karakterleri oluştururlar. Bir karakter 8 bit tir. Sahalar karakterlerin birleşmesiyle oluşurlar. Örneğin bir kişinin ismi bir sahadır. Bir kayıt birden fazla saha dan oluşur. Örneğin bir kişinin kimlik bilgileri bir kaydı oluşturur (numarası adı soyadı sahalarından oluşur). Kayıtların saklanabilmesi için dosyalar kullanılır. Her kayıt için o kaydı tanımlayan bir kayıt anahtarı bulunur. Kayıt anahtarına göre sıralı olarak düzenlenen dosyalara sıralı dosyalar denir. C dili her dosyayı bir sıralı byte akımı olarak görür. Her dosyanın sonunda özel bir sonlandırıcı karakter bulunur. Açılan her dosya bir akım la ilişkilendirilir. Akımlar dosya ve programlar arasında iletişim kanalı görevi görürler. Ekrana özel tanımlanmış akımlar stdin ve stdout tur. Sıralı erişimli dosyalar dosyanın başından bitimine kadar kayıtları sırayla okuduğumuz dosyalardır. Bu dosyalara erişim ve okuma-yazma işlemleri için tanımlanmış hazır fonksiyonlar vardır: fopen(dosya_adi, acma_amaci): Dosyayı açmak için kullandığımız fonksiyondur. Açma amacı r okuma amaçlı, w yazma amaçlı ve a ekleme amaçlı olabilir. Bu fonksiyon dosyayı başarılı bir şekilde açarsa geri dönüş değeri olarak FILE* tipinde bir değer döndürür (Kullanım: FILE *dosya=fopen( yeni.txt, r );). feof(dosya): Dosya sonunu kontrol eden fonksiyondur. fgets(karakter_dizisi, karakter_sayisi,dosya): Dosyadan karakter_sayisi kadar karakteri karakter_dizisi değişkenine okuyan-kopyalayan fonksiyondur. fprintf(dosya,"dosyaya eklenecek metin ): Dosyaya eklenecek-yazılacak olan metni eklemeye-yazmaya yarayan fonksiyondur. Bu fonksiyon ilk parametresi dışında printf şeklinde kullanılmaktadır. Eğer w amacıyla açtıysak dosya eğer varsa yeniden yaratılıp içerisindeki bilgileri silinmektedir. a amacıyla açtıysak dosya varsa eklediklerimiz sonuna eklenmektedir. fclose(dosya): Dosya ile işimiz bittiğinde dosyanın mutlaka kapatılması gerekir. Bu durumda dosya kapatma fonksiyonu olan fclose kullanılmalıdır. Dosya Okuma Örneği: /** Bir metin dosyasini acma, ve satir satir okuma */ void main() { FILE *dosya; //dosyayi okuma amacli acalim

dosya = fopen("ogrenciler.txt", "r"); //dosya var ve duzgun acildiysa if(dosya){ char satir[80]; while (!feof(dosya)) { fgets(satir, 80, dosya); printf(satir); else { printf("dosya bulunamadi.\n"); //isimiz bitti kapatalim fclose(dosya); Dosya Yazma Örneği: /** Bir metin dosyasini acma, ve satir satir yazma */ void main() { FILE *dosya; //dosyayi yazma amacli acalim dosya = fopen("yenidosya.txt", "w"); int i; for(i=0;i<10;i++){ fprintf(dosya,"yeni Satır:%i\n", i); //isimiz bitti kapatalim fclose(dosya); Dosyaya Ekleme Örneği: /** Bir metin dosyasini acma, ve sonuna ekleme yapma

*/ void main() { FILE *dosya; //dosyayi ekleme amacli acalim dosya = fopen("yeniogrenciler.txt", "a"); int i; for(i=0;i<10;i++){ fprintf(dosya,"%d\tali Veli\tİnşaat\n",i); //isimiz bitti kapatalim fclose(dosya); Kaynakça: Deitel & Deitel, C ve C++, Sistem Yayıncılık, 2010. Y. Özkan, C ile Programlama, Alfa Yayınları, 2003. M. Veine, C Programming for the Absolute Beginner, Thomson, 2008. A. Bingül, C Programlama Dili'ne Giriş, http://www1.gantep.edu.tr/~bingul/c/ Ç. Çebi, C Programlama Dersleri, http://www.cagataycebi.com/programming/c_programming/ F. Kadifeli, A. C. C. Say, M. U. Çağlayan, C Programlama Dili, 2007, http://www.kadifeli.com/fedon/stdcprtr.php