BBS 514 YAPISAL PROGRAMLAMA (STRUCTURED PROGRAMMING)

Benzer belgeler
BBS 514 YAPISAL PROGRAMLAMA (STRUCTURED PROGRAMMING)

#include <stdio.h> int main(void) { float sayi; float * p; p = &sayi; printf("deger girin:"); scanf("%f", p); printf("girilen deger:%f\n", *p);

Stack Islemleri. Postfix ve Infix notasyonlari. Stack ozellikleri

Veri Yapıları ve Algoritmalar dönem

Pros and Cons of Pointers. Pointers. Avantajlar. Dezavantajlar

Bölüm 10 - Yapılar, Birlikler, Bit İşleme ve Sayma Sabitleri (Enumarations)

Final Sınavı Soruları Bahar 2018

Diziler (Arrays) Çok Boyutlu Diziler

Bölüm 6. Diziler (arrays) Temel kavramlar Tek boyutlu diziler Çok boyutlu diziler

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

Week 6: Bağlı Liste (Linked List) BAĞLI LİSTE KAVRAMI TEKİL (SINGLE) BAĞLI LİSTE ÇİFT (DOUBLE) BAĞLI LİSTE DAİRESEL (CIRCULAR) BAĞLI LİSTE

1 - Type aliases (typedef / using)

BİLG Dr. Mustafa T. Babagil 1

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

C++ Class larina baslangic. C++ Versus C Object-oriented Language C++ Structure dan Object Create etmek. Structure tanimlama.

const objects & const member functions const objects ve const functions Data Member Initializer List Data Member Initializer List

Object-Oriented Programming Laboratuvar 11

PROGRAMLAMAYA GİRİŞ DERS 2

Maltepe Üniversitesi Bilgisayar Mühendisliği Bölümü BİL 203 Veri Yapıları ve Algoritmalar I

Big Endian & Little Endian K.Atilla Toker İzmir Üniversitesi Meslek Yüksek Okulu Bilgisayar Programcılığı Ver:01

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

Programlama Dilleri 1. Ders 5: Göstericiler

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

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

const objects & const member functions

Deney 7: Fonksiyon Tanımlama ve Parametre Aktarım Yöntemleri

Fall Object-Oriented Programming Laboratory 02 - Structures

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

Hafta 11 Çok Boyutlu Diziler

WEEK 11 CME323 NUMERIC ANALYSIS. Lect. Yasin ORTAKCI.

Python ile Programlamaya Giriş DERS 9: FONKSİYONLAR DR. HÜSEYİN BAHTİYAR

BLM 111 ALGORİTMA VE PROGRAMLAMA I

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

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

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

#ifndef VEKTOR_H #define VEKTOR_H. struct vektor_s { double x; double y; double z; }; typedef struct vektor_s vektor_t;

TEMPLATES. Binnur Kurt Bilgisayar Mühendisliği Bölümü İstanbul Teknik Üniversitesi. C++ ile Nesneye Dayalı Programlama 1

D-Link DSL 500G için ayarları

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

Hiyerarşik Yazılım Tasarımı Kavramı

Virtualmin'e Yeni Web Sitesi Host Etmek - Domain Eklemek

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

8. İŞARETCİLER (POINTERS)

IDENTITY MANAGEMENT FOR EXTERNAL USERS

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

C Programlama printf() Fonksiyonu

1 RUBY HAKINDA 1 Ruby nin Gelişim Hikayesi 1 Neden Ruby? 1 Neden Bu Kadar Popüler? 2

İşaretciler - Pointer

BLM 111 ALGORİTMA VE PROGRAMLAMA I

#include <stdio.h> int main(void) { FILE * dosya; dosya = fopen("soru1.txt", "w"); fprintf(dosya, "Merhaba Dunya!"); fclose(dosya); return 0; }

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

Öğr. Gör. Musa AYDIN Fatih Sultan Mehmet Vakıf Üniversitesi

a, ı ı o, u u e, i i ö, ü ü

C++ Dersi: Nesne Tabanlı Programlama

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

UBE Machine Learning. Kaya Oguz

Yarışma Sınavı A ) 60 B ) 80 C ) 90 D ) 110 E ) 120. A ) 4(x + 2) B ) 2(x + 4) C ) 2 + ( x + 4) D ) 2 x + 4 E ) x + 4

NESNEYE YÖNELİK PROGRAMLAMA SINIFLAR

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

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

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

Giriş. ENF102 Jeoloji

En kucuk calisabilir birime satetement denir Statements semicolon (;) ile sonlanir Yalniz basina ; null statement i ifade eder

BBM Discrete Structures: Final Exam Date: , Time: 15:00-17:00

ÖRNEKTİR - SAMPLE. RCSummer Ön Kayıt Formu Örneği - Sample Pre-Registration Form

C Programlama Dilinde Değişkenler

