YAPILAR (STRUCTURES)

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

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

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

BÖLÜM 9: POINTERLER (İŞARETÇİLER)

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

BÖLÜM 11: YAPISAL VERİ TİPLERİ

Programlama Dilleri 1. Ders 4: Diziler

Programlama Dilleri 1. Ders 5: Göstericiler

#include<stdio.h> #include<string.h> #include<stdlib.h> typedef struct { int ID; char isim[15]; char soyisim[15];

elemanlı bir dizide bir sinyalin 1 er saniye aralıklarla ölçülen gerilim değerleri tutulmaktadır. Bu sinyalin tepeden tepeye genliğini,

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

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

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İ

BLM 111 ALGORİTMA VE PROGRAMLAMA I

Genel Programlama II

Değişkenler tanımlanırken onlara ne tür veriler atanabileceği de belirtilir. Temel veri türleri oldukça azdır:

8. İŞARETCİLER (POINTERS)

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

BLM 111 ALGORİTMA VE PROGRAMLAMA I

BİLG Dr. Mustafa T. Babagil 1

Arasınav Sınavı Soruları Güz 2017 Süre: 90 Dakika

ALGORİTMA VE PROGRAMLAMA II

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

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

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

Telefon Rehberi Uygulaması

ELN1001 BİLGİSAYAR PROGRAMLAMA I

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

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

3/7/2011. ENF-102 Jeoloji 1. Tekrar -- Değişken Tanımlamaları (Definition) ve Veri Türleri (Data Type) Veri Tanımları ve Mantıksal Đşlemler

enum, struct, union ve typedef Yapıları

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

Özyineleme (Recursion)

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

Birlik (Union) 1 Birlik (Union), enum, typedef

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

printf("\nbilgilerini goruntulemek istediginiz ogrencinin numarasini girin: "); scanf("%d",&no);

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

Başkent Üniversitesi Mühendislik Fakültesi Güz Yarıyılı BİL 101-Bilgisayar Yazılımı I Arasınavı

int main(void) { int num = 0; int input = 1; int retval = 0; struct NODE *nodepointer; nodepointer = (struct NODE *)malloc(sizeof(struct NODE));

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

Sınav tarihi : Süre : 60 dak. a) ABCDE b) BCDE c) ABCD d) kod hatalı e) BCD

Yrd. Doç. Dr. Caner ÖZCAN

BLM 112- Programlama Dilleri II. Hafta 4 İşaretçiler (Pointers)

Pointer Kavramı. Veri Yapıları

EBG101 PROGRAMLAMA TEMELLERİ VE ALGORİTMA

Bil Hafta Çalışma Soruları (Yanıtlar)

Diziler (Arrays) Çok Boyutlu Diziler

Giriş. ENF102 Jeoloji

Operator Aşırı Yükleme (Operator OverLoading)

BİLİNİRLİK ALANI ve ÖMÜR, KONTROL DEYİMLERİ

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

Jval tipi. Genel veri yapılarını kullanacağımız zaman Jval den faydalanırız.önemli olanlar aşağıda mevcuttur:

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

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

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

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

Programlamaya Giriş. Program : Belirli bir problemi çözmek için bir bilgisayar dili kullanılarak yazılmış deyimler dizisi.

Algoritma Geliştirme ve Veri Yapıları 3 Veri Yapıları. Mustafa Kemal Üniversitesi

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

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

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

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

Göstericiler (Pointers)

Yrd. Doç. Dr. Caner ÖZCAN

2) /* Kullanıcıdan alınan iki sayının obebini alt fonksiyon yardımı ile hesaplayan C programı*/

C PROGRAMLAMA D İ L İ

Karakter katarları ile ilgili fonksiyonlar içerir Yerel kayan noktalı sayılar tanımlanır

BİL1001 Bilgisayar Bilimlerine Giriş 1

Giris {\} /\ Suhap SAHIN Onur GÖK

#include<stdio.h> #include<conio.h> #define doktorsayisi 3. typedef struct dr{ int ay1, ay2, ay3, ay4; } doktor; float hesapla(doktor dktr){

ALGORİTMA VE PROGRAMLAMA II

Yrd. Doç. Dr. Caner ÖZCAN

Temel Giriş/Çıkış Fonksiyonları

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

Fall Object-Oriented Programming Laboratory 02 - Structures