Pointer Kavramı. Veri Yapıları

Kocaeli Üniversitesi Bilgisayar Mühendisliği Programlama 2 Dersi Final Sınavı. A Grubu

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

Operatörlere İşlev Yükleme

Nesne İşaretçileri. Binnur Kurt Bilgisayar Mühendisliği Bölümü İstanbul Teknik Üniversitesi. Sınıf Yapısı. Kalıtım Çok Şekillilik

Final Sınavı Örnek Soruları Bahar 2018

Genel Programlama II

Week 5 Examples and Analysis of Algorithms

BBM Discrete Structures: Midterm 2 Date: , Time: 16:00-17:30. Question: Total Points: Score:

/* Çember alanını hesaplar */

Biçem Belirteçleri (Format Specifiers)

BİL1001 Bilgisayar Bilimlerine Giriş 1

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

Struct VE GÖSTERİCİLER FONKSİYONLARDA STRUCT KULLANIMI Programlama dilleri hafta -

Yrd. Doç. Dr. Caner ÖZCAN

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

C++ Dersi: Nesne Tabanlı Programlama

CENG/BILM 341 FINAL REVIEW. Dr. Esma Yıldırım

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

Adım Adım C-II. Eksik kalmış konular

Bölüm 6 Diziler (Arrays)

C++ Statements. { ve } arasında ifade edilen bir dizi statement bir compound statement (birleşik ifade) oluşturur.

Hafta 12 Karakter Tutan Diziler

C++ ile Nesneye Dayalı Programlama

Java da, tüm değişkenlerin kullanılmadan önce tanımlanması edilmesi gerekir. Bir değişken tanımlamanın temel gösterimi bu şekildedir:

10/17/2007 Nesneye Yonelik Programlama 3.1

JAVADA DİZİ İŞLEMLERİ

işlemler bittikten sonra dosyaların kapatılması uygun olacaktır. Bunun için, fclose(fin);

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

Do not open the exam until you are told that you may begin.

ALGORİTMA VE PROGRAMLAMA II

Programlama Dilleri Laboratuvarı

CSE225 DATA STRUCTURES 2006 Student Name: MIDTERM EXAM II M.B.T. Student Number:

Matematik Mühendisliği - Mesleki İngilizce

Transkript:

1 BBS 514 YAPISAL PROGRAMLAMA (STRUCTURED PROGRAMMING) 6 LECTURE 10: STRUCTURES Lecturer: Burcu Can BBS 514 - Yapısal Programlama (Structured Programming)

Structures (Yapılar) A structure is a collection of one or more variables, possibly of different types, grouped together under a single name for convenient handling. (Yapı, farklı veri türlerinde olabilen değişkenlerin, tek bir adı olan bir grup halinde ele alınabilmesini sağlar. ) 2

Structure Definitions (Yapı tanımları) Example: struct point { int x; int y; }; struct point pt; /* defines a variable pt which is a structure of type struct point */ pt.x = 15; pt.y = 30; printf( %d, %d, pt.x, pt.y); 3

Structure Definitions (Yapı tanımları) /* Structures can be nested. One representation of a rectangle is a pair of points that denote the diagonally opposite corners. */ struct rect { struct point pt1; struct point pt2; }; struct rect screen; /* Print the pt1 field of screen */ printf( %d, %d,screen.pt1.x,screen.pt1.y); /* Print the pt2 field of screen */ printf( %d, %d,screen.pt2.x,screen.pt2.y); 4

typedef typedef Creates synonyms (aliases) for previously defined data types n (Daha önce tanımlanmış veri türlerine eş anlamlı yeni türler tanımlar.) Use typedef to create shorter type names Example: typedef struct point pixel; Defines a new type name pixel as a synonym for type struct point n (Pixel adında struct point ile eş anlamlı bir tür tanımlar.) typedef does not create a new data type (Typedef yeni bir tür yaratmaz, sadece var olana yeni bir ad verir.) n Only creates an alias 5

Using Structures With Functions (Fonksiyonlarda Yapı Kullanımı) /* Demonstrates passing a structure to a function */ #include<stdio.h> struct data{ float amount; char fname[30]; char lname[30]; }rec; void printrecord(struct data x); int main(void) { printf( Enter the donor s first and last names\n ); printf( separated by a space: ); scanf( %s %s,rec.fname, rec.lname); printf( Enter the donation amount: ); scanf( %lf,&rec.amount); printrecord(rec); return 0; } 6

void printrecord(struct data x) { } printf( \ndonor %s %s gave $%.2f., x.fname, x.lname, x.amount); 7

/* Make a point from x and y components. */ struct point makepoint (int x, int y) { struct point temp; temp.x = x; temp.y = y; return (temp); } /* makepoint can now be used to initialize a structure */ struct rect screen; struct point middle; screen.pt1 = makepoint(0,0); screen.pt2 = makepoint(50,100); middle = makepoint((screen.pt1.x + screen.pt2.x)/2, (screen.pt1.y + screen.pt2.y)/2); 8