Örnek: İki fonksiyondan oluşan bir program. Fonksiyon Tanımı

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

C PROGRAMLAMA D İ L İ

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

ARA SINAV 07.Nisan 2015

Döngü blokunda tek bir deyim varsa {} yazılmayabilir.

C++ Giriş Ders 1 MSGSU Fizik Bölümü Ferhat ÖZOK Kullanılacak kaynak: Published by Juan Soulié

ALGORİTMA VE PROGRAMLAMA II

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

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

C ile Uygulamalar 4 - Cevaplar

NOT: Bu kodlar çeşitli internet siteleri, üniversite siteleri ve ders kitaplarından derlenerek hazırlanmıştır.

T.C. YILDIRIM BEYAZIT ÜNİVERSİTESİ SAĞLIK HİZMETLERİ MESLEK YÜKSEKOKULU STAJ DEFTERİ

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

Nesne Tabanlı Programlama

MAK 1005 Bilgisayar Programlamaya Giriş. Fonksiyonlar. Prof. Dr. Necmettin Kaya

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

Dizi ( Array ) ve Dizgi ( String )

C Programlama Dilininin Basit Yapıları

NESNEYE YÖNELİK PROGRAMLAMA C++ a Giriş

sayi=3 harf=a reelsayi=8.72 Bellek durumu 5. İşaretç iler (pointers)

BİLG Dr. Mustafa T. Babagil 1

C Programlama Dilinde Değişkenler

C++ Dersi: Nesne Tabanlı Programlama

Transkript:

YAPILAR (STRUCTURES) Yapılar, dizilere benzeyen ancak farklı tipten verileri bir arada tutan bütün olarak tanımlanabilir. Yapıların kullanılmasının esas sebebi de budur. Yapı tipi aslında yeni bir tip değildir, varolan tiplerden meydana gelir. Yapılar bilgiyi daha düzenli tutmak adına önemlidir. Örnek verecek olursak bir öğrencinin bilgilerini tutmak istediğimizde: isim, soyisim, yaş, numara, gibi bilgileri mantıksal bir bütünlük saüğlayacak şekilde yapı icerisinde tutabiliriz. Bunu şu şekilde gösteririz: Örnek: struct OgrenciYapi{ ; struct OgrenciYapi ogrenci1; struct OgrenciYapi ogrenci2; //Birinci değişkenimiz //İkinci değişkenimiz Artık OgrenciYapi adında bir veri tipi vardır ve bu tip toplamda 4 üyeden oluşur(isim, soyisim,yaş ve numara). Nasıl ki int sayi1; deyip sayi1 adında tamsayı tipinde bir değişken tanımlayabiliyorsak artık OgrenciYapi ogrenci1; ile de OgrenciYapi tipinde ve ogrenci1 adında değişkenimizi yaratmış oluruz. İstersek ikinci bir değişkeni de benzer şekilde yaratabiliriz. Tanımlama genel olarak şu şekilde yapılır: struct YapıAdı { Uye1; Uye2; Uye3;... Uye_n; ;

Bu tipte bir değişken ise struct YapıAdı DeğişkenAdı; şeklinde yapılır. Yukarıdaki bildirimi aynı sonucu verecek şekilde şöyle de yapabilirdik(yapı bildirimi ile o tipte bir değişken yaratma aynı anda yapılıyor ): struct OgrenciYapi{ ogrenci1; Eğer birden fazla değişken tanımlamak istiyor isek şöyle de yapabiliriz: struct OgrenciYapi{ ogrenci1,ogrenci2,ogrenci3,ogrenci4; Yapıların bildirim yerinden de bahsedecek olursak; yapılar tüm bildirimlerde olduğu gibi global ya da yerel düzeyde yapılabilir. Yapıların Kapladığı Bellek Alanı Yaratılan bir yapı değişkeni için, yapı bildiriminde belirtilen elemanların tek tek toplam büyüklüğü kadar yer ayrılır. Bu alan byte olarak hesaplanır ve istenirse aşağıdaki gibi yazdırılabilir:

struct ORNEK_ITU { //Yapımız global olarak tanımlandı int itu_ogr_sayisi; double kisi_basi_alan_m2; char Giris_Kapisi; ; int main() { struct ORNEK_ITU x; return 0; printf("int buyuklugu=%d\n",sizeof(int)); printf("double buyuklugu=%d\n",sizeof(double)); printf("char buyuklugu=%d\n",sizeof(char)); printf("x'in Toplam Buyuklugu: %d byte\n", sizeof(x)); sizeof(x) == sizeof(int) + sizeof(double) + sizeof(char) Yapı Üyelerine Erişim Yapı üyelerine dizilerde olduğundan farklı bir şekilde erişilir: Yapı elemanlarına erişim için köşeli parantez değil de nokta işleci kullanılır (. ). Noktanın sol tarafındaki terim, bizim belirlediğimiz tipte olan yapı değişkeninin adı, sağ tarafında ise o yapıya ait üyenin adı yer almalıdır. Kendi örneğimizden yola çıkacak olursak: ogrenci1.yas=15; ile ogrenci1 adlı değişkenimizin yas uyesine 15 degerini atıyoruz. Veri Tiplerine Yeni İsim Verme

C dilinde var olan veri tiplerine daha anlaşlır ve kolay kod yazımı için yeni bir isim vermek mümkündür. Tanımlama biçimi: typedef TanımlıTip istenilen_isim; typedef int tamsayi; Bu işlemden sonra tamsayı isminde bir veri tipi vardır ve int yerine kullanılabilir. Değişken tanımlamada kullanılabilir. tamsayi i, j; Yapılar ile kullanımı struct OgrenciYapi { ; typedef struct OgrenciYapi OGRENCI; OGRENCI ogrenci1; veya typedef struct OgrenciYapi { OGRENCI; Dikkat!!!!Burada OGRENCI değişkeni yaratmıyoruz.typedef kullanıldığında, parantez kapandıktan sonra kullanılan OGRENCI terimi artık struct OgrenciYapi yerine kullanılabilir. Örneğin: OGRENCI ogrenci1; ile struct OgrenciYapi ogrenci1; aynı şeydir.

Yapıların Kullanımına Örnek Bir Program Yapıları kullanarak basit anlamda sınıftaki ogrencilerin bilgilerini tutan program yapmak mumkundur. Bu programda yukarıdaki örneklerle paralellik teşkil etmesi açısından tüm yazı boyunca kullandığımız OgrenciYapi ornegi kullanılmıştır. Ayrıca bu örnekte yapıların da dizi elemanı olarak kullanılabileceğini göreceksiniz: struct OgrenciYapi{ //Yapı bildirimi global olarak yapıldı. ; int main(){ int i=0,j; int secim=0; struct OgrenciYapi ogrenci[40]; //elemanları yapı olan dizi yaratıldı. printf(" _\\ /_ Sinif Kayit Programi _\\ /_ \n\n\n"); printf("ogrenci eklemek [1]\n"); printf("eklenen ogrencileri gormek icin [2]\n"); printf("cikis icin [3] giriniz:"); while(secim>3 secim<1){ printf("hatali giris! [1],[2]veya [3] giriniz:\n"); while(1){ switch(secim){ case 1: printf("\n%d. kaydedilen ogrencinin adini giriniz:",i+1); scanf("%s",&ogrenci[i].isim);

printf("\n%d. kaydedilen ogrencinin soyadini giriniz:",i+1); scanf("%s",&ogrenci[i].soyisim); printf("\n%d. kaydedilen ogrencinin yasini giriniz:",i+1); scanf("%d", &ogrenci[i].yas); printf("\n%d. kaydedilen ogrencinin numarasini giriniz:",i+1); scanf("%d", &ogrenci[i].numara); i++; printf("\n\n[1]ekleme,[2] listeleme,[3]cikis? :"); while(secim>3 secim<1){ printf("hatali giris! [1],[2]veya [3] giriniz:\n"); break; case 2: for (j=0;j<i;j++) { printf("\n%d.ogrenci",j+1); printf("\n Ad, Soyad : %s %s", ogrenci[j].isim,ogrenci[j].soyisim); printf("\n Yas : %d\n No : %d\n",ogrenci[j].yas,ogrenci[j].numara); printf("\n\n[1]ekleme,[2] listeleme,[3]cikis? :"); while(secim>3 secim<1){ printf("hatali giris! [1],[2]veya [3] giriniz:\n"); break; case 3: return 0;

Örnek Program Çıktıları: **1 ögrenci eklenmis ve listele denmistir: **3 Öğrenci eklenmis ve ardından listele denmistir:

Engin Yıldırım einginy@gmail.com.com İTÜ IEEE Bilişim Komitesi