/* add two points */ struct point addpoint (struct point p1, struct point p2) { p1.x += p2.x; p1.y += p2.y; return p1; } Both arguments and the return value are structures in the function addpoint. (Hem argümanlar, hem de dönüş değerleri yapılar ile verilmiş. ) 9

Structures and Pointers (Yapılar ve İşaretçiler) struct point *p; /* p is a pointer to a structure of type struct point */ struct point origin; p = &origin; printf( Origin is (%d, %d)\n, (*p).x, (*p).y); Parentheses are necessary in (*p).x because the precedence of the structure member operator (dot) is higher than *. (Yapı üyesi işleminin, işaretçiye göre önceliği vardır, o yüzden parantez yazılması gerekir.) The expression *p.x *(p.x) which is illegal because x is not a pointer. (x bir işaretçi değil, o yüzden bu kullanım doğru değil.) 10

Structures and Pointers (Yapılar ve İşaretçiler) If p is a pointer to a structure, then (Eğer p bir yapıyı gösteren bir işaretçi ise:) p -> field_of_structure refers to a particular field. We could write printf( Origin is (%d %d)\n, p->x, p->y); 11

Structures and Pointers (Yapılar ve İşaretçiler) Both. and -> associate from left to right (Hem., hem de - > soldan sağa doğru işlenir.) Consider struct rect r, *rp = &r; The following 4 expressions are equivalent. (Aşağıdaki dört ifade birbirine denktir.) r.pt1.x rp -> pt1.x (r.pt1).x (rp->pt1).x 12

Declarations and Assignments (Tanımlar ve Atamalar) struct student { char *last_name; int student_id; char grade; }; struct student temp, *p = &temp; temp.grade = A ; temp.last_name = Casanova ; temp.student_id = 590017; Expression Equiv. Expression Value temp.grade p -> grade A temp.last_name p -> last_name Casanova temp.student_id p -> student_id 590017 (*p).student_id p -> student_id 590017 13

Arrays of Structures (Yapı Dizileri) Usually a program needs to work with more than one instance of data. For example, to maintain a list of phone numbers in a program, you can define a structure to hold each person s name and number. (Telefon numaralarından oluşan bir liste tutabilmek için, öncelikle her kişinin adını ve telefon numarasını tutabileceğimiz bir yapı tanımlamak gerekir.) struct entry { }; char fname[10]; char lname[12]; char phone[8]; A phone list has to hold many entries, so a single instance of the entry structure isn t of much use. What we need is an array of structures of type entry. (Birden fazla giriş olacağı için dizi tanımlanması gerekir.) After the structure has been defined, you can define the array as follows: (Dizi şu şekilde tanımlanır:) struct entry list[1000];

struct entry list[1000] list[0].fname list[0].lname list[0] list[0].phone list[1].fname list[1].lname list[1] list[1].phone list[999].fname[2] list[999].fname list[999].lname list[999] list[999].phone 15

To assign data in one element to another array element, you write (Bir dizi elemanını, başka bir dizi elemanına atamak için:) list[1] = list[5]; To move data between individual structure fields, you write (Yapının farklı alanlarındaki veriyi bir yerden başka bir yere kopyalamak için) strcpy(list[1].phone, list[5].phone); To move data between individual elements of structure field arrays, you write (Eğer yapı elemanları da dizilerden oluşuyorsa:) list[5].phone[1] = list[2].phone[3]; 16

#define CLASS_SIZE 100 struct student { char *last_name; int student_id; char grade; }; int main(void) { struct student temp, class[class_size];... } int counta(struct student class[]) { int i, cnt = 0; for (i = 0; i < CLASS_SIZE; ++i) cnt += class[i].grade == A ; return cnt; } 17

Arrays of structures can be very powerful programming tools. (Yapı dizileri çok sık kullanılır.) struct part { int number; char name [10]; }; struct part data[100]; struct part *p_part; p_part = data; printf( %d %s, p_part->number, p_part->name);

x[0] x[1] x[2] 100 101 102 103 104 105 106 107 108 Memory addresses ptr++ ptr++ 100 103 106 The above diagram shows an array named x that consists of 3 elements. The pointer ptr was initialized to point at x[0]. Each time ptr is incremented, it points at the next array element. 19

/* Array of structures */ #include <stdio.h> #define MAX 4 struct part { int number; char name[10]; } data[max] = {1, Smith, 2, Jones, 3, Adams, 4, Wilson }; int main (void) { struct part *p_part; int count; 20 } p_part = data; for (count = 0; count < MAX; count++) { printf( \n %d %s, p_part -> number, p_part -> name); p_part++; } return 0;