‘Bilgisayar’ Kategorisi için ArÅŸiv

C++’in Temelleri

Salı, 06 Kasım 2007

C++’in Temelleri

Temel Programlama Elemanları ve Kavramlar

Program Organizasyonu

wProgram deyimleri

nTanımlama

nDeklerasyon

nFaaliyet

wÇalıştırılabilir Birim

nProgram Deyimlerinin İsimlendirilmesi

nProgramın çalıştırılabilir Kısımları Farklı Dillerde Farklı Olarak İsimlendirilir

wFortran ve Basic dillerinde Subroutine kullanılır

wProcedure Pascal da Procedure kullanılır

Function C++ da Function kullanılır

Program Organizasyonu

wC++ programı

nTanımlamalar, deklerasyon ve fonksiyonlardan meydana gelir

nC++ da birden fazla dosya kullanılabilir

wAvantajları

nKüçük anlaşılabilir birimler halinde yapılandırılabilir

nKarmaşıklık azaltılmıştır

Program büyüklüğü azaltılmıştır

Nesneler

wNesne bir kısım verilerin temsil edilmesidir

nİsim

nDeğer veya Özellikler

wVeri üyeleri

nİhtiyaçlara (mesaj) cevap verebilme kabiliyeti

wÜye Fonksiyonlar

wBir nesne bir mesaj aldığı zaman aşağıdaki iki faaliyetten biri icra edilir

nNesne bir faaliyeti icra etmeye yönlendirilir

Nesne özelliklerden bir tanesini değiştirir

İlk Program - hosgeldin.cpp

[IMG]file:///C:/DOCUME%7E1/SA%28%5e_%5e%7E1/LOCALS%7E1/Temp/msohtml1/01/clip_image001.gif[/IMG]// Program: Ekrana mesaj yazar

[IMG]file:///C:/DOCUME%7E1/SA%28%5e_%5e%7E1/LOCALS%7E1/Temp/msohtml1/01/clip_image002.gif[/IMG][IMG]file:///C:/DOCUME%7E1/SA%28%5e_%5e%7E1/LOCALS%7E1/Temp/msohtml1/01/clip_image003.gif[/IMG]// Yazar: Elektrik Bölümü Yorumlar

// Tarih: 1/24/2002

[IMG]file:///C:/DOCUME%7E1/SA%28%5e_%5e%7E1/LOCALS%7E1/Temp/msohtml1/01/clip_image004.gif[/IMG]#include <iostream>

[IMG]file:///C:/DOCUME%7E1/SA%28%5e_%5e%7E1/LOCALS%7E1/Temp/msohtml1/01/clip_image005.gif[/IMG]#include <string> Önişlemci direktifleri

[IMG]file:///C:/DOCUME%7E1/SA%28%5e_%5e%7E1/LOCALS%7E1/Temp/msohtml1/01/clip_image006.gif[/IMG]using namespace std; (basit eriÅŸim saÄŸlar)

[IMG]file:///C:/DOCUME%7E1/SA%28%5e_%5e%7E1/LOCALS%7E1/Temp/msohtml1/01/clip_image007.gif[/IMG]int main() { fonksiyon adı, main () programıon başlangıcını gösterir.

[IMG]file:///C:/DOCUME%7E1/SA%28%5e_%5e%7E1/LOCALS%7E1/Temp/msohtml1/01/clip_image006.gif[/IMG] cout << "Hello world!" << endl; fonksiyon

[IMG]file:///C:/DOCUME%7E1/SA%28%5e_%5e%7E1/LOCALS%7E1/Temp/msohtml1/01/clip_image008.gif[/IMG] return 0; main fonsiyonunu sona erdirir.

}

Hosgeldin programının çıktısı

[IMG]file:///C:/DOCUME%7E1/SA%28%5e_%5e%7E1/LOCALS%7E1/Temp/msohtml1/01/clip_image010.jpg[/IMG]

Area.cpp

#include <iostream>

using namespace std;

int main() {

// Genisligin ve uzunluk verilerinin girilmesi

cout << "Dikdörtgen boyutları: ";

float Uzunluk;

float Genislik;

cin >> Uzunluk >> Genislik;

// Hesaplama ve ekranda gösterme

float Alan = Uzunluk * Genislik;

cout << "Alan = " << Alan << " = Uzunluk "

<< Uzunluk << " * Genislik " << Genislik << endl;

return 0;

}

Alan.cpp ile C++ IDE ??

[IMG]file:///C:/DOCUME%7E1/SA%28%5e_%5e%7E1/LOCALS%7E1/Temp/msohtml1/01/clip_image012.jpg[/IMG]

Alan.cpp Çıktısı

[IMG]file:///C:/DOCUME%7E1/SA%28%5e_%5e%7E1/LOCALS%7E1/Temp/msohtml1/01/clip_image014.jpg[/IMG]

Yorumlar

wYorumlar için düz yazıya izin verir

wÖnemli

nProgramlar yazıldıktan sonra sık sık okunurlar

nProgramların bakımlarının yapılabilmeleri için kolay anlaşılır olmaları gerekir

wC++ da yorum satırları için iki yazım şekli vardır

n// tek satır yorumları (tercih edilir)

n/* uzun yorumlar */ (hata kontrolü için kayıt etme)

wTipik kullanımlar

nProgramı kimin yazdığını belirt

nProgramın ne zaman yazıldığını kaydet

Yapılan değişiklikleri ekle

Temel C++ Nesneleri

wC++ birçok nesne tipini içerir

wTemel nesne tipleri üç kategoride incelenir

nTam sayılı nesneler

nOndalık sayılı nesneler

Metin nesneler

Örnekler:

Tamsayılı nesne tipleri

wTemel tamsayı nesne tipi “int” tir

nint in büyüklüğü makineye ve derleyiciye bağlıdır

wPC lerde normal olarak 16 or 32 bit dir

wDiğer Tamsayı nesne tipleri

nshort: daha az bit kullanır

nlong: daha fazla bit kullanır

wFarklı tamsayı tipleri Programcıya kaynakları daha verimli kullanma imkanı verir

Aritmetik ve ilişkisel işlemler bu tipler için mevcuttur

Tamsayılı sabitler

wTamsayılı sabitler pozitif veya negatif bütün sayılardır

wTamsayılı sabitlerin düzeni

nOndalık Sayı (decimal)

nSekiz tabanlı

wRakamlar 0, 1, 2, 3, 4, 5, 6, 7

nOnaltılı Tabanlı

wRakamlar 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, a , b, c, d, e, f, A, B, C, D, E, F

wDikkat

31’ i 8 lik tabanlı 25’ i ondalık tabanda gösteriniz

Ondalık Sabitler

wÖrnekler

n97

n40000L

n50000

n23a (geçersiz)

Tip belirleyicisi kullanılmadığında sabitin değeri tipin büyüklüğüne bağlıdır.

Character Object Types

wCharacter type char isrelated to the integer types

wCharacters are encoded using a scheme where an integer represents a particular character

wASCII is the dominant encoding scheme

nExamples

w ‘ ‘ encoded as 32 ‘+’ encoded as 43

w ‘A’ encoded as 65 ‘Z’ encoded as 90

w ‘a’ encoded as 97 ‘z’ encoded as 122

Appendix A gives the complete ASCII character set

Character Operations

wArithmetic and relational operations are defined for characters types

n‘a’ < ‘b’ is true

n‘4′ > ‘3′ is true

n‘6′ <= ‘2′ is false

Character Constants

wExplicit (literal) characters within single quotes

n‘a’,'D’,'*’

wSpecial characters - delineated by a backslash \

nTwo character sequences (escape codes)

nSome important special escape codes

w\t denotes a tab \n denotes a new line

w\\ denotes a backslash \’ denotes a single quote

w\" denotes a double quote

‘\t’ is the explicit tab character, ‘\n’ is the explicit new line character, and so on

Literal String Constants

wA literal string constant is a sequence of zero or more characters enclosed in double quotes

n "We are even loonier than you think"

n "Rust never sleeps\n"

n "Nilla is a Labrador Retriever"

Not a fundamental type

Floating-Point Object Types

wFloating-point object types represent real numbers

nInteger part

nFractional part

wThe number 108.1517 breaks down into the following parts

n108 - integer part

n1517 - fractional part

wC++ provides three floating-point object types

nfloat

ndouble

nlong double

nFloating-Point Constants

wStandard decimal notation

134.123

0.15F F or f indicates single precision floating point value

wStandard scientific notation

1.45E6

0.979e-3L L or l indicates long double floating point value

When not specified, floating-point constants are of type double

Names

wUsed to denote program values or components

wA valid name is a sequence of

nLetters (upper and lowercase)

nDigits

wA name cannot start with a digit

nUnderscores

wA name should not normally start with an underscore

wNames are case sensitive

nMyObject is a different name than MYOBJECT

wThere are two kinds of names

nKeywords

nIdentifiers

Keywords

wKeywords are words reserved as part of the language

nint, return, float, double

wThey cannot be used by the programmer to name things

wThey consist of lowercase letters only

wThey have special meaning to the compiler

Identifiers

wIdentifiers should be

nShort enough to be reasonable to type (single word is norm)

wStandard abbreviations are fine (but only standard abbreviations)

nLong enough to be understandable

wWhen using multiple word identifiers capitalize the first letter of each word

wExamples

nMin

nTemperature

nCameraAngle

nCurrentNbrPoints

Definitions

wAll objects that are used in a program must be defined

wAn object definition specifies

nType

nName

General definition form

[IMG]file:///C:/DOCUME%7E1/SA%28%5e_%5e%7E1/LOCALS%7E1/Temp/msohtml1/01/clip_image016.gif[/IMG]

Our convention is one definition per statement!

Examples

char Response;

int MinElement;

float Score;

float Temperature;

int i;

int n;

char c;

float x;

Objects are uninitialized with this definition form (Value of a object is whatever is in its

assigned memory location)

Arithmetic Operators

wCommon

nAddition +

nSubtraction -

nMultiplication * Write m*x + b not mx + b

nDivision /

nMod %

wNote

nNo exponentiation operator

nSingle division operator

Operators are overloaded to work with more than one type of object

Integer Division

wInteger division produces an integer result

nTruncates the result

wExamples

n3 / 2 evaluates to 1

n4 / 6 evaluates to 0

10 / 3 evaluates to 3

Mod

wProduces the remainder of the division

wExamples

n5 % 2 evaluates to 1

n12 % 4 evaluates to 0

4 % 5 evaluates to 4

Operators and Precedence

Consider mx + b

wConsider m*x + b which of the following is it equivalent to

n(m * x) + b

nm * (x + b)

wOperator precedence tells how to evaluate expressions

wStandard precedence order

n( ) Evaluate first, if nested innermost

done first

n* / % Evaluate second. If there are several,

then evaluate from left-to-right,

n+ - Evaluate third. If there are several,

then evaluate from left-to-right

Operator Precedence

wExamples

20 - 4 / 5 * 2 + 3 * 5 % 4

(4 / 5)

((4 / 5) * 2)

((4 / 5) * 2) (3 * 5)

((4 / 5) * 2) ((3 * 5) % 4)

(20 -((4 / 5) * 2)) ((3 * 5) % 4)

(20 -((4 / 5) * 2)) + ((3 * 5) % 4)

Defining and Initializing

wWhen an object is defined using the basic form, the memory allotted to it contains random information

wBetter idea to specify its desired value at the same time

nException is when the next statement is an extraction for the object

Remember our convention of one definition per statement!

Examples

int FahrenheitFreezing = 32;

char FinalGrade = ‘A’;

cout << "Slope of line: ";

float m;

cin >> m;

cout << "Intercept: ";

float b;

cin >> b;

cout << "X value of interest: ";

float x;

cin >> x;

float y = (m * x) + b;

Modifying Objects

Operators and Expressions

Memory Depiction

float y = 12.5;

[IMG]file:///C:/DOCUME%7E1/SA%28%5e_%5e%7E1/LOCALS%7E1/Temp/msohtml1/01/clip_image018.gif[/IMG]

Memory Depiction

float y = 12.5;

int Temperature = 32;

[IMG]file:///C:/DOCUME%7E1/SA%28%5e_%5e%7E1/LOCALS%7E1/Temp/msohtml1/01/clip_image020.gif[/IMG]

Memory Depiction

float y = 12.5;

int Temperature = 32;

char Letter = ‘c’;

[IMG]file:///C:/DOCUME%7E1/SA%28%5e_%5e%7E1/LOCALS%7E1/Temp/msohtml1/01/clip_image022.gif[/IMG]

Memory Depiction

float y = 12.5;

int Temperature = 32;

char Letter = ‘c’;

int Number;

[IMG]file:///C:/DOCUME%7E1/SA%28%5e_%5e%7E1/LOCALS%7E1/Temp/msohtml1/01/clip_image024.gif[/IMG]

wAssignment Statement

w Basic form

object = expression ; Target becomes source

n

Celsius = (Fahrenheit - 32) * 5 / 9;

y = m * x + b;

wAction

nExpression is evaluated

nExpression value stored in object

Definition

int NewStudents = 6;

[IMG]file:///C:/DOCUME%7E1/SA%28%5e_%5e%7E1/LOCALS%7E1/Temp/msohtml1/01/clip_image026.gif[/IMG]

Definition

int NewStudents = 6;

int OldStudents = 21;

[IMG]file:///C:/DOCUME%7E1/SA%28%5e_%5e%7E1/LOCALS%7E1/Temp/msohtml1/01/clip_image028.gif[/IMG]

Definition

int NewStudents = 6;

int OldStudents = 21;

int TotalStudents;

[IMG]file:///C:/DOCUME%7E1/SA%28%5e_%5e%7E1/LOCALS%7E1/Temp/msohtml1/01/clip_image030.gif[/IMG]

Assignment Statement

int NewStudents = 6;

int OldStudents = 21;

int TotalStudents;

TotalStudents = NewStudents + OldStudents;

[IMG]file:///C:/DOCUME%7E1/SA%28%5e_%5e%7E1/LOCALS%7E1/Temp/msohtml1/01/clip_image032.gif[/IMG]

Assignment Statement

int NewStudents = 6;

int OldStudents = 21;

int TotalStudents;

TotalStudents = NewStudents + OldStudents;

[IMG]file:///C:/DOCUME%7E1/SA%28%5e_%5e%7E1/LOCALS%7E1/Temp/msohtml1/01/clip_image034.gif[/IMG]

Assignment Statement

int NewStudents = 6;

int OldStudents = 21;

int TotalStudents;

TotalStudents = NewStudents + OldStudents;

OldStudents = TotalStudents;

[IMG]file:///C:/DOCUME%7E1/SA%28%5e_%5e%7E1/LOCALS%7E1/Temp/msohtml1/01/clip_image036.gif[/IMG]

Assignment Statement

int NewStudents = 6;

int OldStudents = 21;

int TotalStudents;

TotalStudents = NewStudents + OldStudents;

OldStudents = TotalStudents;

[IMG]file:///C:/DOCUME%7E1/SA%28%5e_%5e%7E1/LOCALS%7E1/Temp/msohtml1/01/clip_image038.gif[/IMG]

Consider

int Value1 = 10;

[IMG]file:///C:/DOCUME%7E1/SA%28%5e_%5e%7E1/LOCALS%7E1/Temp/msohtml1/01/clip_image040.gif[/IMG]

Consider

int Value1 = 10;

int Value2 = 20;

[IMG]file:///C:/DOCUME%7E1/SA%28%5e_%5e%7E1/LOCALS%7E1/Temp/msohtml1/01/clip_image042.gif[/IMG]

Consider

int Value1 = 10;

int Value2 = 20;

int Hold = Value1;

[IMG]file:///C:/DOCUME%7E1/SA%28%5e_%5e%7E1/LOCALS%7E1/Temp/msohtml1/01/clip_image044.gif[/IMG]

Consider

int Value1 = 10;

int Value2 = 20;

int Hold = Value1;

Value1 = Value2;

[IMG]file:///C:/DOCUME%7E1/SA%28%5e_%5e%7E1/LOCALS%7E1/Temp/msohtml1/01/clip_image046.gif[/IMG]

Consider

int Value1 = 10;

int Value2 = 20;

int Hold = Value1;

Value1 = Value2;

[IMG]file:///C:/DOCUME%7E1/SA%28%5e_%5e%7E1/LOCALS%7E1/Temp/msohtml1/01/clip_image048.gif[/IMG]

Consider

int Value1 = 10;

int Value2 = 20;

int Hold = Value1;

Value1 = Value2;

Value2 = Hold;

[IMG]file:///C:/DOCUME%7E1/SA%28%5e_%5e%7E1/LOCALS%7E1/Temp/msohtml1/01/clip_image050.gif[/IMG]

Consider

int Value1 = 10;

int Value2 = 20;

int Hold = Value1;

Value1 = Value2;

Value2 = Hold;

[IMG]file:///C:/DOCUME%7E1/SA%28%5e_%5e%7E1/LOCALS%7E1/Temp/msohtml1/01/clip_image052.gif[/IMG]

wWe swapped the values of objects Value1 and Value2 using Hold as temporary holder for Value1’s starting value!

Incrementing

İnt i = 1;

[IMG]file:///C:/DOCUME%7E1/SA%28%5e_%5e%7E1/LOCALS%7E1/Temp/msohtml1/01/clip_image054.gif[/IMG]

int i = 1;

int i = 1;

i = i + 1;

[IMG]file:///C:/DOCUME%7E1/SA%28%5e_%5e%7E1/LOCALS%7E1/Temp/msohtml1/01/clip_image055.gif[/IMG]

Assign the value of expression i + 1 to (i)

[IMG]file:///C:/DOCUME%7E1/SA%28%5e_%5e%7E1/LOCALS%7E1/Temp/msohtml1/01/clip_image057.gif[/IMG]

Evaluates to (2)

Const Definitions

wModifier const indicates that an object cannot be changed

nObject is read-only

wUseful when defining objects representing physical and mathematical constants

const float Pi = 3.1415;

wValue has a name that can be used throughout the program

const int SampleSize = 100;

wMakes changing the constant easy

Only need to change the definition and recompile

Assignment Conversions

wFloating-point expression assigned to an integer object is truncated

wInteger expression assigned to a floating-point object is converted to a floating-point value

wConsider

float y = 2.7;

int i = 15;

int j = 10;

i = y; // i is now 2

cout << i << endl;

y = j; // y is now 10.0

cout << y << endl;

Nonfundamental Types

wNonfundamental as they are additions to the language

wC++ permits definition of new types and classes

nA class is a special kind of type

wClass objects typically have

nData members that represent attributes and values

nMember functions for object inspection and manipulation

nMembers are accessed using the selection operator (.)

j = s.size();

nAuxiliary functions for other behaviors

wLibraries often provide special-purpose types and classes

Programmers can also define their own types and classes

Examples

wStandard Template Library (STL) provides class string

wEzWindows library provides several graphical types and classes

nSimpleWindow is a class for creating and manipulating window objects

nRectangleShape is a class for creating and manipulating rectangle objects

Class string

wClass string

nUsed to represent a sequence of characters as a single object

wSome definitions

string Name = "Joanne";

string DecimalPoint = ".";

string empty = "";

string copy = name;

string Question = ‘?’; // illegal

Nonfundamental Types

wTo access a library use a preprocessor directive to add its definitions to your program file

#include <string>

wThe using statement makes syntax less clumsy

nWithout it

std::string s = "Sharp";

std::string t = "Spiffy";

nWith it

using namespace std; // std contains string

string s = "Sharp";

string t = "Spiffy";

EzWindows Library Objects

wDefinitions are the same form as other objects

wExample

SimpleWindow W;

nMost non-fundamental classes have been created so that an object is automatically initialized to a sensible value

wSimpleWindow objects have member functions to process messages to manipulate the objects

nMost important member function is Open() which causes the object to be displayed on the screen

wExample

W.Open();

Initialization

wClass objects may have several attributes to initialize

wSyntax for initializing an object with multiple attributes

Type Identifier(Exp1, Exp2, …, Expn);

wSimpleWindow object has several optional attributes

SimpleWindow W("Window Fun", 8, 4);

nFirst attribute

wWindow banner

nSecond attribute

wWidth of window in centimeters

nThird attribute

Height of window in centimeters

An EzWindows Program

#include <iostream>

using namespace std;

#include "ezwin.h"

int ApiMain() {

SimpleWindow W("A Window", 12, 12);

W.Open();

cout << "Enter a character to exit" << endl;

char a;

cin >> a;

return 0;

An EzWindows Project File

[IMG]file:///C:/DOCUME%7E1/SA%28%5e_%5e%7E1/LOCALS%7E1/Temp/msohtml1/01/clip_image060.jpg[/IMG]

An EzWindows Project File

Sample Display Behavior

[IMG]file:///C:/DOCUME%7E1/SA%28%5e_%5e%7E1/LOCALS%7E1/Temp/msohtml1/01/clip_image062.jpg[/IMG]

RectangleShape Objects

wEzWindows also provides RectangleShape for manipulating rectangles

wRectangleShape objects can specify the following attributes

nSimpleWindow object that contains the rectangle (mandatory)

nOffset from left edge of the SimpleWindow

nOffset from top edge of the SimpleWindow

wOffsets are measured in centimeters from rectangle center

nWidth in centimeters

nHeight in centimeters

nColor

color is an EzWindows type

RectangleShape Objects

wExamples

SimpleWindow W1("My Window", 20, 20);

SimpleWindow W2("My Other Window", 15, 10);

RectangleShape R(W1, 4, 2, Blue, 3, 2);

RectangleShape S(W2, 5, 2, Red, 1, 1);

RectangleShape T(W1, 3, 1, Black, 4, 5);

RectangleShape U(W1, 4, 9);

RectangleShape Objects

wSome RectangleShape member functions for processing messages

nDraw()

wCauses rectangle to be displayed in its associated window

nGetWidth()

wReturns width of object in centimeters

nGetHeight()

wReturns height of object in centimeters

nSetSize()

Takes two attributes — a width and height — that are used to reset dimensions of the rectangle

Another EzWindows Program

#include <iostream>

using namespace std;

#include "rect.h"

int ApiMain() {

SimpleWindow W("Rectangular Fun", 12, 12);

W.Open();

RectangleShape R(W, 5.0, 2.5, Blue, 1, 2);

R.Draw();

cout << "Enter a character to exit" << endl;

char Response;

cin >> Response;

return 0;

}

Sample Display Behavior

[IMG]file:///C:/DOCUME%7E1/SA%28%5e_%5e%7E1/LOCALS%7E1/Temp/msohtml1/01/clip_image064.jpg[/IMG]

Compound Assignment

wC++ has a large set of operators for applying an operation to an object and then storing the result back into the object

wExamples

int i = 3;

i += 4; // i is now 7

cout << i << endl;

float a = 3.2;

a *= 2.0; // a is now 6.4

cout << a << endl;

Increment and Decrement

wC++ has special operators for incrementing or decrementing an object by one

wExamples

int k = 4;

++k; // k is 5

k++; // k is 6

cout << k << endl;

int i = k++; // i is 6, k is 7

cout << i << " " << k << endl;

int j = ++k; // j is 8, k is 8

cout << j << " " << k << endl;

Class string

wSome string member functions

nsize() determines number of characters in the string

string Saying = "Rambling with Gambling";

cout << Saying.size() << endl; // 22

nsubstr() determines a substring (Note first position has index 0)

string Word = Saying.substr(9, 4); // with

nfind() computes the position of a subsequence

int j = Saying.find("it"); // 10

int k = Saying.find("its"); // ?

Class string

wAuxiliary functions and operators

ngetline() extracts the next input line

string Response;

cout << "Enter text: ";

getline(cin, Response, ‘\n’);

cout << "Response is \"" << Response

<< "\"” << endl;

n Example run

Enter text: Want what you do

Response is "Want what you do"

Class string

wAuxiliary operators

n+ string concatenation

string Part1 = "Me";

string Part2 = " and ";

string Part3 = "You";

string All = Part1 + Part2 + Part3;

n+= compound concatenation assignment

string ThePlace = "Brooklyn";

ThePlace += ", NY";

#include <iostream>

using namespace std;

int main() {

cout << "Enter the date in American format: "

<< "(e.g., January 1, 2001) : ";

string Date;

getline(cin, Date, ‘\n’);

int i = Date.find(" ");

string Month = Date.substr(0, i);

int k = Date.find(",");

string Day = Date.substr(i + 1, k - i - 1);

string Year = Date.substr(k + 2, Date.size() - 1);

string NewDate = Day + " " + Month + " " + Year;

cout << "Original date: " << Date << endl;

cout << "Converted date: " << NewDate << endl;

return 0;

}

If Control Construct

A mechanism for deciding whether an action should be taken

Boolean Algebra

wLogical expressions have the one of two values - true or false

nA rectangle has three sides

nThe instructor has a pleasant smile

wThe branch of mathematics is called Boolean algebra

nDeveloped by the British mathematician George Boole in the 19th century

wThree key logical operators

nAnd

nOr

Not

Boolean Algebra

wTruth tables

nLists all combinations of operand values and the result of the operation for each combination

Example

P

Q

P and Q

False

False

False

False

True

False

True

False

False

True

true

True

Boolean Algebra

Or truth table

P

Q

P or Q

False

False

False

False

True

True

True

False

True

True

true

True

Boolean Algebra

Not truth table

P

Not P

False

True

true

False

Boolean Algebra

wCan create complex logical expressions by combining simple logical expressions

wExample

nnot (P and Q)

A truth table can be used to determine when a logical expression is true

P Q P and Q Not (P and Q) False false False true False True False True True False False True true True true False

A Boolean Type

wC++ contains a type named bool

wType bool has two symbolic constants

ntrue

nfalse

wBoolean operators

nThe and operator is &&

nThe or operator is ||

nThe not operator is !

wWarning

& and | are also operators so be careful what you type

A Boolean Type

wExample logical expressions

bool P = true;

bool Q = false;

bool R = true;

bool S = (P && Q);

bool T = ((!Q) || R);

bool U = !(R && (!Q));

Relational Operators

wEquality operators

n==

n!=

wExamples

nint i = 32;

nint k = 45;

nbool q = (i == k);

nbool r = (i != k);

Relational Operators

wOrdering operators

n<

n>

n>=

n<=

wExamples

nint i = 5;

nint k = 12;

nbool p = (i < 10);

nbool q = (k > i);

nbool r = (i >= k);

nbool s = (k <= 12);

Operator Precedence Revisited

Precedence of operators (from highest to lowest)

nParentheses

nUnary operators

nMultiplicative operators

nAdditive operators

nRelational ordering

nRelational equality

nLogical and

nLogical or

Assignment

Operator Precedence Revisited

wConsider

5 * 15 + 4 == 13 && 12 < 19 || !false == 5 < 24

Operator Precedence Revisited

wConsider

5 * 15 + 4 == 13 && 12 < 19 || !false == 5 < 24

wYuck! Do not write expressions like this!

Operator Precedence Revisited

wConsider

5 * 15 + 4 == 13 && 12 < 19 || !false == 5 < 24

wHowever, for your information it is equivalent to

((((5 *15) + 4) == 13) && (12 < 19))

||

((!false) == (5 < 24))

Conditional Constructs

wProvide

nAbility to control whether a statement list is executed

wTwo constructs

nIf statement

wif

wif-else

wif-else-ef

nSwitch statement

Left for reading

The Basic If Statement

wSyntax

if (Expression)

Action

wIf the Expression is true then execute Action

Action is either a single statement or a group of statements within braces

Example

if (Value < 0) {

Value = -Value;

}

Sorting Two Numbers

cout << "Enter two integers: ";

int Value1;

int Value2;

cin >> Value1 >> Value2;

if (Value1 > Value2) {

int RememberValue1 = Value1;

Value1 = Value2;

Value2 = RememberValue1;

}

cout << "The input in sorted order: "

<< Value1 << " " << Value2 << endl;

C++ Nasıl Bir Programlama Dilidir?

Salı, 06 Kasım 2007

C++ NASIL BİR PROGRAMLAMA DİLİDİR?

C++ nesne yönelimli programlama tekniÄŸinin uygulanabilmesi için C’nin geniÅŸletilmiÅŸ bir biçimidir. Nesne yönelimli programlama(object oriented programming) tekniÄŸi ve C++ B.Stroustroup tarafından geliÅŸtirilmiÅŸtir. Tasarım 70′li yılların ikinci yarısından baÅŸlanmış olsa da bütün dünyada yaygınlaÅŸması ve kabul görmesi 80′li yılların sonlarına doÄŸru mümküm olmuÅŸtur. Nesne yönelimli programlama tekniÄŸi(NYP) özellikle büyük kodların üstesinden gelebilmek amacıyla tasarlanmıştır. Tasarımı C++ üzerinde yapılmış olmasına karşın bugün pek çok yüksek seviyeli programlama dilleri bu tekniÄŸi desteklemektedir. C++ ve nesne yönelimli programlama tekniÄŸinin en belirgin uygulama alanlarından birisi WINDOWS altında programlamadır. WINDOWS karmaşık ve yüksek yüksek seviyeli bir iÅŸletim sistemidir. WINDOWS altında program geliÅŸtirebilmek için uzun kodlar yazmak gerekir. Bu nedenle WINDOWS altında C ile deÄŸil C++ ile ve NYP tekniÄŸini kullanarak program yazmak daha etkin bir çözümdür. NYP tekniÄŸinin uygulanabilmesi için çalıştığımız sistemin kaynaklarının yeterince geniÅŸ olması gerekir. (Yani hızlı bir mikro iÅŸlemci, büyük RAM ve DISK ve iyi bir iÅŸletim sistemi)

C++’IN C’DEN FARKLILIKLARI

[IMG]file:///C:/DOCUME%7E1/SA%28%5e_%5e%7E1/LOCALS%7E1/Temp/msohtml1/01/clip_image001.jpg[/IMG][IMG]file:///C:/DOCUME%7E1/SA%28%5e_%5e%7E1/LOCALS%7E1/Temp/msohtml1/01/clip_image002.jpg[/IMG]

NYPT İLE DOĞRUDAN SINIF YAPISI

İLİŞKİSİ OLMAYAN

FARLILIKLARI VE FAZLALIKLARI

İki düzeyde değerlendirilebilir.

1-)NYPT ile doğrudan ilişkisi olayan farkılılıklar ve fazlalıklar

2-)Sınıf yapısı

Sınıf(class) C’deki yapı(struct)’lara benzer bir veri yapısıdır. NYPT sınıflar kullanılarak program yazılması tekniÄŸidir. Kursun %80′i sınıf yapısının yapısı ve kullanılması üzerine ayrılmıştır.

C++’IN NYPT İLE DOÄžRUDAN İLİŞKİSİ OLMAYAN FARLILIKLARI VE FAZLALIKLARI

C++ derleyicileri C derleyicisini de içermek zorundadır. Yani C++ derleyicisi demek hem C hem de C++ derleyicisi demektir. Derleyici dosyanın uzantısına bakarak kodun C’de mi yoksa C++’ta mı yazılmış olduÄŸuna karar verir. C’de ise uzantısı c, C++’ta yazılmışsa uzantısı cpp’dir.

1-)C++’ta yerel deÄŸiÅŸkenlerin bildirimleri blokların başında yapılmak zorunda deÄŸildir. Standart C’de yerel deÄŸiÅŸkenler blokların başında bildirilmek zorundadır. Yani küme parantezi açıldıktan sonra daha hiçbir fonksiyon çağırılmadan ve iÅŸlem yapılmadan yapılmalıdır. Bu tasarımın nedeni programcının bildirimin yerini kolay bulabilmesini saÄŸlamaya yöneliktir. Oysa C++’ta terel deÄŸiÅŸklenler bloÄŸun herhangi bir yerinde bildirilebilir. Bir deÄŸiÅŸkenin kullanıma yakın bir bölgede bildirilmesi C++ tasarımcılarına göre daha okunabilirdir. (DeÄŸiÅŸken kavramı nesne isimlerini, struct, union ve enum isimlerini ve enum sabitlerini, typedef isimlerini içeren genel bir terimdir.) O halde C++’ta yerel deÄŸiÅŸkenin faaliyet alanı bildirim noktasından blok sonuna kadar olan bölgeyi kapsar. Ne olursa olsun bir blok içerisinde aynı isimli birden fazla deÄŸiÅŸken bildirimi yapılamaz.

C++’da for döngüsünün birinci kısmında bildirim yapılabilir. Örnek olarak:

for(int i = 0,j = 20; i + j < 50; …){ }

Tabii while döngüsünün ve if deyiminin içerisinde bildirim yapılamaz.

#include <stdio.h>

#define SIZE 100

void main(void)

{

for(int i = 0; i < SIZE; ++i)

printf("%d\n", i);

}

Böyle for döngüsünün içerisinde bildirilmiş değişkenlerin faaliyet alanları bildirildiği yerden for döngüsünün içinde bulunduğu bloğun sonuna kadar etkilidir. if, for, switch, while gibi deyimlerden sonra blok açılmamış olsa bile gizli bir bloğun açıldığı düşünülmelidir.

{

for (int i = 0; i < 100; ++i) {

for (int j = 0; j < 100; ++j) {

}

printf(%d\n", j); /*geçerli*/

}

printf("%d\n" ,i); /*geçerli*/

printf("%d\n", j); /*geçersiz*/

}

{

for (int i = 0; i < 100; ++i)

for (int j = 0; j < 100; ++j) {

}

j = 10; /*geçersiz*/

i = 10; /*geçerli*/

}

2-)C++’ta // ile satır sonuna kadar yorumlama yapılabilir.

C++’ta /* */ yorumlama biçiminin yanı sıra kolaylık olsun diye // ile satır sonuna kadar yorumlama biçimi de eklenmiÅŸtir. Son senelerde böyle bir yorumlama biçimi standart C’de de kullanılmaya baÅŸlanmıştır. Ancak ANSI C standartlarında tanımlı deÄŸildir. Taşınabilirlik bakımından bu yorumlama biçimini standart C’de kullanmak tavsiye edilmez.

3-)C++’ta çağırılan fonksiyon eÄŸer çağıran fonksiyonun yukarısında tanımlanmamışsa fonksiyon prototipi zorunludur.

C ‘de bir fonksiyonun çağırıldığını gören derleyici fonksiyonun çağırılma noktasına kadar fonksiyonun tanımlamasıyla ya da prototipi ile karşılaÅŸmamışsa geri dönüş deÄŸerini int olarak varsayar ve kod üretir. Dolayısıyla aÅŸağıdaki örnek C’de geçerlidir.

void main(void)

{

int x;

x = fonk();

}

int fonk() /*Bu durum C’de sorun olmaz ama C++’ta error verir.*/

{

}

Oysa C++’ta derleyicinin çağırılma noktasına kadar fonksiyonun tanımlamasıyla ya da prototipiyle karşılaÅŸması gerekir. Dolayısıyla yukarıdaki kod C++’ta error’dür. (NOT: CV++ ve nesne yönelimli programlama tekniÄŸi bug oluÅŸturabilecek kodlardan kaçınılması temeline dayandırılmıştır. Yani garanti yöntemler kullanılmalıdır. Bu sebeple C’deki pek çok uyarı C++’ta error’e dönüştürülmüştür.)

4-)C++’ta farklı parametre yapılarına sahip aynı isimli birden fazla fonksiyon tanımlanabilir.

void fonk(void)

{

}

void fonk(int x)

{

}

C’de ne olursa olsun aynı isimli birden fazla fonksiyon tanımlanamaz. Oysa C++’ta parametre yapısı sayıca ve/veya türce farklı olan aynı isimli birden fazla fonksiyon tanımlanabilir. Aynı isimli birden fazla fonksiyon varsa ve o fonksiyon çağırılmışsa gerçekte hangi fonksiyon çağırılmış olduÄŸu çağırılma ifadesindeki parametre yapısı incelenerek belirlenir. Yani çağırılma ifadesindeki parametre sayısı ve türü hangisine uygunsa o çağırılmış olur. Geri dönüş deÄŸerinin farklı olması aynı isimli fonksiyon yazmak için yeterli deÄŸildir. Yani geri dönüş deÄŸerleri farklı fakat parametre yapısı aynı olan birden fazla fonksiyon tanımlanamaz.

#include <stdio.h>

void fonk(int x)

{

printf("int = %d\n", x);

}

void fonk(long x)

{

printf("long = %ld\n", x);

}

void fonk(void)

{

printf("void\n");

}

void fonk(char *str)

{

puts(str);

}

void main(void)

{

fonk(); /*parametresi void olan fonksiyonu çağırır*/

fonk(10); /*parametresi int olan fonksiyonu çağırır*/

fonk(100L); /*parametresi long olan fonksiyonu çağırır*/

fonk("merhaba"); /*parametresi karakter türünden gösterici olan fonksiyonu çağırır*/

İki anlamlılık hatası

C++’ta pek çok durumda derleyicinin birden çok seçenek arasında karar verememesinden dolayı error durumuyla karşılaşılır. Bu tür hatalara iki anlamlılık hataları denir. Yukarıdaki örnekte fonk(3.2); gibi bir çağırma yapılırsa "Ambiguity between ‘fonk(int)’ and ‘fonk(long)’" hatasını verir. Aynı isimli birden fazla fonksiyon arasında seçme iÅŸlemi ancak parametre sayıları çağılma ifadesine uygun birden fazla fonksiyon varsa gerçekleÅŸir. Parametre sayısı çağırılma ifadesine uygun tek bir fonksiyon varsa bu durumda tür uyuÅŸmasına bakılmaz. C’de olduÄŸu gibi otomatik tür dönüştürmesi yapılarak o fonksiyon çağırılır.

C++ derleyicisi aynı sayıda parametrelere sahip birden fazla aynı isimli fonksiyonun bulunması durumunda çağırılma ifadesine tür bakımından uygun bir fonksiyon bulamazsa bu durum iki anlamlılık hatasına yol açar. Bu durumun 3 istisnası vardır:

1. Fonksiyon char ya da short parametreyle çağırılmışsa char ya da short int parametreye sahip bir fonksiyon yok ancak int parametreye sahip bir fonksiyon varsa int parametreye sahip olan fonksiyon çağırılır.

2. Fonksiyon float parametreyle çağırılmışsa ancak float parametreye sahip bir fonksiyon yok double parametreye sahip bir fonksiyon tanımlanmışsa bu durumda double parametreye sahip olan fonksiyon çağırılır.

3. Fonksiyon aynı türden const olmayan bir ifadeyle çağırılmışsa ancak aynı türden const parametreye sahip bir fonksiyon y,tanımlanmışsa tür uyuşumunun sağlandığı kabul edilir ve const parametreye sahip olan fonksiyon çağırılır.

C’de ve C++’ta tanımlanan ve çağırılan bir fonksiyon ismi .obj modül içerisine yazılmak zorundadır. .obj modül standardına göre aynı isimli birden çok fonksiyon modül içerisine yazılamaz. Standart C derleyicileri fonksiyon isimlerinin başına bir _ ekleyerek obj modülün içerisine yazarlar. Oysa C++ derleyicileri fonksiyon isimlerini parametre türleriyle kombine ederek obj modül içerisine yazarlar. Bu durumda C++’ta aynı isimli farklı parametrelere sahip fonksiyonlar sanki farklı isimlere sahiplermiÅŸ gibi obj modüle yazılırlar.

5-)extern "C" ve extern "C++" bildirimleri

C++’ta normal olarak bütün standart C fonksiyonları çağırılabilir. Standart C fonksiyonları lib dosyalarının içerisine başında "_" bulunarak yani standart C kurallarıyla yazılmışlardır. Oysa bu fonksiyonların C++’tan çağırılmasıyla bir uyumsuzluk ortaya çıkar. Çünkü C++ derleyicisi çağırılan fonksiyonu obj modül içerisine başına "_" koyarak deÄŸil parametre türleriyle kombine ederek yani C++ kurallarıyla yazar. extern "C" bildirimi bir fonksiyonun prototipinin önüne ya da bir fonksiyonun tanımlamasının önüne getirilirse /*örneÄŸin:

extern "C" double sqrt(double);

veya

extern "C" void fonk(void)

{

………

}

*/

derleyici bu fonksiyonu obj modül içerisine C kurallarıyla yani başına "_" koyarak yazar. Böylece C’de yazılmış olan C++’tan kullanılması mümkün olur. Bir grup fonksiyon yazım kolaylığı saÄŸlamak için extern "C" bloÄŸu içine alınabilir.

extern "C" {

void fonk(void);

void sample(void);

….

}

BloÄŸun içerisinde baÅŸka bildirimler ve kodlar bulunabilir. Ancak derleyici yalnızca bu bloÄŸun içerisindeki fonksiyonlarla ilgilenir. Bu durumda standart C baÅŸlık dosyalarının içerisinde fonksiyonların extern "C" bildirimiyle prototipleri yazılmış olması gerekir. Aynı dosya hem C hem C++’ta include edilip kullanılabildiÄŸine göre ve extern "C" bildirimi sadece C++ için geçerliyse bir problem ortaya çıkmaz mı? Bu problem önceden tanımlanmış cplusplus sembolik sabitiyle çözümlenmiÅŸtir:

#ifdef cplusplus

extern "C" {

#endif

…..

….. [IMG]file:///C:/DOCUME%7E1/SA%28%5e_%5e%7E1/LOCALS%7E1/Temp/msohtml1/01/clip_image003.jpg[/IMG]

….. [IMG]file:///C:/DOCUME%7E1/SA%28%5e_%5e%7E1/LOCALS%7E1/Temp/msohtml1/01/clip_image004.jpg[/IMG]

…..[IMG]file:///C:/DOCUME%7E1/SA%28%5e_%5e%7E1/LOCALS%7E1/Temp/msohtml1/01/clip_image005.jpg[/IMG]

…..

…..

#ifdef cplusplus

}

#endif

Bir de extern "C++" bildirimi vardır. Bu bildirim fonksiyon isimlerinin C++ kurallarına göre obj modülün içerisine yazılacağını anlatır. Zaten fonksiyonlar default olarak bu kurala göre yazılırlar. Bu bildirim ileriye doğru uyumu sağlamak için düşünülmüştür. Şu anda bir kullanım gerekçesi yoktur.

6-)C++’ta dinamik bellek yönetimi new ve delete isimli iki operatörle yapılır.

Mademki C++ içerisinde bütün standart C fonksiyonları kullanılabiliyor, o halde dinamik bellek yönetimi malloc, claloc, realloc ve free fonksiyonlarıyla yapılabilir. Ancak bu fonksiyonlar nesne yönelimli programlama tekniÄŸini uygulayabilmek için tasarlanmamıştır. Bu yüzden C++’ta yeni bir teknik kullanılmaktadır. C++’ta dinamik olarak tahsis edilme potansiyelindeki boÅŸ bölgelere free store denilmektedir(standart C’de heap denir).

NEW Operatörü

Genel biçimi:

new <tür> [<[uzunluk]>]

new int

new char

new double [10]

new float[n]

new char[strlen(s) + 1]

Eğer köşeli parantez olmadan sadece tür ismi isle tahsisat yapılırsa o türden bir elemanlık yer tahsis edilmiş olur. Örneğin:

new int à1 int’lik yer tahsis edilmiÅŸtir.

Eğer köşeli parantez içerisine ifade yazılarak kullanılırsa bu durumda o ifade ile belirtilen sayıda elemanlık alan tahsis edilir. new operatörü türü belirli bir alan tahsis eder. Yani new operatörüyle elde edilen adresin tür bileşeni çağırılma ifadesindeki tür ile aynı olur.

int *p;

p = new int; /* Burada sizeof(int) kadar byte tahsis ediliyor ve tahsis edilen */ /* alanın başlangıç adresi elde ediliyor. Bu adres int türündedndir. */

char *p;

p = new int [10]; /* C++’ta hatadır. */

p = (char *)new int[10]; /* Hata deÄŸil. */

/*———-new1.cpp———*/

#include <stdio.h>

#include <string.h>

void main(void)

{

char *p;

p = new char[30];

gets(p);

puts(p);

}

/*——————————*/

new bir operatördür. Ancak derleyici bu operatör kullanıldığında dinamik tahsisat işleminin yapılmasını sağlamak için dinamik tahsisat yapan bir fonksiyonun çağırma kodunu amaç koda ekler. Yani new bir operatör olmasına karşın tahsisat işlemi yerleştirilen bu fonksiyon sayesinde programın çalışma zamanı sırasında yapılmaktadır. Bu operatör öncelik tablosunun ikinci düzeyinde bulunmaktadır. Örneğin:

new int + n

gibi bir işlem geçerlidir. İşlemler:

İşlem 1 : new int

İşlem 2 : İşlem 1 + n

new operatörü tahsisat işlemini yapamazsa 0 değerini(NULL gösterici) üretir.

/*——-freestor.cpp——*/

/*free store alanının hesaplanması*/

#include <stdio.h>

#define BLOCKSIZE 1024

void main(void)

{

long size = 0;

char *p;

for(;{

p = new char[BLOCKSIZE];

if(p == NULL)

break;

size += BLOCKSIZE;

}

printf("Free store size = %ld\n", size);

}

/*—————————*/

Köşeli parantez içerisine yazılan ifade sabit ifadesi olmak zorunda değildir.

/*———–new2.cpp———*/

/*Tam olarak ad sosay uzunluğu kadar bellek tahsis eden fonksiyonun kullanılışı*/

#include <stdio.h>

#include <stdlib.h>

char *getname(void)

{

char *p;

char buf[80];

printf("Adı Soyadı;

gets(buf);

p = new char[strlen(buf) + 1)];

if(p == NULL){

printf("Cannot allocate memory..\n");

exit(1);

}

strcpy(p, buf);

return p;

}

void main(void)

{

char *p;

p = getname();

puts(p);

}

/*——————————–*/

DELETE OPERATÖRÜ

delete operatöürü new operatörüyle tahsis edilmiş olan blokları serbest bırakmak için kullanılır. Genel biçimi:

1. delete p;

2. delete [] p;

Eğer tahsisat tek parça olarak yapılmışsa yani köşeli parantez kullanılmadan yapılmışsa silme işlemi köşeli parantez kullanılmadan yapılmalıdır. Örneğin:

int *p;

p = new int;

delete p;

Eğer tahsisat işlemi birden fazla eleman için yapılmışsa yani köşeli parantez kullanılarak yapılmışsa serbest bırakma işleminde de köşeli parantez kullanılmalıdır. Örneğin:

int *p;

p = new int[n];

delete [] p;

Burada köşeli parantez içerisine bir şey yazılmaz. delete operatörü unary prefix bir operatördür ve öncelik tablosunun ikinci düzeyinde bulunur.

delete p + 1; /*Hatalı*/

delete (p + 1);/*DoÄŸru*/

delete operatörünün operandı daha önce tahsis edilmiÅŸ olan bloÄŸun baÅŸlangıç adresi olmalıdır. DeÄŸilse beklenmeyen sonuçlar ortaya çıkabilir. Tabii derleici delete operatörüne karşılık amaç koda (object module’e) free gibi tahsis edilmiÅŸ bloÄŸu serbest bırakan bir fonksiyon kodu yerleÅŸtirmektedir. new delete operatörlerinin tahsisat iÅŸlemlerinde kullandığı fonksiyon maloc, calloc, free fonksiyonları olmak zorunda deÄŸildir. Bu iki grup fonksiyon farklı tahsisat tabloları kullanıyor olabilir. Bu nedenle new delete operatörleriyle malloc, calloc, free gibi standart C fonksiyonlarını özel bir durum yoksa birlikte kullanmamak gerekir. Çünkü bir grup tarafından tahsis edilen alan diÄŸer grup tarafından tahsis edilmemiÅŸ gibi gözükebilir.

Görüldüğü gibi C++’ta realloc fonksiyonun karşılığı bir operatör yoktur. Ancak böyle bir fonksiyon yazılabilir.

/*————realloc.cpp—————*/

void *Realloc(void *ptr, size_t newsize, size_t oldsize) /*size_t àunsigned int*/

{

void temp;

temp = new char [newsize];

memcpy(temp, ptr, oldsize);

delete [] ptr;

return temp;

}

/*—————————————-*/

Kullanımı:

p = new char [10]; /* 10 * sizeof(char) kadar bellek tahsis edildi */

p = Realloc(p, 20, 10); /* Tahsis edilmiÅŸ alan 20 * sizeof(char)’e büyütüldü */

SET_NEW_Handler FONKSİYONU

Normal olarak new oparetörü başarısızlıkla sonuçlandığında 0 adresine geri döner ve bu adresin test edilmesi gerekir. Ancak her new kullanımında bu adresin test edilmesi yerine daha etkin bir yöntem kullanılmaktadır. new operatörü başarısız olduğunda set_new_handler fonksiyonu ile belirlenen fonksiyonu çağırmaktadır. Böylece her defasında kontrol yapılmasına gerek kalmaz.

set_new_handler(void (*ptr)(void));

set_new_handler’a parametre olarak geri dönüş deÄŸeri void parametresi void olan bir fonksiyonun adresi verilir. Artık baÅŸarısızlık durumunda bu fonksiyon çağırılacaktır. new operatörü baÅŸarısızlık durumunda belirlenen fonksiyonu çağırır ve bu fonksiyon çağırıldıktan sonra tekrar tahsisat iÅŸlemini yapar. Yine baÅŸarısız olursa tekrar fonksiyonu çağırır ve bu böyle devam eder. Yani aÅŸağıdaki algoritmadaki gib çalışır:

for(;{

if(boşyer var mı)

return boÅŸyer;

else

set_new_handler();

}

/*———–snhandle.cpp—————*/

#include <stdio.h>

#include <new.h>

#include <stdlib.h>

long size = 0;

void myhandler(void)

{

printf("Free store size=%ld\n", size);

exit(1);

}

void main(void)

{

void *ptr;

void *oldhandler;

oldhandler = set_new_handler(myhandler);

for(;{

ptr = new char [1024];

size += 1024;

}

}

sen_new_handler(oldhandle); /*handler eski haline dönüştürüldü*/

/*——————————————*/

set_new_handler’ın prototipi new.h içindedir.

7-)Bir adresin farklı türden bir göstericiye atanması ve adres olmayan bir bilginin bir göstericiye atanması durumu uyarı değil error olarak değerlendirilir.

Adres iÅŸlemlerinde tür uyuÅŸmazlıkları C++’ta eror olarak deÄŸerlendirilir. Oysa standart C derleyicileri böyle durumlarda en fazla uyarı verirler. Ancak void göstericiye herhangi bir türden adres atanabilir. Fakat void bi adresin herhangi bir göstericiye atanması error olarak deÄŸerlendirlir(bu durum C’de en fazla uyarı olaak deÄŸerlendilir). Tabii tür dönüştürme operatörüyle her tür her türe atanabilir.

/*———-fark7.cpp———-*/

void main(void)

{

int s[100];

char *t;

t = s; /* "Cannot convert ‘int *’ to ‘char *’" hatasını verir */

t = (char *)s; /* Hata vermez */

}

/*——————————–*/

Benzer biçimde const bir değişkenin adresi ancak const bir göstericiye atanmalıdır.

const int x;

int *y;

conts int *p;

y= &x; /* Hata verir */

p = &x; /* Hata vermez */

8-)const bildirimi ile yaratılmış bir değişken sabit ifadesi gibi işlem görür.

C++’ta const bir deÄŸiÅŸken için yine bellekte yer ayrılır. Ancak const deÄŸiÅŸken kullanıldığında derleyici eÄŸer const deÄŸiÅŸkene ilk deÄŸer sabit ifadesiyle verildiyse derleyici doÄŸrudan o sabit ifadesini kullanır. Tabii const deÄŸiÅŸkene verilen ilk deÄŸer sabit ifadesi deÄŸilse bu consta deÄŸiÅŸken kullanıldığında derleyici doÄŸrudan bir sayı yerleÅŸtiremez, const deÄŸiÅŸkenin kendisini yerleÅŸtirir.

const int MAX = a + 100;

const int MIN = 1;

y = MAX; /* Burada bir sayı yazamaz */

y = MIN; /* Burada MIN yerine 1 yazılabilir */

const int SIZE = 10;

int a[SIZE]; /* C++’ta geçerli C’de geçerli deÄŸil */

const değişken için yine de bellkte yer ayrılır. Bu durumda const değişkenin adresi alınabilir. Bu yolla const deişkenin içeriği de değiştirilebilir. Tabii bu değiştirme programın çalışma zamanı içerisinde olduğundan sonucu değiştirmez.

/*———-fark8.cpp————*/

#include <stdio.h>

void main(void)

{

const int SIZE = 10;

int *p;

p = (int *)&SIZE;

*p = 20;

printf("%d\n", SIZE);

}

/*——————————–*/

9-)C++’ta statik ömürlü deÄŸiÅŸkenlere sabit ifadesiyle ilk deÄŸer verme zorunluluÄŸu yoktur.

Global deÄŸiÅŸkenler ve statik yerel deÄŸiÅŸkenler gibi statik ömürlü deÄŸiÅŸkenlere ilk deÄŸer C’de sabit ifadesiyle verilmek zorundadır. Çünkü statik ömürlü deÄŸiÅŸkenler amaç kod içerisine ilk deÄŸerleriyle yazılırlar. Exe dosyasının içerisinde yer alırlar. Bunun mümkün olabilmesi için verilen ilk deÄŸerlerin derleme aÅŸamasında belirlenmiÅŸ olması gerekir. Derleme aÅŸamasında tespit edilmesi için ifadenin sabit ifadesi olması gerekir. Oysa C++’ta statik ömürlü deÄŸiÅŸkenlere her türden sıradan bir ifadeyle ilk deÄŸer verilebilir. Bu deÄŸiÅŸkenler 0 ilk deÄŸeriyle amaç koda yazılırlar. Programın çalışma zamanı sırasında ve main fonksiyonundan önce ilk deÄŸerini alırlar.

10-)Parametre değişkenlerinin default değerler alması(default function arguments)

C++’ta fonksiyon çağırılırken bir parametre belirtilmemiÅŸse ona iliÅŸkin parametre deÄŸiÅŸkeni default bir deÄŸer alabilir. Böyle bir durum C’de yoktur. Bir parametre deÄŸiÅŸkeninin default deÄŸer alması durumu fonksiyon tanımlanırken ya da prototip bildiriminde paramere deÄŸiÅŸkeninden sonra eÅŸittir operatörüyle belirtilmelidir.

/*———fark10.cpp———-*/

#include <stdio.h>

void fonk(int x = 10, int y = 20)

{

printf("x = %d y = %d\n", x ,y);

}

void main(void)

{

fonk(100, 200); /* x = 100 y = 200 */

fonk(100); /* x = 100 y = 20 */

fonk(); /* x = 10 y = 20 */

}

/*——————————–*/

Bir parametre değişkeni default değer almışsa onun sağında bulunanların hepsi default değerler almak zorundadır.

void fonk(int x = 10, int y) /* Hata verir */

{

}

void fonk(int x, int y = 20) /* Hata vermez */

{

}

Default değer almamış olan bütün parametre değişkenleri için çağırılma ifadesinde parametre yazılmak zorundadır. Default değer alan parametre değişkenlerine sahip fonksiyonlarla aynı isimli başka fonksiyonların birlikte bulunması durumunda iki anlamlılık hataları oluşabilir. İki anlamlılık hataları fonksiyonların tanımlanması sonucunda değil çağırılması sonucunda ortaya çıkmaktadır.

/* İki anlamlılık hatası örneği */

#include <stdio.h>

void fonk(int x, int y = 20)

{

printf("%d %d\n", x, y);

}

void fonk(int x)

{

printf("%d\n", x);

}

void main(void)

{

fonk(100, 200); /* Hata vermez */

fonk(100); /* İki anlamlılık hatası verir */

}

/*——————————————*/

Bir gösterici parametresi de default değer alabilir.

/* Göstericiye default değer */

#include <stdio.h>

void message(const char *p = "Success")

{

puts(p);

}

void main(void)

{

char *p = "Ali";

message(p);

message();

}

/*——————————————-*/

Default Parametre Değişkenlerine Sahip Fonksiyonların Kullanılma Nedenleri

Çok sayıda parametrelere sahip fonksiyonlar söz konusu ise ve bu parametre değişkenlerinin belli bölümüne çağırma sırasında aynı değerler atanıyorsa default parametre değişkenlerinin kullanılması büyük bir yazım kolaylığı sağlar. Fazla sayıda parametrenin yazılmaması hem programcının iş yükünü azaltır, hem de okunabilirliği arttırır.

#include <stdio.h>

#include <stdlib.h>

void *myitoa(int n, char *str, int base = 10)

{

return itoa(n, str, base);

}

void main(void)

{

char s[100];

myitoa(123, s);

puts(s);

}

Default değer alan parametre değişkeni kullanılırken dikkat etmek gerekir. Bir fonksiyon % 90 aynı parametre değerleriyle çağırılıyorsa default parametre değişkeni kullanılmalıdır. "Hiçbir değer almayacağına bari şu değeri alsın" fikriyle kullanılmamalıdır. Böylesi kullanımlar kodu inceleyen kişiyi yanıltırlar. Bazen parametre değişkenine verilen default değerin özel bir anlamı olmaz. Bu default değer fonksiyonun default parametreyle çağırılıp çağırılmadını tespit etmek amacıyla kullanılır. Gerçek default değerler fonksiyonun içerisinde ve bir dizi işlemlerle elde edilir. Örneğin

#define DEFAULT_CALL (-1)

void writefile(void *ptr, unsigned size, long offset = DEFAULT_CALL)

{

if(offset != DEFAULT_CALL)

fseek(fp, offset, SEEK_SET);

fwrite(ptr, 1, size, fp);

}

void main(void)

{

double x = 10.2;

writefile(&x, sizeof(double));

}

Default Değer Alan Parametre Değişkenlerine Sahip Fonksiyonların Prototipleri

Böyle fonksiyonların prototiplerinde dafault parametre değerleri belirtilmelidir. Prototip yazma işlemi değişken isimlerini kullanarak ya da kullanmayarak yapılabilir. Örneğin aşağıdaki iki prototip de geçerlidir.

void sample(int = 10, int = 20);

void sample(int a = 10, int b = 20);

Prototipi yazılan fonksiyon aynı modül içerisinde tanımlanıyorsa(yani kütüphane içerisinde değilse) tanımlama sırasında bir daha bu default değerler yazılamaz. Yani default değerler ya prototipte ya da tanımlama sırasında belirtilmek zorundadır. Her ikisinde birden belirtilemezler. Tavsiye ediln kullanım prototipte belirtilmesi, tanımlama da belirtilmemesidir.

void sample(int x = 10, int y = 20);

void sample(int x =10, int y = 20) /* Hata verir */

{

}

void sample(int x, int y) /* Hata vermez */

{

}

11-)C++’ta göstericilere benzeyen ve ismine referans denilen ayrı bir tür vardır.

Referans Türünden Bir Göstericinin Tanımlanması

Genel biçimi:

<tür> &<referans_ismi> = <nesne>

Örnek:

int a = 10;

int &b = a;

double x;

……….

double &y = x;

Bir referans ilk değer verilerek tanımlanmak zorundadır. Örneğin:

int &r; /* hata */

double &r = 10.2; /* hata */

Referansa verilen ilk değer aynı türden bir nesne olmak zorundadır.

double x = 10 ;

int &r = x; /* Hata. Farklı türden bir nesneyle ilk değer verilmiş. */

int &r = a; /* Okunuşu: r int türünden bir referanstır */

Referanslar bir çeşit düzeyi yüksek göstericidir. Referansların içerisinde adres bilgisi bulunur. Derleyici bir referans tanımlandığında ilk değer olarak verilen nesnenin adresini referansın içerisine yerleştirir. Referansları iyi anlayabilmek için onların eşdeğer gösterici karşılıklarını düşünmek gerekir. Eş değer gösterici karşılığı referans yerine gösterici kullanıldığında elde edilecek eş değer kod anlamına gelir.

int a = 10;

int &b = a;

Eşdeğer karşılığı:

int a = 10;

int *b = &a;

Bir referans ilk değer verildikten sonra kullanıldığında artık referans içerisindeki adres değil referans içerisindeki adreste bulunan bilgi temsil edilir.

/*———-fark11.cpp————–*/

#include <stdio.h>

#if 1

void main(void) /* referans kullanımı */

{

int a = 10;

int &b = a;

b = 50;

printf("%d %d\n", b, a);

}

#endif

#if 0

void main(void) /* referansın gösterici karşılığı */

{

int a = 10;

int *b = &a;

*b = 50;

printf("%d %d\n", *b, a);

}

#endif

/*————————————-*/

int a = 10;

int &b = &a; /* Hata: &a int türünden değil adres türündendir */

Referansların Fonksiyon Parametresi Olarak Kullanılması

Referanslar fonksiyon parametresi olarak kullanılabilirler. Madem ki bir referans aynı türden bir nesneyle ilk değer verilerek tanımlanmak zorundadır, o halde parametresi referans olan fonksiyonlar aynı türden bir nesnenin kendisiyle çağırılmak zorundadır.

/* fonksiyon parametresi olan referans örneği */

#include <stdio.h>

#if 1 /* parametresi referans */

void fonk(int &a)

{

a = 20;

}

void main(void)

{

int x = 10;

fonk(x);

printf("%d\n", x);

}

#endif

#if 0 /* gösterici karşılığı */

void fonk(int *a)

{

*a = 20;

}

void main(void)

{

int x = 10;

fonk(&x);

printf("%d\n", x);

}

#endif

/*————————————————————*/

Bir C programında fonk(a) gibi bir çağırma iÅŸlemiyle a deÄŸiÅŸtirilemez. Oysa C++’ta böyle bir çağırma fonksiyonun parametre deÄŸiÅŸkeni bir referans ise a paametresini deÄŸiÅŸtirebilir. Klasik bir C bakış açısıyla parametre olan a’nın deÄŸiÅŸtirilmeyeceÄŸi sanılabilir. OkunabilirliÄŸi kuvvetlendirmek için eÄŸer parametreyi deÄŸiÅŸtirecek bir fonksiyon tasarlanacaksa bunun için referans deÄŸil gösterici kullanılmalıdır. Fonksiyonun parametre deÄŸiÅŸkeni referans ise derleyici tarafından otomatik olarak yapılan bir adres aktarımı söz konusudur.

Referans uygulaması Gösterici eşdeğeri

int a = 10;int &r1 = a;int &r2 = r1;r2 = 20;printf("%d\n", r1); int a = 10;int *r1 = &a;int r2 = &r1;*r2 = 20;printf("%d\n", *r1);

/*—–referans.cpp—–*/

#include <stdio.h>

#if 1 /* referans örneği */

void main(void)

{

int a = 10;

int &a1 = a;

int &a2 = a1;

a2 = 20;

printf("%d\n", a1);

}

#endif

#if 0 /*gösterici eşdeğeri */

void main(void)

{

int a = 10;

int *a1 = &a;

int *a2 = a1;

*a2 = 20;

printf("%d\n", *a1);

}

#endif

/*————————-*/

/*—–referan1.cpp—–*/

#include <stdio.h>

void main(void)

{

int a = 10;

int &b = a;

printf("%p %p\n", &a, &b);

}

/*————————–*/

Bir referans & operatörüyle adres alma iÅŸlemine sokulabilir. Bu durumda elde edilen deÄŸer referans içerisinde bulunan adreste bulunan nesnenin adresidir. Bu da referans içerisindeki adresle aynı olmak zorundadır. Bir referansın da bir adresi vardır. Ama o adres deÄŸeri geçerli bir ifdade ile elde edilemez. r bir referans olmak üzere & &r; ifadesi geçerli deÄŸildir. Çünkü bu ifadenin eÅŸdeÄŸer gösterici karşılığı & &*p;’dir ve &*p bir nesne deÄŸildir.

Yapı Değişkenlerinin Referans Yoluyla Fonksiyonlara Geçirilmesi

Bir yapı deÄŸiÅŸkeninin fonksiyona aktarılmasında doÄŸru teknik yapı deÄŸiÅŸkeninin adresinin fonksiyona geçirilmesidir. Yani fonksiyon yapı deÄŸiÅŸkeninin adresiyle çağırılır, fonksiyonun parametre deÄŸiÅŸkeni o yapı türünden bir gösterici olur. Fonksiyonun içerisinde elemana ok(->) operatörüyle eriÅŸilir. Ancak C++’ta aynı etkinlikte olmak üzere referansla aktarım da söz konusudur. Yani fonksiyon yapı deÄŸiÅŸkeninin kendisiyle çağırılır. Fonksiyonun parametre deÄŸiÅŸkeni o yapı türünden bir referans olur. Fonksiyon içeriisnde elemana nokta operatörüyle eriÅŸilir.

/*———-referan2.cpp————-*/

#include <stdio.h>

struct PERSON{

char *name;

int no;

};

void disp(struct PERSON &r)

{

printf("%s %d\n", r.name, r.no);

}

void main(void)

{

struct PERSON per = {"Ali Serçe", 123};

disp(per);

}

/*————————————–*/

Yapıların referans ya da gösterici yoluyla fonksiyonlara aktarılması tamamen eşdeğer kullanımlardır.

const Referanslar

Bir referans da const olarak tanımlanabilir.

Referans örneği Gösterici eşdeğeri

int a = 10;const int &b = a;b = 20; /* Hata */ int a = 10;const int *p = &a;*p = 20; /* Hata */

const bir referans, gösterdiği yer const olan const bir göstericiye eşdeğerdir. Yani böyle referanslar sol tarafa değeri olarak kullanılamaz. Çünkü referans içerisinde bulunan adresteki bilgi const yapılmıştır. Const referanslar da okunabilirliği arttırmak amacıyla fonksiyon parametresi olarak kullanılırlar.

void disp(const struct PERSON &r);

Fonksiyonun referans olan parametresi de default argüman alabilir.

int x;

void fonk(int &a = x) /*fonksiyonun referans olan parametresi default değer almış*/

{

}

char &a = "Ali"; /* Doğru bir kullanımdır */

Fonksiyonun Geri Dönüş Değerinin Referans Olma Durumu

return ifadesiyle geri dönüş değerinin oluşturulması aslında derleyici tarafından tahsis edilen geçici bir bölgeye yapılan atama işlemidir. Yani return ifadesi önce geçici bir bölgeye yerleştirilir, sonra oradan alınarak kullanılır. Fonksiyonun geri dönüş değerinin türü bu geçici bölgenin türüdür. Bir fonksiyonun geri dönüş değeri referans olabilir. Bu durumda fonksiyonun geri dönüş değerine ilişkin geçici bölge referans türündendir. Bir referansa bir nesneyle ilk değer verileceğine göre böyle fonksiyonları return ifadelerinin de nesne olması gerekir.

Gösterici eşdeğeri Referans örneği

/*—–referan3.cpp—–*/#include <stdio.h>int a = 10;int *fonk(void){ return &a;}void main(void){ *fonk() = 20; printf("%d\n", a);} /*——referan4.cpp—–*/#include <stdio.h>int a = 10;int &fonk(void){ return a;}void main(void){ fonk() = 20; printf("%d\n", a);}

Artık bu fonksiyon kullanıldığında referans kullanılıyor gibi işlem göreceğinden return ifadesindeki nesne anlaşılır. Böyle fonksiyonların geri dönüş değeri nesne belirtir ve sol taraf değeri olarak kullanılabilir. Özetle referansa geri dönen bir fonksiyonun geri dönüş değeri kullanıldığında return ifadesindeki nesnenin kullanıldığı anlaşılır.

Bir Referansa Farklı Bir Türden Bir Nesneyle İlk Değer Verilmesi Durumu

Böyle bir durumda önce referansla aynı türden geçici bir değişken yaratılır. Verilen ilk değeri bu geçici değişkene atar, tabii otomatik tür dönüştürülmesi olur ve yaratılan bu geçici bölgenin adresi referansa aktarılır.

/*—–referan5.cpp—–*/

#include <stdio.h>

void main(void)

{ /* EÅŸdeÄŸeri */

double x = 3.2; /* double x =3.2; */

int &r = x; /* int temp = x; */

/* int &r = temp; */

r = 5;

printf("%f\n", x);

}

/*————————–*/

Tabii böylesi bir durumda derleyiciler bir uyarıyla durumu bildirirler.

Bir Referansa Sabitle İlk Değer Verilmesi Durumu

Bir referansa bir sağ taraf değeriyle de ilk değer verilebilir. Bu durumda ilk değer olarak verilen sağ taraf değeri derleyici tarafından oluşturulan geçici bir bölgenin içerisine aktarılır. Geçici bölgenin adresi de referansa yerleştirilir.

Referans örneği Eşdeğeri

/*—–referan6.cpp—–*/#include <stdio.h>void main(void){ int &r = 10; r = 50; printf("%d\n", r);} int temp;int &r = temp;

Böyle iki problemli ilk değer verme durumlarından da kaçınmak gerekir. Her iki durumda da derleyici uyarı mesajı verecektir.

Göstericilerle Referanslar Arasındaki Benzerlikler ve Farklılıklar

- Göstericiler de referanslar da adres tutan nesnelerdir.

- Referansın içerisindeki adres bir daha değiştirilemez ama göstericinin içerisindeki adres değiştirilebilir.

- Diziler türü ne olursa olsun, referans yoluyla referanslara geçirilemezler. Çünkü dizi elemanlarına erişmek için adres arttırımı yapmak gerekir.

- Referanslar tek bir elemanı fonksiyona geçirmek için kullanılabilirler.

12-)C’de enum türü ile int türü tamamen aynıdır. Yani enum türünden bir deÄŸiÅŸkene int türünden bir deÄŸer atanabilir. Oysa C++’ta enum türü ayrı bir türdür ve enum türünden deÄŸiÅŸkenlere ancak enum türünden sabitler atanabilir.

SINIFLAR(classes)

Sınıflar nesne yönelimli programlama tekniÄŸini uygulayabilmek için mutlaka gerekli olan C’deki yapılara benzeyen C++’a özgü veri yapılarıdır.

Tıpkı yapılarda olduÄŸu gibi sınıflarla da çalışmadan önce bir sınıf bildirimi yapmak gerekir. Sınıf bildirimi bellekte yer kaplamaz(C++’ta nesne terimi daha çok bir sınıf türünden deÄŸiÅŸkeni anlatmakta kullanılır. Nesne yönelimli programlama tekniÄŸi sınıflar kullanılarak program yazma tekniÄŸidir).

Sınıf Bildiriminin Genel Biçimi:

class [sınıf_ismi] {

[private:]

[protected:]

[public:]

};

Bir sınıf 3 bölümden oluşur:

1. Private

2. Protected

3. Public

Bir bölüm bölüm belirten anahtar sözcük ve iki nokta üst üste ile başlatılır, başka bir bölüm belirten sözcüğe kadar sürer. Birden fazla aynı bölüm belirten anahtar sözcük aynı sınıf bildirimi içerisinde kullanılabilir. Bölüm belirten anahtar sözcüklerin biri ya da hiçbirisi yazılmak zorunda değildir. Sınıf hiçbir bölüm belirten anahtar sözcükle başlatılmamışsa private bölüm anlaşılır. Okunabilirlik açısından sınıf isminin ilk harfi büyük geri kalan harfleri küçük yazılır. Bir yapı yalnızca veri elemanlarına sahiptir. Sınıflar hem veri hem fonksiyon içeren veri yapılarıdır. Yani normal yapılardan sınıfların fazlalıkları aynı zamanda fonksiyon da içermeleridir. Sınıf içerisinde bildirilen değişkenlere sınıfın veri elemanları(data member) sınıf içerisinde bildirilen fonksiyonlara ise sınıfın üye fonksiyonlar(member function) denir(daha yüksek seviyeli nesne yönelimli dilllerinde metod ismi de kullanılır). Veri elemanları ve üye fonksiyonları sınıfın herhangi bir yerinde yazılabilir. Üye fonksiyonların sadece prototipleri sınıf içerisine konur. Tanımlamaları sınıf bildiriminden sonra yapılır. Ancak genellikle protected bölümü pek kullanılmaz, sınıfın veri elemanları private bölüme üye fonksiyonları public bölüme yazılır.

Bir Sınıf Türünden Nesnenin Tanımlanması

Genel biçimi:

[class] <sınıf_ismi> <nesne_ismi>;

class Sample x;

Sample y;

class anahtar sözcüğü yazılmayabilir. C++’ta yapı türünden nesne tanımlarken struct anahtar sözcüğü de kullanılmayabilir. Bir sınıf nesnesi için sınıfın toplam veri elemanları kadar yer ayrılır.

/*—–class1.cpp—–*/

#include <stdio.h>

class Sample {

private:

int a, b;

public:

void fonk(void);

};

void main(void)

{

Sample x;

printf("%d\n", sizeof(x));

}

/*———————–*/

Üye Fonksiyonları Tanımlanması

Üye fonksiyonları prototipleri sınıf bildirimi içerisine yerleştirilir, tanımlamaları dışarıda aşağıdaki gibi yapılır.

[geri dönüş değerinin türü] <sınıf isim> :: <fonksiyon ismi> ([parametreler])

void Sample::fonk(void)

{

}

İki tane iki nokta üstüste C++’a özgü bir operatördür. Üye fonksiyonlar amaç koda parametre türleri ve sınıf isimleriyle kombine edilerek yazılırlar. Yani aynı isimli ve aynı parametre yapısına sahip bir üye fonksiyonu ve global bir fonksiyon tanımlanabilir. Hiçbir sınıfa ait olmayan fonksiyonlara global fonksiyon denir.

Sınıfın Veri Elemanlarına ve Üye Fonksiyonlarına Erişim

Sınıfın veri elemanlarına ve üye fonksiyonlarına nokta operatörüyle erişilir. Bir üye fonksiyonu ancak aynı sınıf türünden bir nesneyle çağırılabilir. Eğer nesne olmadan çağırılırsa global bir fonksiyonun çağırıldığı anlaşılır.

X.fonk(); /*üye fonksiyonu çağırılmış*/

fonk(); /*global fonkiyon çağırılmış*/

/*—–class2.cpp—–*/

#include <stdio.h>

class Sample {

public:

int a, b;

public:

void fonk(void);

};

void Sample::fonk(void)

{

printf("I’m sample fonk..\n");

}

void fonk(void)

{

printf("I’m global fonk..\n");

}

void main(void)

{

class Sample X;

X.a = 10;

X.b = 20;

X.fonk();

fonk();

}

/*———————–*/

Bir üye fonksiyon içerisinde sınıfın hangi bölümünde tanımlanmış olursa olsun bütün veri elemanları ve üye fonksiyonlarına doğrudan erişilebilir. Yani sınıfın veri elemanları sınıfın üye fonksiyonları arasında ortak olarak kullanılmaktadır. Bir üye fonksiyon içerisinde kullanılan üye fonksiyonları o üye fonksiyon hangi sınıf nesnesiyle çağırılmışsa o sınıf nesnesinin elemanları olur.

/*—–class3.cpp—–*/

#include <stdio.h>

class Sample {

public:

int a;

public:

void fonk1(int x);

void fonk2(void);

};

void Sample::fonk1(int x)

{

printf("I’m sample fonk1..\n");

a = x;

}

void Sample::fonk2(void)

{

printf("%d\n", a);

}

void main(void)

{

class Sample X;

X.fonk1(50);

Sample Y;

Y.fonk1(100);

X.fonk2();

Y.fonk2();

}

/*———————–*/

Bir üye fonksiyonu içerisinde sınıfın bir diğer üye fonksiyonu da doğrudan çağırılabilir. Sınıfın a üye fonksiyonu X nesnesiyle çağırılmış olsun, a üye fonksiyonu içerisinde b üye fonksiyonu doğrudan çağırılabilir. Bu durumda b üye fonksiyonu içerisinde kullanılan veri elemanları X sınıf nesnesine ilişkindir.

/*—–class4.cpp—–*/

#include <stdio.h>

class Sample {

public:

int a;

public:

void fonk1(int x);

void fonk2(void);

};

void Sample::fonk1(int x)

{

printf("I’m sample fonk1..\n");

a = x;

fonk2();

}

void Sample::fonk2(void)

{

printf("%d\n", a);

}

void main(void)

{

class Sample X;

X.fonk1(50);

}

/*———————–*/

Sınıf Faaliyet Alanı(class scope)

C’de dardan geniÅŸe doÄŸru 3 tür faaliyet alanı vardır:

1. Blok faaliyet alanı

2. Fonksiyon faaliyet alanı

3. Dosya faaliyet alanı

C’de ve C++’ta aynı faaliyet alanına iliÅŸkin birden fazla deÄŸiÅŸken aynı isimle tanımlanamaz. Ancak farklı faaliyet alanına iliÅŸkin aynı isimli birden fazla deÄŸiÅŸken tanımlanabilir. Bir blok içerisinde birden fazla aynı isimli deÄŸiÅŸken faaliyet gösteriyorsa o blok içerisinde dar faaliyet alanına sahip olan eriÅŸilebilir.

C++’ta sınıf faaliyet alanı diye isimlendirilen ayrı bir faaliyet alanı daha tanımlanmıştır. Sınıf faaliyet alanı fonksiyon faaliyet alanı ile dosya faaliyet alanı arasında bir alana sahiptir. Sınıf faaliyet alanı yalnızca bir sınıfın tüm üye fonksiyonları arasında tanınma aralığıdır. Sınıfın veri elelamanları ve üye fonksiyon isimleri sınıf faaliyet alanına uyarlar. Bir sınıfın veri elemanıyla aynı isimli sınıfın üye fonksiyonu içerisinde aynı isimli bir yerel deÄŸiÅŸken tanımlanabilir. Bu durumda fonksiyon içerisindeki blokta yerel olana eriÅŸilir. Benzer biçimde bir üye fonksiyon içerisinde bir fonksiyon çağırılmışsa çağırılan fonksiyon ile aynı isimli hem global hem de bir üye fonksiyon varsa dar faaliyet alanı kuralına göre üye fonksiyon çağırıldığı varsayılır.

Çözünürlük Operatörü(:(scope resolution operator)

:: operatörüne çözünürlük operatörü denir. Bu opertörün hem binary-infix hem de unary-prefix olarak kullanılan tipleri vardır.

1. Binay infix resolution operatörü:

Bu kullanımda sol tarafındaki operandın bir sınıf ismi, sağ tarafındaki operandın ise veri elemanı ya da fonksiyon ismi olması gerekir. Bu operatör sınıfın faaliyet alanı probleminden dolayı gizlenmiş olan veri elemanına ya da üye fonksiyonuna erişimini sağlar.

void Sample::fonk1(int a)

{

printf("Sample fonk1..\n");

Sample::a = a; /*sınıfın veri elemanı olan a’ya parametre a’yı ata*/

}

2. Unary prefix resolution operatörü:

Bu durumda operand global bir değişken ya da fonksiyon ismi olabilir. Bu haliyel bu operatör faaliyet alanı probleminden dolayı global olana erişimi sağlar. Bu operatör öncelik tablosunun en yüksek düzeyinde bulunur.

Başlangıç ve Bitiş Fonksiyonları

1. Başlangıç Fonksiyonları(constructors)

Bir sınıf destesi tanımlandığında derleyici tarafından otomatik olarak çağırılan fonksiyona sınıfın baÅŸlangıç fonksiyonu denir. Yerel bir sınıf nesnesi programın akışı tanımlama noktasına geldiÄŸinde, global bir sınıf nesnesiyse program belleÄŸe yüklenir yüklenmez yaratılır. BaÅŸlangıç fonksiyonun ismi sınıf ismiyle aynı olmalıdır. BaÅŸlangıç fonksiyonlarının geri dönüş deÄŸeri gibi bir kavramı yoktur. Yani geri dönüş türü yerine bir ÅŸey yazılmaz. bu durum int ya da void anlamına gelmez. BaÅŸlangış fonksiyonları içerisinde return anahtar sözcüğü kullanılabilir, ancak yanına bir ifade yazılamaz. C++’ta farklı parametre yapısına sahip birden fazla baÅŸlangıç fonksiyonu olabilir. Parametresi olmayan(yani void olan) baÅŸlangış fonksiyonuna default baÅŸlangıç fonksiyonu(default constructor) denir. EÄŸer sınıf nesnesi nesne isminden sonra parantez açılmadan yani normal bir biçimde tanımlanmış ise (örneÄŸin: X n bu durumda varsayılan baÅŸlangıç fonksiyonu çağırılır. EÄŸer nesne isminden sonra bir parantez açılır ve içerisine bir parametre listesi yazılırsa (örneÄŸin: X n(10) parametre listesine uygun olan baÅŸlangıç fonksiyonu çağırılır.

Uyarı: Nesne isminden sonra parantez açılıp içine hiçbirşey yazılmazsa bu durumda varsayılan başlangıç fonksiyonu çağırılmaz. Bu ifade bir fonksiyon prototipi anlamına gelir. Örneğin:

X a(); /*parametresi olmayan, X türünden bir fonksiyonun prototipi*/

Global sınıf nesnelerine ait başlangıç fonksiyonları main fonksiyonundan önce çağırılır. Daha yukarıda tanımlanan daha önce çağırılacak bir biçimde sıralama söz konusudur.

2. BitiÅŸ Fonksiyonu(destructor)

Bir nesne faaliyet alanını bitirmesiyle bellekten silinir. Yerel deÄŸiÅŸkenler programın akışı tanımlandıkları bloÄŸun sonunda, global deÄŸiÅŸkenler ise programın bitimiyle bellekten silinirler. Bir sınıf nesnesi bellekten silineceÄŸi zaman otomatik olarak çağırılan fonksiyona bitiÅŸ fonksiyonu(destructor function) denir. BitiÅŸ fonksiyonunun ismi sınıf ismiyle aynıdır, anck başına bir ~ sembolü getirilir. BitiÅŸ fonksiyonunun da geri dönüş deÄŸeri gibi bir kavramı yoktur. BitiÅŸ fonksiyonu en az ve en fazla bir tane olabilir. Parametresi void olmak zorundadır. Yani parametresi olmamak zorundadır. Varsayılan bitiÅŸ fonksiyonu diye bir kavram yoktur. Global bir sınıf nesnesine ait bitiÅŸ fonksiyonu programın sonucunda main bittikten sonra yani main’in sonunda çalıştırılır. BaÅŸlangıç ve bitiÅŸ fonksiyonlarının çağırılma sıraları her zaman terstir. a ve b herhangi türden iki sınıf nesnesi olmak üzere baÅŸlangıç fonksiyonları önce a sonra b olacak ÅŸeklinde çağırılıyorsa bitiÅŸ fonsiyonları önce b sonra a ÅŸeklinde çağırılır(LIFO sistemi).

Başlangıç ve Bitiş Fonksiyolarının Bulundurulma Kuralı

Sınıfın bitiş fonksiyonu olmak zorunda değildir. Yani varsa çağırılır yoksa çağırılmaz. Bir sınıf nesnesinin tanımlanma biçimine uygun bir başlangıç bir fonksiyonu olmak zorundadır. Ancak sınıfın hiçbir başlangıç fonksiyonu yoksa ve nesne varsayılan başlangıç fonksiyonu çağırılacak biçimde tanımlanmışsa bu durum istisna olarak hata oluşturmaz. Ancak sınıfın herhangi bir başlangıç fonksiyonu varsa fakat varsayılan başlangıç fonksiyonu yoksa varsayılan fonksiyonu çağıracak biçimde yapılacak bir tanımlama hata ile sonuçlanır.

Başlangıç ve Bitiş Fonksiyonlarının Kullanılma Nedenleri

Nesne yönelimli programlama da bir sınıf belirli bir amacı gerçekleştiren bir kütüphane olarak ele alınabilir. Örneğin seri port işlemlerini yapan bir sınıf tasarlanabilir. Fare işlemleri için ayrı bir sınıf yazılabilir. Bu sınıfların faydalı işlemleri yapan bir takım üye fonksiyonları olmalıdır. Bu üye fonksiyonlar sınıfın veri elemanlarını ortak olarak kullanırlar. Bir sınıf bir takım yararlı işleri yapmaya aday ise o yararlı işlemleri gerçekleştirmek için bazı hazırlık işlemleri gerekebilir. Örneğin seri port ile ilgili işlem yapan bir sınıfta seri portun set edilmesi, fare işlemleri yapan sınıfta farenin reset edilmesi dosya işlemleri yapan bir sınıfta dosyanın açılması bu tür hazırlık işlemleridir. Bu hazırlık işlemleri sınıfın başlangıç fonksiyonu içerisinde yapılırsa sınıfı kullanan kod küçülür, ayrıntılar göz ardı edilir ve algılama iyileştirilir(abstraction). Örneğin dosya işlemleri yapan sınıfın başlangıç fonksiyonu içerisinde dosya açılabilir. Nesne tanımlanır tanımlanmaz hazırlık işlemlerinin otomatik olarak yapılması sınıfı kullanan kişilerin de işlerini kolaylaştırır.

Bitiş fonksiyonu başlangıç fonksiyonuyla yapılan hazırlık işlemlerinin otomatik bir biçimde geri alınması için kullanılır. Örneğin dosya işlemlerini yapan sınıfın bitiş fonksiyonu otomatik olarak kapayabilir. Seri port işlemlerini yapan sınıfın bitiş fonksiyonu port ayarlarını eski durumuna getirebilir. Tabii bazı durumlarda hazırlık işlemlerinin geri alınması gerekmeyebilir. Yani başlangıç fonksiyonunun olması bitiş fonksiyonunun olmasını mantıksal bakımdan gerekli kılmaz.

Genel Biçi Sınıf Bildirimininmi:

class [sınıf_ismi] {

[private:]

[protected:]

[public:]

};

Bir sınıf 3 bölümden oluşur:

1. Private

2. Protected

3. Public

Bir bölüm bölüm belirten anahtar sözcük ve iki nokta üst üste ile başlatılır, başka bir bölüm belirten sözcüğe kadar sürer. Birden fazla aynı bölüm belirten anahtar sözcük aynı sınıf bildirimi içerisinde kullanılabilir. Bölüm belirten anahtar sözcüklerin biri ya da hiçbirisi yazılmak zorunda değildir. Sınıf hiçbir bölüm belirten anahtar sözcükle başlatılmamışsa private bölüm anlaşılır. Okunabilirlik açısından sınıf isminin ilk harfi büyük geri kalan harfleri küçük yazılır. Bir yapı yalnızca veri elemanlarına sahiptir. Sınıflar hem veri hem fonksiyon içeren veri yapılarıdır. Yani normal yapılardan sınıfların fazlalıkları aynı zamanda fonksiyon da içermeleridir. Sınıf içerisinde bildirilen değişkenlere sınıfın veri elemanları(data member) sınıf içerisinde bildirilen fonksiyonlara ise sınıfın üye fonksiyonlar(member function) denir(daha yüksek seviyeli nesne yönelimli dilllerinde metod ismi de kullanılır). Veri elemanları ve üye fonksiyonları sınıfın herhangi bir yerinde yazılabilir. Üye fonksiyonların sadece prototipleri sınıf içerisine konur. Tanımlamaları sınıf bildiriminden sonra yapılır. Ancak genellikle protected bölümü pek kullanılmaz, sınıfın veri elemanları private bölüme üye fonksiyonları public bölüme yazılır.

Bir Sınıf Türünden Nesnenin Tanımlanması

Genel biçimi:

[class] <sınıf_ismi> <nesne_ismi>;

class Sample x;

Sample y;

class anahtar sözcüğü yazılmayabilir. C++’ta yapı türünden nesne tanımlarken struct anahtar sözcüğü de kullanılmayabilir. Bir sınıf nesnesi için sınıfın toplam veri elemanları kadar yer ayrılır.

/*—–class1.cpp—–*/

#include <stdio.h>

class Sample {

private:

int a, b;

public:

void fonk(void);

};

void main(void)

{

Sample x;

printf("%d\n", sizeof(x));

}

/*———————–*/

Üye Fonksiyonları Tanımlanması

Üye fonksiyonları prototipleri sınıf bildirimi içerisine yerleştirilir, tanımlamaları dışarıda aşağıdaki gibi yapılır.

[geri dönüş değerinin türü] <sınıf isim> :: <fonksiyon ismi> ([parametreler])

void Sample::fonk(void)

{

}

İki tane iki nokta üstüste C++’a özgü bir operatördür. Üye fonksiyonlar amaç koda parametre türleri ve sınıf isimleriyle kombine edilerek yazılırlar. Yani aynı isimli ve aynı parametre yapısına sahip bir üye fonksiyonu ve global bir fonksiyon tanımlanabilir. Hiçbir sınıfa ait olmayan fonksiyonlara global fonksiyon denir.

Sınıfın Veri Elemanlarına ve Üye Fonksiyonlarına Erişim

Sınıfın veri elemanlarına ve üye fonksiyonlarına nokta operatörüyle erişilir. Bir üye fonksiyonu ancak aynı sınıf türünden bir nesneyle çağırılabilir. Eğer nesne olmadan çağırılırsa global bir fonksiyonun çağırıldığı anlaşılır.

X.fonk(); /*üye fonksiyonu çağırılmış*/

fonk(); /*global fonkiyon çağırılmış*/

/*—–class2.cpp—–*/

#include <stdio.h>

class Sample {

public:

int a, b;

public:

void fonk(void);

};

void Sample::fonk(void)

{

printf("I’m sample fonk..\n");

}

void fonk(void)

{

printf("I’m global fonk..\n");

}

void main(void)

{

class Sample X;

X.a = 10;

X.b = 20;

X.fonk();

fonk();

}

/*———————–*/

Bir üye fonksiyon içerisinde sınıfın hangi bölümünde tanımlanmış olursa olsun bütün veri elemanları ve üye fonksiyonlarına doğrudan erişilebilir. Yani sınıfın veri elemanları sınıfın üye fonksiyonları arasında ortak olarak kullanılmaktadır. Bir üye fonksiyon içerisinde kullanılan üye fonksiyonları o üye fonksiyon hangi sınıf nesnesiyle çağırılmışsa o sınıf nesnesinin elemanları olur.

/*—–class3.cpp—–*/

#include <stdio.h>

class Sample {

public:

int a;

public:

void fonk1(int x);

void fonk2(void);

};

void Sample::fonk1(int x)

{

printf("I’m sample fonk1..\n");

a = x;

}

void Sample::fonk2(void)

{

printf("%d\n", a);

}

void main(void)

{

class Sample X;

X.fonk1(50);

Sample Y;

Y.fonk1(100);

X.fonk2();

Y.fonk2();

}

/*———————–*/

Bir üye fonksiyonu içerisinde sınıfın bir diğer üye fonksiyonu da doğrudan çağırılabilir. Sınıfın a üye fonksiyonu X nesnesiyle çağırılmış olsun, a üye fonksiyonu içerisinde b üye fonksiyonu doğrudan çağırılabilir. Bu durumda b üye fonksiyonu içerisinde kullanılan veri elemanları X sınıf nesnesine ilişkindir.

/*—–class4.cpp—–*/

#include <stdio.h>

class Sample {

public:

int a;

public:

void fonk1(int x);

void fonk2(void);

};

void Sample::fonk1(int x)

{

printf("I’m sample fonk1..\n");

a = x;

fonk2();

}

void Sample::fonk2(void)

{

printf("%d\n", a);

}

void main(void)

{

class Sample X;

X.fonk1(50);

}

/*———————–*/

Sınıflarda Temel Erişim Kuralları

Temel erişim kuralı sınıf bölümlerinin ne anlama geldiğiyle ilgilidir. İki kural vardır:

1. Bir sınıf nesnesi yoluyla dışarıdan nokta ya da ok operatörünü kullanarak sınıfın yalnızca public bölümünde bildirilen veri elemanlarına ya da fonksiyonlarına erişilebilir. Private veya protected bölümlerine erişilemez.

2. Sınıfın üye fonksiyonu hangi bölümde bildirilmiş olursa olsun sınıfın her bölümündeki veri elemanlarına ve üye fonksiyonlarına erişebilir. Yani üye fonksiyonlar içerisinde sınıfın her bölümündeki veri elemanlarını kullanabilir ve üye fonksiyonlarını çağırabiliriz.

Genellikle sınıfın veri elemanları sınıfın rivate bölümünde üye fonksiyonları ise public bölümde tutulur. Böylece veri elemanlarına dışarıdan doğrudan erişilemez. Dışarıdan doğrudan üye fonksiyonlara erişilir. Üye fonksiyonları veri elemanlarına erişirler. Yani veri elemanlarına doğrudan değil üye fonksiyonlar yoluyla erişilmesi istenmiştir. Eğer private bölgedeki veri elemanlarının değerlerini almak ya da bunlara değer yerleştirilmek istenirse bunlarla ilişki kuran bir grup get ve set fonksiyonu yazmak gerekir.

Yeniden kullanılabilirlik(reusability) nesne yönelimli programlama tekniğinin anahtar kavramlarından birisidir. Bu kavram yazılmış olan bir kodun özellikle de bir sınıfın başka projelerde tekrar yazılmadan kullanılması anlamına gelir.

Veri Elemanlarının private, Üye Fonksiyonlarının public Kısmına Yazılması

Genellikle sınıflarda veri koruması istendiği zaman sınıfın veri elemanları private bölgeye üye fonksiyonları ise public bölgeye yazılırlar. Sınıfın veri elemanlarının private bölgeye yerleştirilmesi dışarıdan onlara doğrudan erişimi engeller. Onlara public bölgedeki bir grup üye fonksiyon ile erişiriz. Normalde tasarlanmış olan bir sınıf çok değişik ve uzun kodlarda kullanılabilir. Yani sınıfı kullanan kodlar sınıfın kendi kodlarından çok daha fazladır. Eğer veri elemanlarını private bölgeye yerleştirirsek o veri elemanlarının genel yapısında değişiklik olduğunda sınıfı kullanan kodları değiştirmek zorunda kalmayız. Yalnızca prototipleri aynı kalmak üzere sınıfın üye fonksiyonlarını yeniden yazmak zorunda kalırız. Oysa veri elemanları puıblic bölgeye yerleştirilseydi, dışarıdan bu elemanlara doğrudan erişilebilirdi ve veri yapısı değiştiğinde onu kullanan tüm kodları değiştirmek gerekirdi. Çeşitli veri elemanlarını ve üye fonksiyonları private bölgeye yerleştirmekle onları sınıfı kullanan kişinin algısından uzak tutarız. Kişiler erişemeyecekleri bilgileri incelemezler. Bu durumda nesne yönelimli programlama tekniğinde veri gizleme(data hiding) denir. Tabi veri elemanlarının private bölgeye yerleştirilmesi bunlara erişimi zorlaştırır. Çünkü erişim doğrudan değil, ara birim üye fonksiyonlarla yapılır. Sınıfın veri yapısı değiştirilmeyecekse veri elemanları doğrudan public bölgeye de yerleştirilebilir. Bu durumda onları doğrudan kullanmanın bir zararı olmaz.

/*—-date2.cpp—-*/

/*—-date3.cpp—-*/

Dinamik Tahsisat Yapan Sınıflar

Pek çok sınıf başlangıç fonksiyonu içerisinde bir veri elemanı için dinamik tahsisat yapar.

Birkaç Windows Terimi

Salı, 06 Kasım 2007

Birkaç Windows terimi

.inf Aygıt bilgilerini veya donanım işlemlerini denetlemek için komut dosyalarını içeren dosyalar için dosya adı uzantısı.

100baseT

Saniyede 100 Mb/S hızında veri taşıyan çift bükümlü kablo kullanan yerel alan ağları için Ethernet standardı.

10base2

200 metrelik ince eş eksenli kablo kullanan ve 10 Mb/s hızında veri taşıyan ana bant yerel alan ağları için Ethernet ve IEEE 802.3 standardı. Kablolar, BNC bağlayıcısı ile ağ bağdaştırıcılarına bağlanır.

10baseT

Saniyede 10 Mb/S hızında veri taşıyan çift bükümlü kablo kullanan yerel alan ağları için Ethernet standardı.

Active Directory

Bir ağdaki nesnelere ilişkin bilgileri saklayan ve bu bilgileri kullanıcıların ve ağ yöneticilerinin kullanımına sunan dizin hizmeti. Active Directory, ağ kullanıcılarına tek bir oturum açma işlemi kullanarak ağ üzerinde herhangi bir yerde bulunan kaynaklara erişim sağlar. Ağ yöneticilerinin, kullanımı kolay, hiyerarşik bir ağ görüntüsüyle çalışmasını ve tüm ağ nesnelerini tek bir noktadan yönetmesini sağlar.

Active Directory Kullanıcıları ve Bilgisayarları

Günlük Active Directory yönetim görevlerini gerçekleştirmek için tasarlanmış bir yönetim aracı. Bu görevler, dizinde saklanan nesneleri oluşturma, silme, değiştirme, taşıma ve izinlerini ayarlama işlemlerini içerir. Bu nesneler, kuruluş birimleri, kullanıcılar, kişiler, gruplar, bilgisayarlar, yazıcılar ve paylaşılan dosya nesneleridir.

aÄŸ

Tüm aygıtların birbirleriyle etkileÅŸimli çalışmasına olanak tanıyan bir iletiÅŸim baÄŸlantısıyla baÄŸlı olan bir grup bilgisayar ve yazıcı, tarayıcı gibi diÄŸer aygıtlar. AÄŸlar, küçük veya büyük, kablolarla kalıcı olarak baÄŸlı veya telefon hatlarıyla ya da kablosuz iletiÅŸimlerle geçici olarak baÄŸlı olabilir. En büyük aÄŸ, dünya çapında aÄŸlardan oluÅŸan bir grup olan Internet’tir.

aygıt

Ağa veya bilgisayara bağlanabilen herhangi bir donanım; örneğin bilgisayar, yazıcı, oyun çubuğu, bağdaştırıcı, modem kartı veya başka bir çevre aygıtı. Aygıtların Windows ile çalışabilmesi için genellikle bir aygıt sürücüsü gerekir.

aygıt çakışması

Aynı sistem kaynakları, iki veya daha fazla aygıta ayrıldığında ortaya çıkan bir çakışma. Bu sistem kaynakları arasında kesme isteği (IRQ) satırları, doğrudan bellek erişimi (DMA) kanalları, giriş/çıkış (G/Ç) bağlantı noktaları ve bellek adresleri yer almaktadır.

aygıt sürücüsü

Modem, ağ bağdaştırıcısı veya yazıcı gibi belirli bir aygıtın, işletim sistemiyle iletişim kurmasını sağlayan bir programdır. Bir aygıt sisteminize takılı olsa bile, aygıt için uygun sürücüyü yükleyip yapılandırmadıkça Windows bu aygıtı kullanamaz.

Aygıt, Donanım Uyumluluk Listesi’nde (HCL) yer alıyorsa, genellikle Windows ile birlikte bir sürücü verilir. Bilgisayar baÅŸlatıldığında, aygıt sürücüleri otomatik olarak yüklenir (etkinleÅŸtirilmiÅŸ tüm aygıtlar için) ve görünmez olarak çalıştırılır.

Aygıt Yöneticisi

Bilgisayarınızdaki aygıtları yönetmek için kullanabileceÄŸiniz bir yönetim aracı. Aygıt Yöneticisi’ni kullanarak aygıt özelliklerini görüntüleyebilir ve deÄŸiÅŸtirebilir, aygıt sürücülerini güncelleÅŸtirebilir, aygıt ayarlarını yapılandırabilir ve aygıtları kaldırabilirsiniz.

ayırma birimi

Bir dosyayı tutmak için ayrılabilecek en küçük disk alanı miktarı. Windows tarafından kullanılan tüm dosya sistemleri, sabit diskleri ayırma birimlerine göre düzenler. Ayırma biriminin boyutu ne kadar küçük olursa, disk, bilgileri o kadar verimli saklar. Diski biçimlendirme sırasında bir ayırma birimi boyutu belirlemeseniz, Windows, disk biriminin boyutuna uygun varsayılan değerleri kullanır. Bu varsayılan boyutlar, birimdeki kayıp alanı ve parçalanma miktarını azaltmak için seçilir. Ayırma birimi, küme olarak da adlandırılır.

köprü

Bir dosyaya, dosya içindeki bir konuma, World Wide Web üzerindeki bir HTML sayfasına veya intranet üzerindeki bir HTML sayfasına gitmek için tıklattığınız renkli ve altı çizili metin veya grafik. Köprüler, haber grupları ve Gopher, Telnet ve FTP sitelerine de bağlantı oluşturabilir.

Windows klasörlerinde, köprüler klasörün sol gözünde görüntülenen metin bağlantılarıdır. Bir dosyayı kopyalama veya taşıma veya başka yerlere (örneğin Belgelerim klasörü veya Denetim Masası) gitme gibi görevleri gerçekleştirmek için bu bağlantıları tıklatabilirsiniz.

Köprü Metni Aktarım İletişim Kuralı (HTTP)

World Wide Web’de bilgi aktarmaya yarayan bir iletiÅŸim kuralı. Bir HTTP adresi (bir tür Tekdüzen Kaynak Konumlandırıcısı[url]) ÅŸu biçimde ifade edilir: http://www.microsoft.com.

Köprü Metni Biçimlendirme Dili (HTML)

Bir platformdan diğerine taşınabilen köprü metni belgelerini oluşturmak için kullanılan basit bir biçimlendirme dili. HTML dosyaları biçimlendirme ve köprü metni bağlantılarını belirtmek için (biçimlendirme etiketleriyle gösterilen) katıştırılmış kodlar içeren basit ASCII metin dosyalarıdır.

Bilgisayar Ağ Kavramlarını

Salı, 06 Kasım 2007

Bilgisayar Ağ Kavramlarını

Bilgisayar aÄŸları elektronik haberleÅŸmenin ve sayısal tabanlı uygulamaların temel yapı taşı durumuna gelmiÅŸtir. Artık yalnız başına bir bilgisayar bir anlam ifade etmemektedir; mutlaka bir aÄŸa baÄŸlanması ve o ağın sahip olduÄŸu kaynaklara eriÅŸilmesi ve aÄŸ üzerindeki diÄŸer kullanıcılarla iletiÅŸimde bulunması istenmektedir. Özellikle internet’in bu derece yaygınlaÅŸması böyle bir gereksinimi açıkça ortaya çıkarmıştır. Bilgisayar ağı denildiÄŸinde bilgisayarların bir protokol altında iletiÅŸimde bulunması akla gelir; bu çok geniÅŸ bir kavramdır. Küçük bir ofis içerisindeki birkaç bilgisayar ve bir yazıcı, bir HUB cihazı üzerinden birbirine baÄŸlanarak bir bilgisayar ağı oluÅŸturduÄŸu gibi, tüm dünyaya yayılmış milyonlarca bilgisayarı içeren internet de bir bilgisayar ağıdır.

Komple Ağın Parametreleri

Komple bir aÄŸ genel olarak, LAN (Yerel Alan Ağı – Local Area Network), Kampüs Ağı, WAN (GeniÅŸ Alan Ağı – Wide Area Network) ve Uzak baÄŸlantılar olarak adlandırılan dört ayrı parçadan oluÅŸur. Her birinin kendisine dönük özellikleri, teknolojileri ve standartları olan bu parçaların ayrı ayrı göz önüne alınması ve optimum çözümün uygulamaya göre seçilmesi gerekir.

*LAN-‘lardatemel özellik, sistemlerin aynı ortamda veya birbirlerine yakın mesafede olmalarıdır. Bu nedenle sistemler arasında kullanılacak kabloların seçiminde büyük bir esneklik vardır ve kablolama alt yapısı bir kez kurulduktan sonra maliyetsiz bir iletim ortamı saÄŸlarlar. LAN uygulamasında yüksek hızlara çıkılabilir; Ethernet (ve türevleri olan yüksek hızlı (Fast ve Gigabit) Ethernet), Jetonlu Halka(Token Ring, TR), FDDI ve ATM teknolojileri uygulamaya baÄŸlı olarak seçilebilecek LAN teknolojileridir; bir aÄŸda bunlardan birkaçı bir arada bulunabilmektedir. LAN uygulamalarında biraz da maliyetin düşük olması nedeniyle Ethernet teknolojisi yaygın olarak kullanılır. Ağın büyüklüğü arttıkça LAN omurga kurulmasında ATM ve FDDI teknolojileri de seçimlik olabilmekte, ancak omurgada bunlar kullanılsa bile kenarlarda yine Ethernet teknolojisi kullanılmaktadır.

*Kampüs Ağı- LAN ile benzer özelliklere sahiptir; ancak mesafe daha uzaktır; dolayısıyla kablo seçiminde LAN uygulamasında olan esneklik yoktur denilebilir; daha uzak mesafelere gidileceÄŸi için bakır kablo türleri uygun olmayabilir. Kampüs uygulamalarında da yüksek hızlara çıkılabilir. Kampüs aÄŸ, genelde bir ÅŸirketin veya kurumun merkez kısmını veya tamamını kapsar. Genelde LAN ürünleri kullanılsa da mesafenin çok olduÄŸu durumlarda WAN baÄŸlantılara da ihtiyaç duyulur. LAN’ da kullanılan Ethernet, TR, FDDI ve ATM teknolojileri ve WAN’ da kullanılan E1, PRI gibi sayısal iletiÅŸim hizmetleri kullanılır. Kampüs uygulamasında önemli olan tüm kampüsü dolaÅŸacak omurga (backbone) ağın yapısı ve teknolojisidir.

*Wan-‘ lar birbirinden çok uzakta olan kampüs türü aÄŸları ve LAN’ ları birbirine baÄŸlar. Temel özellik mesafenin çok uzak olması ve aradaki iletiÅŸim ortamının bir telekom ÅŸirketinden kiralanmasıdır; İletiÅŸim ortamının bant geniÅŸliÄŸinin sınırlı olması ve band geniÅŸliÄŸine göre ücret ödendiÄŸi için bu ortam en iyi ÅŸekilde deÄŸerlendirilmelidir. Dolaysıyla WAN baÄŸlantılarda anahtar sözcükler band geniÅŸliÄŸi, maliyet ve baÄŸlantı servis kalitesidir. Analog modem, kiralık hat, X.25, WAN-ATM, SMDS, FR, Switched 56K, ISDN, Celluler gibi teknoljiler kullanılmaktadır.

Adsl’nin Çalışma Åžekli

Salı, 06 Kasım 2007

ADSL’NİN ÇALIÅžMA ÅžEKLİ

Bir çok DSL (Digital Subscriber Line) mevcuttur, fakat bunlardan en çok kullanılmaya aday olan ADSL’dir. (Asimetrik DSL). Asimetrik DSL denilmesinin nedeni veri alıp verme hızlarının deÄŸiÅŸik olmasıdır.

ADSLavantajlarından biri de özel hatlara gerek olmamasıdır. POTS (Plain Old Telephone System) da denilen mevcut bakır telefon telleri üzerinden bağlantı kurulur.ADSL aslında hatlara verilen isim değil modemlere verilen isimdir.

ADSL servisinde telefon hattının her iki ucunda – evinizde ve telefon ÅŸirketinde – ADSL modemlerine ihtiyaç vardır. ADSL modemleri sıradan modemlerden deÄŸiÅŸiktir. Eski tip modemler bilgisayarınızdan dijital sinyalleri alır ve analog sinyalleri telefon hattından gönderir. Alıcı modem bu analog sinyalleri yeniden dijital bilgiye çevirir. ADSLmodemleri ise bunu yapmak yerine verileri dijital formda alır ve gönderir – analog sinyallere çevirme iÅŸi hiçbir zaman yapılmaz.

Telefon hatlarında yapılan konuşma ve analog transferler potansiyel bant genişliğinin çok ufak bir kısmını kullanırlar. ADSL sayesinde insanlar telefonla konuşurken internete de aynı anda, hem de yüksek hızlarla bağlanabilir. Bunun için de tek bir hat yeterlidir.

ADSL telefon hattını üç kanala ayırır: bir tanesi veri almak, bir tanesi veri göndermek, bir tanesi de telefon görüşmeleri yapmak için. Bu internete bağlıyken aynı zamanda telefonla görüşebilmeyi sağlar. Telefon hattı fiziksel olarak her zaman üçe ayrılmaz. Bunun yerine modülasyon teknikleri kullanılarak üç ayrı tipte sinyal ayırt edebilir: ses, gönderme ve alma. Gönderme ve alma kanalları çeşitli hızlarda ayrılabilir. Örneğin bir ADSL formu 1.5 Mbps ile veri alabilirken, 640 Kbps ile gönderebilir.

Bu sistemin iyi çalışması için, size ait ADSLmodemin telefon ÅŸirketindekine uzaklığı belirli bir mesafeyi aÅŸmamalıdır. Kesin uzaklık nizami ADSL servisine ve teklif edilen hıza hatta bakır telefon kablolarının ebadlarına baÄŸlıdır. ÖrneÄŸin 8.448 Mbit/s’lik bir servis için ADSL modeminizin ÅŸirketin ADSL modeminden en fazla 9000 feet uzakta olması gerekir. 2.048 Mbit/s için ise 16.000 feetten fazla olmaması gerekir.

Adsl Sözlüğü

Salı, 06 Kasım 2007

ADSL SÖZLÜĞÜ

Access Network: (Erişim şebekesi) Farklı teknoloji ve ürünlerle veri omurga şebekelerine bağlantı amacıyla kullanılan çözümleri içerir.

Access Nodes: (Erişim düğümleri) veri omurga şebekelerine abonelerin eriştiği santral ve cihazları içerir.

ADSL: (Asymmetric Digital Subscriber Line - Asimetrik Sayısal Abone Hattı) İki telli bakır hatlardan 1.5Mbps ile 8Mbps arasında değişen hızla bilgi çekme (downstream), 16Kbps ile 800Kbps arasında değişen hızlarla bilgi gönderme (upstream) yapabilen sayısal erişim teknolojisidir.

APON: (ATM Passive Optical Network) ATM üzerinden pasif optik network çalıştırılmasıdır.

ATM: (Asnchronous Transfer Mode) Çok yüksek hızlarda hücresel bilgi iletimi, ADSL üzerinden de gönderilebilir.

ATM25: ATM forum 25.6Mbit/s hücresel kullanıcı arayüzüdür, IBM token ring network’te kullanılır.

ATU-C ve ATU-R: Merkez ve uzak uç ADSL iletişim cihazıdır. (Bazı uygulamalarda erişim düğümü ile entegre olabilir).

BDSL: VDSL ile aynı anlamdadır.

B-ISDN: (Broadband ISDN) Genişband Tümleşik sayısal veri şebekesidir.

CATV: (Community Access Television - Cable TV): Kablolu televizyon hatlarını kullanarak Internete erişim tekniğidir.

Core Network: Çekirdek şebeke - santral, anahtarlama ve transmisyon altyapı ana noktalarının birleşiminden oluşur. Geniş kapsamlı bir hizmet ağıdır ve genellikle ülke çapında kurulu şebekeleri içerir.

CSA: (Carrier Serving Area) Operatörün hizmet sağlayabildiği kapsama alanıdır.

DSLAM: (Digital Subscriber Line Access Multiplexer) DSL kullanıcıların servis saÄŸlayıcının “EriÅŸim Düğümü”nde sonlandığı ÅŸasidir (shelf).

DS0: (Sayısal sinyal 0) 64Kbps sayısal iletişim standardıdır. DS0, TS (time slot-zaman bölmesi) kavramı ile özdeştir.

DSL: (Digital Subscriber Line) Abone sayısal hattı. Bu teknoloji ile mevcut bakır hatlardan sayısal iletişim sağlanır.

E1: Avrupa iletişim standardıdır. 32 zaman bölmesinden oluşan, toplam 2,048Mbps hızında iletişim sağlayan çerçeve (frame) yapısıdır. İşaretleşme ve senkronizasyon dışında iletim için genellikle 30 zaman bölmesi kullanılır.

Feeder Network: EriÅŸim Düğümleri’nin Çekirdek Åžebeke’ye baÄŸlantı kısmıdır.

FEXT: (Far End Cross Talk) Yan yana giden bakır hatlarda, bir hattın diğer hattın uzak ucunda oluşturduğu çapraz gürültüdür.

FTTCab: (Fiber to the Cabinet) Abone hattı bağlantısının yapıldığı saha dolabını telefon santraline fiber ile bağlayan şebeke mimarisidir.

FTTH: (Fiber to the Home) Kullanıcının evlerine kadar telefon şebekesi üzerinden fiber haberleşmesi hizmetidir.

FTTK veya FTTC : (Fiber to the Kerb) Operatörün verdiği veri iletişim hizmetlerinde telefon şebekesi üzerinden yapılan optik fiber haberleşmesini iki telli bakır sinyaline çeviren dağıtıcı noktadır. Bu noktalar genelde cadde ve sokaklarda bulunan saha dolaplarıdır. Kullanıcılar bu noktalardan kendilerine tahsis edilen iki telli bakırla ev ve ofislerine hat alırlar.

HFC : (Hybrid Fiber Coax) Genellikle kablo TV şebekelerinde kullanılan bir altyapı çözümü olan HFC, dağıtım noktasına kadar fiber, bu noktadan sonra da koaksiyel kablo ile iletişim sağlayan altyapı çözümüdür.

HDSL : (High - Bit-Rate Digital Subscriber Line) Yüksek hızlı Sayısal Abone Hattıdır. HDSL ile 4 tel üzerinde E1 iletişim hızı sağlanır.

ISDL: ISDN teknolojisini kullanarak 128Kbps hızında IDSL bağlantısı sağlamak amacıyla kullanılır.

ISP: (Internet Service Provider) Internet Servis Sağlayıcısıdır.

LAN: (Local Area Network) Lokal Alan Åžebekeleri’dir.

LEC: (Local Exchange Carrier) Yerel operatörlere verilen genel tanımdır.

Loop Qualification: DSL teknolojisinde belirtilen belli bir veri iletimi oranıdır.

MPEG: (Motion Picture Experts Group) Sıkıştırılmış video iletimi standardıdır.

NEXT : (Near End Cross Talk) Yan yana giden bakır hatlarda, bir hattın diğer hattın yakın ucunda oluşturduğu çapraz gürültüdür.

N-ISDN: (Narrowband ISDN) Darband ISDN’dir.

NSP: (Network Service Provider) Şebeke servis sağlayıcıdır; katma değerli network hizmetleri gerçekleştirir.

NTE: (Network Termination Equipment) Hatları sonlandırma cihazlarıdır.

OC3: (Optical Carrier 3) Fiber erişim ortamında 155Mbps hızında erişim standardıdır.

ONU: (Optical Network Unit) Erişim düğümlerinde optik işaretleri elektriksel işaretlere çevirerek abonelerin bağlandığı bakır veya koaksiyel kablo üzerinden iletimini sağlayan birimdir.

PON: (Passive Optical Network - Pasif Optik Network); Fiber temelli pasif iletiÅŸim ÅŸebekesidir.

POTS: (Plain Old Telephone Service) Geleneksel telefon hizmeti ÅŸebekesi.

PTT: Avrupa’da ve ülkemizde de daha önce ismi aynı olan telefon hizmetlerini veren kurum ismi.

RADSL: (Raid Adaptive ADSL) İletişim kurulurken, hattı olabilecek en yüksek hızda kullanmak üzere modemlerin birbirleriyle anlaşatığı ADSL versiyonudur.

Splitter: (Dağıtıcı) ADSL cihazı kullanılan hat üzerinden ses ve data işaretlerini ayırmak için kullanılan bir filtre cihazıdır.

SDSL: (Symettric Digital Subscriber Line - Simetrik DSL) Bilgi çekme (upstream) ve bilgi gönderimin (downstream) aynı olduğu DSL çeşididir.

T1: 24 ses kanallı 193 bit frame’e paketlenmiÅŸtir 1,544Mbps hızında iletim yapılır. DS1’le aynı ÅŸeydir.

Telco: Telefon hizmeti veren ÅŸirketlere verilen genel isimdir.

TPON: (Telephony over Passive Optical Network) PON üzerinden telefon görüşmeleri yapılmasına denir.

VADSL: (Very high speed ADSL) Çok yüksek hızlı ADSL’dir. VDSL ile özdeÅŸtir.

VDSL: (Very high data rate DSL) Hızları 12,9 ile 52,8 Mbps arasında değişen, bakır hatlar üzerinden yüksek hızlı ADSL erişmdir.

WAN: (Wide Area Network-GeniÅŸ İletiÅŸim Ağı) Genellikle kurumlar tarafından uzaktaki ofislerini kendilerine veya birbirlerine baÄŸlamak için fiber optik, kablosuz (wireless) ekipmanlar kullanılarak, veya özel hatlar kiralanarak gerçekleÅŸtirilen geniÅŸ alan ÅŸebekelerdir. Modem yardımıyla birbirine baÄŸlanan LAN’lardan (Local Area Network-Yerel İletiÅŸim Ağı) meydana gelir.

Anakartlar (Maınboard)

Salı, 06 Kasım 2007

ANAKARTLAR (MAINBOARD)

Bütün kartların anası diyoruz; çünkü PC’nin diÄŸer bileÅŸenleri bir ÅŸekilde anakarta baÄŸlanıyor, birbirleri ile anlaÅŸmak için anakartı bir platform olarak kullanıyor; yani PC’nin "sinir sistemi" anakart üzerinde yer alıyor. Üzerinde yongalar, transistörler, veriyolları, çeÅŸitli donanımlar için yuvalar, slotlar, baÄŸlantı kapıları, soketler bulunan irice bir baskılı devre. Bir PC’nin hangi özelliklere sahip olabileceÄŸini belirleyen en önemli bileÅŸen, çünkü anakart üzerindeki elektronik bileÅŸenler bu PC’ye hangi tür iÅŸlemciler takılabileceÄŸini, maksimum bellek kapasitesinin ne kadar olabileceÄŸini, bazı bileÅŸenlerin hangi hızlara çıkabileceÄŸini, hangi yeni donanım teknolojilerini destekleyebileceÄŸini belirliyor. Burada en belirleyici faktörlerden biri anakartın yonga seti. O halde anakart yonga setinin tanımını vererek iÅŸe baÅŸlayalım.

• YONGASETİ: Yongaseti (chip set) anakartın "beynini" oluÅŸturan entegre devrelerdir. Bunlara bilgisayarın trafik polisleri diyebiliriz: iÅŸlemci, önbellek, sistem veri yolları, çevre birimleri, kısacası PC içindeki her ÅŸey arasındaki veri akışını denetlerler. Veri akışı, PC’nin pek çok parçasının iÅŸlemesi ve performansı açısından çok önemli olduÄŸundan, yongaseti de PC’nizin kalitesi, özellikleri ve hızı üzerinde en önemli etkiye sahip birkaç bileÅŸenden biridir. Eski sistemlerde PC’nin farklı bileÅŸen ve iÅŸlevlerini, çok sayısal yonga denetlerdi. Yeni sistemlerde hem maliyeti düşürmek, hem tasarımı basitleÅŸtirmek hem de daha iyi uyumluluk saÄŸlamak için bu yongalar tek bir yonga seti olarak düzenlendi. Günümüzde en yaygın yonga seti Intel tarafından üretilmektedir. Intel kendi yongasetlerini, bunların desteklediÄŸi veriyolu teknolo|ilerini de temsil edecek ÅŸekilde PCIset ve AGPset olarak da adlandırmaktadır. Silicon Integrated Systems (SiS), Acer Labs Inc. (ALi), VIA gibi üretici firmalann da geliÅŸtirdiÄŸi popüler yonga setleri vardır.

• VERİYOLU: PC’nizin içindeki bileÅŸenler birbirleri ile çeÅŸitli ÅŸekillerde "konuÅŸurlar". Kasa içindeki bileÅŸenlerin çoÄŸu (iÅŸlemci, önbellek, bellek, geniÅŸleme kartları, depolama aygıtları vs.) birbirleri ile veriyolları aracılığı ile konuÅŸurlar. Basitçe, bilgisayarın bir bileÅŸeninden diÄŸerine verileri iletmek için kullanılan devrelere veriyolu adı (bus) verilir. Bu veriyollarının ucunda da geniÅŸleme yuvaları bulunabilir. Sistem veriyolu denince, genelde anakart üzerindeki bileÅŸenler arasındaki veriyolları anlaşılır. Ayrıca anakarta takılan kartların iÅŸlemci ve belleÄŸe eriÅŸebilmelerini saÄŸlayan geniÅŸleme yuvalarına da veriyolu adı verilir. Tüm veriyolları iki bölümden oluÅŸur: adres veriyolu ve standart veriyolu. Standart veriyolu, PC’de yapılan iÅŸlemlerle ilgili verileri aktarırken, adres veriyolu, verilerin nerelere gideceÄŸini belirler. Bir veriyolunun kapasitesi önemlidir; çünkü bir seferde ne kadar veri transfer edilebileceÄŸini belirler. ÖrneÄŸin 16 bit’lik veriyolu bir seferde 16 bit, 32 bit’lik veri yolu 32 bit veri transfer eder. Her veriyolunun MHz cinsinden bir saat hızı (frekans) deÄŸeri vardır. Hızlı bir veriyolu verileri daha hızlı transfer ederek uygulamaların daha hızlı çalışmasını saÄŸlar. Kullandığımız bazı donanım aygıtları da bu veriyollarına uygun olarak üretilirler.

Sadece iki donanım aygıtını birbirine baÄŸlayan veriyoluna "port" adı verilir. (örneÄŸin AGP = Advanced Graphics Port). Bugün PC’lerimizde ISA, PCI ve AGP veriyolları bulunmaktadır. Anakartın üzerindeki farklı boyut ve renklerde, yan yana dizilmiÅŸ kart takma yuvalarından bunları tanıyabilirsiniz.

• ISA. (Industry Standard Architecture) Anakartınızın kenarına yakın yerde bulunan uzun siyah kart yuvaları ISA yuvasıdır. 17 yıldan beri kullanılan eski bir veriyolu mimarisidir. 1984′te 8 bit’ten 16 bit’e çıkarılmıştır. Ama bugün bile 8 bitlik kartlar olabilir. OrneÄŸin bir ISA kartın, yuvaya giren iki bölmeli çıkıntısının sadece bir kenarında baÄŸlantı bacakları varsa, bu 8 bitlik bir karttır. 90′lardan itibaren çoÄŸu aygıt’ın daha hızlı PCI modeli çıktığından yavaÅŸ yavaÅŸ terkedilmeye baÅŸlanmıştır; hatta bugün ISA veriyolu olmayan anakartlar bile çıkmıştır. 1993′te Intel ve Microsoft, Tak Çalıştır ISA standardını geliÅŸtirmiÅŸtir. Böylece iÅŸletim sistemi ISA kartların konfigürasyonunu, sizin jumper’larla, dip svvitch’lerle boÄŸuÅŸmanıza gerek kalmadan otomatik yapmaktadır.

• PCI. (Peripheral Component Interconnect) 1993′te Intel tarafından geliÅŸtirilen bu veriyolu 64 bit’liktir ama uyumluluk problemlen nedeniyle uygulamada genelde 32 bit’lik bir veri yolu olarak kullanılır. 33 veya 66 MHz saat hızlarında çalışır. 32 bit ve 33 MHz PCI veriyolunun kapasitesi 133 MB/sn’dir. Anakartınızda PCI yuvaları ISA yuvalarının hemen yanında bulunur; beyaz renkte ve ISA’dan biraz daha kısadır. PCI veriyolu Tak Çalışır desteklidir.

• AGP. (Advanced Graphics Port) Sadece ekran kartları için çıkarılmış bir veriyoludur. Grafik ağırlıklı uygulamalar geliÅŸtikçe (örneÄŸin 3 boyutlu grafikler, tam ekran video) iÅŸlemci ile PC’nin grafik bileÅŸenleri arasında daha geniÅŸ bir bant geniÅŸliÄŸine ihtiyaç doÄŸmuÅŸtur. Bunun sonucunda grafik kartlarında ISA’dan bir ara veriyolu standardı olan VESA’ya, oradan da PCI’a geçilmiÅŸtir; ama bu da yeterli görülmeyince, grafik kartının iÅŸlemciye doÄŸrudan ulaÅŸmasını saÄŸlayacak, ona özel bir veriyolu olan AGP 1997 sonunda geliÅŸtirilmiÅŸtir. AGP kanalı 32 bit geniÅŸliÄŸindedir ve 66 MHz hızında çalışır. Yani toplam bant geniÅŸliÄŸi 266 MB/sn’dir. Ayrıca özel bir sinyalleÅŸme metoduyla aynı saat hızında iki katı veya 4 katı daha hızlı veri akışının saÄŸlanabildiÄŸi 2xAGP ve 4xAGP modları vardır. 2xAGP’de veri akış hızı 533 MB/sn olmaktadır. Ancak sistem veriyolu hızı 66 MHz ise, 2xAGP tüm bant geniÅŸliÄŸini kaplayıp diÄŸer aygıtlara yer bırakmayacağı için 66 MHz’lik anakartlarda 1 xAGP kullanılır. 100 MHz anakartlarda bant geniÅŸliÄŸi 763 MB/sn’ye çıktığından 2xAGP ile uyumludur. 1 GB/sn isteyen 4xAGP’nin ise gelecekte çıkacak 133 MHz’lik sistem veriyoluna sahip anakartlarla uyumlu olup olmayacağını hep birlikte göreceÄŸiz. Peki bu kadar hıza ihtiyacımız var mı diye sorarsanız, günümüzün en ağır 3D oyunları bile ihtiyaç duymuyor. Bu yüzden aynı kartın PCI ve AGP versiyonları arasında pek performans farkı olmuyor. Yine de grafik için daha geliÅŸmiÅŸ bir veriyolu olduÄŸu ve bize fazladan bir PCI yuvası boÅŸ bıraktığı için AGP kartları tercih ediyoruz.

• PORTLAR, KONNEKTÖRLER: PC ile çalışırken kasa kapalı olduÄŸundan anakartı görmeyiz ama çeÅŸitli aygıtları baÄŸlamak için kasanın arkasında yer alan giriÅŸler (portlar) doÄŸrudan anakarta baÄŸlıdır. Eski anakartlarda AT form faktörü kullanılırken bu portlar birer kablo aracılığı ile anakart üzerindeki konnektörlere baÄŸlanırdı; ama ATX form faktörü ile artık anakart ile bütünleÅŸik. Yani anakartın bir kenarında bulunan bu portlar, tam kasanın arka kısmındaki boÅŸluklara denk geliyor. Bu yüzden kasalar da anakart form faktörlerine uygun olarak üretiliyor.

Anakartınız ve kasanız ATX formundaysa (artık tüm yeni PC’lerde öyle) kasanın arkasında tipik olarak bir klavye, bir fare portu, iki USB portu, iki seri pc (COM portu), bir paralel port (LPT Portu) göreceksiniz. Günümüzde klavye ve fare için artık PS/2 portu adı verilen küçük yuvarlak, 6 pinli portlar kullanılıyor. Aslında fare seri portu da bir adaptör yardımıyla kullanabilir (veya zaten seri kablolu fareler vardır), ama kendine ait bir port olması daha iyidir. Seri portlara genelde harici modemler baÄŸlanır ama seri port kullanan baÅŸka aygıtlar da vardır (yedekleme cihazları, dijital kameralar gibi). Paralel porta ise yazıcı veya tarayıcı baÄŸlanır. USB portlara neredeyse her tür hariç cihaz baÄŸlanabilir. Ancak USB cihazla yeni yeni yaygınlaÅŸmaktadır. USB’nin özelliÄŸi, seri ve paralel portlara göre çok daha hızlı olması ve USB aygıtlar üzerindeki yeni USB portları aracılığı ile ucuca çok sayıda cihazın zincirleme baÄŸlanabilmesidir.

Bunların dışında, anakart üzerine takılan (veya bütünleşik olan) grafik kartı, ses kartı, TV kartı, SCSI kartı gibi aygıtların portları da kasa arkasında yer alır.

Anakart üzerinde, kasa içinden ulaşılabilen portlar da bulunur. Bunlar genel olarak iki adet IDE portu, bir disket sürücü portu, anakart ile bütünleşikse SCSI portudur. Bu portlara takılan yassı kablolar aracılığı ile anakartımıza sabit disk, CD sürücü, CD yazıcı, disket sürücü gibi dahili cihazları bağlarız. Bir IDE portuna bağlı kabloya, üzerindeki iki konnektör aracılığıyla iki cihaz bağlanabilir.

Bunların dışında anakart üzerinde işlemciyi takmak için bir soket veya slot bulunur. Soket, yassı dikdörtgen şeklindeki işlemciler üzerinde iki düzlem üzerinde (enine ve boyuna) uzanan iğnelerin oturduğu yuvaya verilen addır. Günümüz anakartlarında PGA370 tipinde 370 iğneli Celeron işlemciler için PGA soketleri, AMD K6-2 ve K6-3 işlemciler için AGP ve 100 MHz sistem veriyolu desteği bulunan Super 7 soketleri, Cyrix (K6-2 ve eski Pen-tium MMX işlemciler için) 66 MHz destekleyen Socket 7 tipi soketler bulunabilmektedir.

Slot ise, genişleme yuvalarına benzer, uzun ince dikdörtgen şeklindeki işlemci yuvalarına verilen isimdir. Pentium II, slot tipi Celeron ve Pentium III işlemciler için Slot 1, Xeon işlemciler için Slot 2 adı verilen modelleri bulunur.

• ÖNBELLEK: Bugün PC’lerde kullanılan tüm donanımlar 15 yıl öncesine göre çok daha hızlı. Ama her bir donanım bileÅŸeninin hızı eÅŸit ölçüde artmadı. ÖrneÄŸin iÅŸlemcilerdeki performans geliÅŸimi, sabit disktekilerden kat kat daha fazladır. Hani bir PC’nin gücü en zayıf halkası kadardır derler ya, iÅŸlemci ve bellek çok hızlı olsa da yavaÅŸ kalan bir sabit disk ile bu performans artışını tam anlamı ile yaÅŸamanız mümkün deÄŸildir. İşlemci boÅŸ boÅŸ oturup kendisine bilgi gelmesini bekler. Tabii bunu önlemek için bazı ara çözümler geliÅŸtirildi. ÖrneÄŸin yakın zamanda kullanılan bilgileri sabit diskten önbellek (cache) adı verilen bir birime aktarılması, iÅŸlemcinin ihtiyaç duyduÄŸunda sık kullanılan bilgileri bu önbellek alanından alması.İşte önbelleklemenin esası budur. Bir PC’de çeÅŸitli bellek kademeleri vardır: birincil önbellek (L1 cache); ikincil önbellek (L2 cache); sistem belleÄŸi (RAM) ve sabit disk veya CD-ROM. Diyelim ki iÅŸlemci bir bilgiye ihtiyaç duyuyor. Önce gider, en hızlı bellek türü olan L1 önbelleÄŸe bakar. Bilgi orada varsa gecikme olmaksızın bu bilgileri alır ve iÅŸler. L1 önbellekte yoksa L2′ye bakar ve buradaysa nispeten küçük bir gecikme ile bilgileri alır. Orada da yoksa önbelleÄŸe göre daha yavaÅŸ kalan sistem belleÄŸine, yine yoksa en yavaÅŸları olan sabit diske veya CD-ROM vb. bilginin geldiÄŸi cihazlara bakar.

L1 ön bellek en hızlısıdır ve günümüz PC’lerinde doÄŸrudan iÅŸlemci üzerinde yer alır. Bu önbellek genelde küçüktür (genelde 64K’ya kadar; Pentium III, Pentium II ve Celeron iÅŸlemcilerde 32K; AMD K6-2 ve K6-3 iÅŸlemcilerde 64K). L2 önbellek biraz daha yavaÅŸ ama biraz daha büyük olabilir. Pentium II ve III’lerde boyutu 512K’dır ve iÅŸlemci ile iÅŸlemci hızının yarı hızında haberleÅŸir. İlk Celeron’larda yoktur; günümüz Celeron’larında boyutu 128K’dır ve iÅŸlemciyle aynı hızda haberleÅŸir. AMD K6-2′lerde iÅŸlemci üzerinde deÄŸil, anakart üzerindeki bir yuvada 2GB’a kadar L2 önbellek bulunabilir ve veriyolu hızında (66 veya 100 MHz) haberleÅŸir. AMD K6-3′de 256K önbellek bulunur ve iÅŸlemci ile aynı hızda haberleÅŸir. AMD K6-3 L1 ve L2 önbelleÄŸi üzerinde bulundurduÄŸu, aynı zamanda kullanıldıkları anakartlarda da sistem veriyolu hızında çalışan bir önbellek daha bulunduÄŸu için 3. seviye (L3) önbelleÄŸi literatüre sokmuÅŸtur.

• IRQ (KESME) : (Inrerrupt Request) Bir süre PC kullanan herkes ÅŸu ünlü "IRQ çakışması" tabirini duyar. Peki nedir bu IRQ? Türkçesi "kesme"; yani iÅŸlemci bir iÅŸle meÅŸgulken, bilgisayarın bir yerinden baÅŸka bir donanımdan iÅŸlemciye şöyle bir emir geliyor: "Benimle de ilgilen!" Yani iÅŸlemcinin iÅŸini böler. Tabii iÅŸlemci aynı anda çok sayıda iÅŸi birden yapabilir: Klavye ve fare kullanırken bir yandan ekrana gönderilen verileri iÅŸler, sabit diskten okuma yapar, modemin indirdiÄŸi dosyalara bakar vs. Ama iÅŸlemciye iÅŸini görmesi için ihtiyaç duyan bir aygıtın ona sinyal gönderebilmesi için özel bir hatta ihtiyacı vardır. İşte buna IRQ hattı adı verilir. PC’mizde 0′dan 15′e kadar numaralanan 16 IRQ hattı vardır. Bunlar ÅŸu aygıtlar için kullanılabilir ("default", yani pik aygıtın yanı sıra bu IRQ’yu kullanabilecek diÄŸer aygıtlar parantez içinde verilmiÅŸtir)

• IRQ 0: Sistem saati.

• IRQ 1: Klavye

• IRQ 2: Programlanabilir IRQ denetçiısi. (Modemler, COM3 ve COM 4 portları)

• IRQ 3: COM 2 portu (modemler, COM 4, ses ve aÄŸ kartlan, teyp yedekleme birimlerini hızlandıran kartlar)

• IRO 4: COM 1 portu (modemler, COM 4, ses ve aÄŸ kartlan, teyp yedekleme birirnlerini hızlandıran kartlar)

• IRQ 5: Ses kartı (LPT2, LPT3 - yani ikinci ve üçüncü paralel portlar - COM 3, COM 4, modemler, aÄŸ karflan, MPEG kartları, teyp yedekleme binmlerini hızlandıran karflar)

• IRQ 6: Disket sürücü denetleyicisi (teyp yedekleme birimlerini hızlandıran kartlar)

• IRQ 7: LPT1, yani ilk paralel porf (LPT2, COM 3, COM 4, modemler, aÄŸ kartları, ses karflan, teyp yedekleme birimlerini hızlandıran karfları

• IRQ 8: Gerçek zamanlı saat.

• IRQ 9: (AÄŸ kartları, ses kartları,SCSI kartları, PCI aygıtlar, yeniden yönlendirilen IRQ2 aygıfları)

• IRQ 10: (AÄŸ kartları, ses kartları, SCSI karfları, PCI aygıtlar, ikinci ve dördüncü IDE kanalları)

• IRQ 11: (Görüntü kartları, aÄŸ kartları, ses kartları, SCSI kartları, PCI aygıtlar, üçüncü ve dördüncü IDE kanalları)

• IRQ 12: PS/2 fare (Görüntü kartları, aÄŸ kartları, ses kartları, SCSI kartları, PCI aygıtlar, üçüncü IDE kanalı)

• IRQ 13: FPU, yani matematik iÅŸlemci.

• IRQ 14: Birinci IDE kanalı (SCSI kartlar)

• IRQ 15: İkinci IDE kanalı (AÄŸ ve SCSI kartlar)

Normalde bir IRQ’yu bir aygıtın kullanması gerekir; aksi halde iÅŸlemci ÅŸaşırır, yanlış aygıta yanlış zamanda cevap verebilir. iÅŸte buna IRQ çakışması denir. Bazen Windows Aygıt Yöneticisi bölümünden donanım aygıtlarının kaynak deÄŸerlerini deÄŸiÅŸtirerek, bazen kartın yerini deÄŸiÅŸtirerek bu sorun çözülebilir (tüm geniÅŸleme yuvaları doluysa bazen de çözülemeyebilir). Aslında PCI Steering adı verilen bir yolla bir IRQ’nun iki PCI aygıt tarafından kullanılması mümkündür. Ama bunun için aygıtın ve sürücülerinin bu iÅŸlemi desteklemesi gerekir. Bu konunun detaylarına da Windows ile ilgili bölümümüzde deÄŸineceÄŸiz.

• DMA KANALLARI: DoÄŸrudan bellek eriÅŸim (Direct Memory Access) kanalları sistem içinde çoÄŸu aygıtın doÄŸrudan bellek ile veri alış veriÅŸi için kullandığı yollardır. IRQ’lar kadar "ünlü" deÄŸillerdir, çünkü sayıları daha azdır ve daha az sayıda donanımda kullanılırlar. Bu yüzden de daha az soruna yol açarlar. BildiÄŸiniz gibi iÅŸlemci PC’nin beynidir. Eski PC’lerde iÅŸlemci neredeyse her ÅŸeyi üstlenirdi; tabii, tüm donanım aygıtlarına veri göndermek ve onlardan veri almak iÅŸini de. Ancak bu pek verimli olmazdı; iÅŸlemci veri transferi ile ilgilenmekten baÅŸka iÅŸlemleri doÄŸru dürüst yerine getiremezdi. DMA sayesinde bazı aygıtlar kendi aralarında veri transferi yapıp bu yükü iÅŸlemcinin üzerinden aldılar. DMA kanalları normalde yonga setinin bir bölümünü oluÅŸturur. Bir PC’de 8 DMA kanalı bulunur ve 0′dan 7′ye kadar numaralandırılır. DMA’lar genelde ses kartları, disket sürücüler, teyp yedekleme birimleri, yazıcı portu (LPT1), aÄŸ ve SCSI kartları, ses özelliÄŸi olan modemler tarafından kullanılırlar.

• BIOS: BIOS’un açılımı Temel GiriÅŸ Çıkış Sistemi’dir (Basic Input/Output System). PC’deki en temel seviye yazılımdır; donanım ile (özellikle de iÅŸlemci ve yongasetiyle) iÅŸletim sistemi arasında bir arayüz görevi görür. BIOS sistem donanıma eriÅŸimi ve üzerinde uygulamalarınızı çalıştırdığınız ileri düzey iÅŸletim sistemlerinin (Windows, Linux vs.) yaratılmasını saÄŸlar. BIOS aynı zamanda PC’nin donanım ayarlarını kontrol eder; PC’nin düğmesine bastığınızda boot etmesinden ve diÄŸer sistem iÅŸlevlerinden sorumludur. BlOS da bir yazılımdır dedik; bu yazılım anakart üzerindeki BIOS yongası üzerinde tutulur. Eskiden BIOS bir ROM (Read Only Memory) idi. Yani sadece okunabiliyordu, üzerine yazılamıyordu. Daha sonra eklenen yeni donanımlara göre BlOS’ta güncelleme yapılmasının gerekmesi üzerine Flash BIOS adı verilen yazılabilir/güncellenebilir BIOS yongaları kullanılmaya baÅŸladı. Böylece kullanıcılar daha güncel bir BIOS sürümünü anakart üreticisinin Web sitesinden indirerek yükleyebilirler. (Tabii yakın zamanlarda gündeme gelen Çernobil (WinCIH) virüsünü duymuÅŸsunuzdur. IÅŸte bu virüs de yazılabilir BIOS’lardaki bilgileri silerek PC’nin açılmasını engelliyor.)

Autocad

Salı, 06 Kasım 2007

AutoCAD “Kağıt Düzlemi”

Nedir ve Nasıl Kullanılmalıdır?

İlk defa AutoCAD R11 ile gelen “Kağıt Düzlemi” iÅŸlevi, çizimlerin basılı çıktıları için pafta organizasyonu yapmaya yarayan, fakat pek kullanılmayan önemli bir AutoCAD iÅŸlevidir.

AutoCAD R11’in Türkçe sürümü ile uÄŸraÅŸtığımız günlerde, “Paper Space”in Türkçe’sini Kağıt Düzlemi olarak belirlemiÅŸtik. Åžu anda R14 ile çalışıyoruz; demek oluyor ki Kağıt Düzlemi AutoCAD’de 8 yıldır yer alıyor. Ancak gerek kullanıcılarla görüşmelerimiz, gerekse seminerlere katılanlara sorduÄŸumuz “Kağıt Düzlemini kimler kullanıyor?” sorusu, bizlere bu önemli özellikten yeterince yararlanılmadığını düşündürdü. Peki Kağıt Düzlemi neden kullanılmalıdır? Yanıtı basit, yararlı bir özellik olduÄŸu için. Nasıl sorusuna ise, bu yazının geri kalanında yanıt bulacaksınız. Kağıt Düzleminin ne olduÄŸunu, nasıl kullanılacağını ve deÄŸiÅŸik disiplinlerdeki uygulamalarını yazacağız.

Model Boşluğu (Model Space) çizimin yaratıldığı yerdir. Kağıt Düzlemi (Paper Space) ise, çizimin çıktı almak için organize edildiği yerdir. Kağıt Düzlemi, Model Boşluğunda yaratılan çizimi kağıda yerleştirmek için araçlar sağlar. Kağıt Düzlemi kullanıldığında, çizimin tek bir görünümünün çıktısını almakla sınırlandırılmazsınız. İstenilen sayıda görünüm, istenilen yerleşim şekliyle kağıt üzerine aktarılabilir.

Görünüm Alanlarının Özellikleri

AutoCAD’de görünüm alanları iki ÅŸekilde olabilir: DöşenmiÅŸ (tiled) veya serbest (floating).

[IMG]file:///C:/DOCUME%7E1/SA%28%5e_%5e%7E1/LOCALS%7E1/Temp/msohtml1/01/clip_image002.gif[/IMG]DöşenmiÅŸ görünüm alanları (tiled viewports) ile çalıştığınızda, Model BoÅŸluÄŸunda modelleme ve çizim yapıyorsunuz demektir. EÄŸer birden fazla görünüm alanı varsa, herhangi birinde yapılacak çizim düzenlemesi diÄŸerlerini de etkiler. Ancak, bakış açısı, ızgara ve kenetleme ayarları ve zum oranı, her görünüm alanında farklı olabilir. DöşenmiÅŸ görünüm alanları, çizim ekranının tamamını kaplarlar. “TILEMODE” sistem deÄŸiÅŸkeni, 1 deÄŸerindedir

[IMG]file:///C:/DOCUME%7E1/SA%28%5e_%5e%7E1/LOCALS%7E1/Temp/msohtml1/01/clip_image002.gif[/IMG]Serbest görünüm alanları (floating viewports), Kağıt Düzleminde yer alan ve modelin deÄŸiÅŸik görünümlerini içeren pencerelerdir. Kağıt Düzleminde, serbest görünüm alanları birer nesnedirler. Konumları ve ölçekleri ayarlanarak kağıt üzerindeki yerleÅŸim gerçekleÅŸtirilir. Zum komutu ile de görüntüledikleri çizimlerin çıktı ölçekleri ayarlanır. “TILEMODE” sistem deÄŸiÅŸkeni, 0 deÄŸerindedir.

Kağıt Düzleminde, serbest görünüm alanları ile çalışılır. Bu düzlemde çizim de yapılabilir, antet ve notasyon, bu düzlemde yerleştirilir. Kağıt Düzleminde serbest görünüm alanları birer nesnedir. Bu düzlemde, model üzerinde değişiklik yapılamaz. Modele/çizime ulaşmak için, Kağıt Düzleminden Model Boşluğuna geçilir. Böylece, kağıt üzerindeki yerleşimi görürken de model ile çalışma olanağı sağlanmış olur. Serbest görünüm alanlarında, her görünüm alanı üzerinde ayrı ayrı ayarlar yapılabilir: Belirli görünüm alanlarında, seçilen katmanlar kapatılabilir. Örneğin, 3 boyutlu bakışın çizdirileceği görünüm alanında ölçülendirme nesnelerinin görünmesini istemiyorsanız, ölçülendirme katmanını bu görünüm alanında kapatabilirsiniz.Ayrı görünüm alanları, çıktı alırken ayrı ölçeklerde olabilir. Ölçek ayarı, kağıt düzlemine göre yapılır.Görünüm alanları arasında görünümler hizalanabilir. Örneğin, mekanik ve mimari uygulamalarda, görünüşlerin ve kesitlerin eksen çizgilerinin birbiri ile hizalı olması gerekir.Çıktı alırken, eğer model 3 boyutlu ise ve bir görünüm alanında yer alıyorsa, arkada kalan çizgilerin gizlenmesi (hidden line removal) istenebilir. Arkada kalan çizgilerin gizlenmesi ayarı, her görünüm alanı için ayrı ayrı yapılabilir.Kağıt Düzlemine Geçiş

Kağıt Düzlemine geçmek ve serbest görünüm alanları yaratmak için birkaç yöntem vardır: “View” menüsünden “Paper Space” seçilir veya “TILEMODE” sistem deÄŸiÅŸkeni 0 yapılır. Daha sonra “Mview” komutu ile veya “View” menüsünden “Floating Viewports” seçenekleri ile serbest görünüm alanları yaratılır.“MVSetup” yardımcı programı ile, Kağıt Düzlemi ve serbest görünüm alanları yaratılır. Bu komutla ayrıca antet bloÄŸu, görünüm alanlarının ölçeÄŸi ve hizalama da belirlenebilir.Yeni bir çizime baÅŸlarken, “Advanced Setup Wizard” çalıştırılırsa, 7. aÅŸamada Kağıt Düzlemi ayarları ile yeni bir çizim yaratılır. Daha sonra “Mview” komutu ile görünüm alanları tekrar ayarlanabilir.

Sihirbaz ile kağıt düzlemi ayarı

Kağıt Düzlemi ve Model Boşluğu ikonları, birbirlerinden farklıdır.

Kağıt Düzleminde çalışırken, model üzerinde değişiklikler yapmak için sık sık Model Boşluğuna geçmek gerekir.

Kağıt Düzleminden Model BoÅŸluÄŸuna geçiÅŸ üç ÅŸekilde olabilir: AutoCAD ekranının en altında yer alan durum çubuÄŸunda “Paper” yazan yerin üzerine iki kere tıklanır veya“View” menüsünden “Floating Model Space” seçilir veya“Mspace” komutu girilir.Model BoÅŸluÄŸundan Kağıt Düzlemine geçiÅŸ de üç ÅŸekilde yapılabilir:AutoCAD ekranının en altında yer alan durum çubuÄŸunda “Model” yazan yerin üzerine iki kere tıklanır veya“View” menüsünden “Paper Space” seçilir veya“Pspace” komutu girilir.YerleÅŸimin Ayarlanması

Çizimin kağıt üzerindeki yerleşiminin ayarlanması, pafta üretiminin önemli bir aşamasıdır. Çizimde tek model olmasına rağmen, kağıt üzerinde bunun plan, kesit, görünüş, perspektif gibi değişik görünümlerini elde etmek isterseniz, bunun için Kağıt Düzleminde serbest görünüm alanları yaratmanız gerekir.

Serbest Görünüm Alanlarını Yaratma

Serbest görünüm alanları, “Mview” veya “Mvsetup” komutları ile veya “View” menüsünün “Floating Viewports” seçenekleri ile gerçekleÅŸtirilir. Burada menü seçeneklerini inceleyeceÄŸiz, diÄŸer komutlar da benzer yöntemle çalışır.

1. “View” menüsünden “Floating Viewports”u seçin. 1, 2, 3 veya 4 görünüm alanı seçin.

2. Eğer 2 veya 3 seçtiyseniz, görünüm alanının nereye yanaşık olacağını belirleyin.

3. EÄŸer 1 seçtiyseniz ve görünüm alanının grafik ekranın tamamını kaplamasını istiyorsanız “Fit” girin.

4. Dikdörtgen bir alan göstererek görünüm alanlarının yaratılacağı yeri belirleyin.

Görünüm Alanlarını Düzenleme

Görünüm alanları yaratıldıktan sonra, gereksinimlere göre düzenlenebilirler. Her görünüm alanı, aslında Kağıt Düzleminde yer alan ve renk ve katman gibi özelliklere sahip olan birer nesnedir. Görünüm alanları üzerinde kopyalama, taşıma, silme, sündürme gibi komutlar çalışır. Ayrıca tutamakları (Grip) ile de düzenlenebilirler.

Görünüm alanı içindeki görünümün ölçeği ile oynamak, görünüm alanının boyutlarını değiştirmez. Aynı şekilde, görünüm alanının boyutları ile oynamak da, görünümün ölçeğini değiştirmez. Dolayısıyla, görünüm alanı içinde yapacağınız kaydırma ve zum işlemleriyle ve görünüm alanının sınırlarındaki düzenlemelerle, çizimin belirli bir bölümü görüntülenebilir.

İpucu: Eğer görünüm alanı sınır çizgilerinin çıktıda görünmesini istemiyorsanız, bunları ayrı bir katmana yerleştirip, çıktı sırasında o katmanı kapatabilirsiniz.

Görünürlük Kontrolü

Serbest görünüm alanlarındaki nesnelerin görünürlüğü, birkaç yöntemle ayarlanabilir: Her görünüm alanındaki katmanlar, ayrı ayrı dondurulabilir: “Layer” diyalog kutusundaki “Freeze in Current Viewport” seçeneÄŸi ile veya “Vplayer” komutu ile bu iÅŸlem gerçekleÅŸtirilir. ÖrneÄŸin, ölçülendirmelerin bir görünüm alanında görünmesini, fakat diÄŸerlerinde görünmemesini istiyorsanız, ölçülendirme katmanını diÄŸer görünüm alanlarında dondurursunuz.Görünüm alanları kapatılıp açılabilir: “Mview” komutunun “On” ve “Off” seçenekleri ile görünüm alanları açılıp kapatılabilir.Aktif olacak görünüm alanlarının sayısı sınırlandırılabilir: “MAXACTVP” sistem deÄŸiÅŸkeni, aynı anda kaç aktif görünüm alanı olacağını belirler.Kağıt Düzlemine Göre Görünümlerin ÖlçeÄŸi

Basılı çıktı almadan önce her görünüm alanı için ayrı ayrı zum ölçeği belirleyebilirsiniz. Görünüm ölçeği, Kağıt Düzlemine göreceli olarak verilir - hassas ölçekleme, zum ölçek faktörünün Kağıt Düzlemine göreceli verilmesiyle gerçekleşir.

Kağıt Düzleminde çalışırken ölçek faktörü, çıktısı alınacak çizimle görünüm alanında görünen modelin gerçek boyutları arasındaki orandır. Bu ölçeÄŸi bulmak için, Kağıt Düzlemi birimlerini Model BoÅŸluÄŸu birimlerine bölün. ÖrneÄŸin, 1’e 5 ölçekli bir çizim için, 1 Kağıt Düzlemi birimine, 5 Model BoÅŸluÄŸu birimi karşılık gelir (1:5).

Görünümleri Kağıt Düzlemine göre ölçekleme iÅŸi, “Zoom” komutu ile yapılır. “Zoom/Scale” seçeneÄŸine girilecek 1xp, Kağıt Düzlemi ve Model BoÅŸluÄŸu birimlerini 1:1 ölçeÄŸe getirir. 2xp, görünümü 2 katı büyütür yani, 2:1 ölçeÄŸe çevirir. 0.2xp (1/5xp olarak da yazılabilir), görünümü 1:5 ölçeÄŸe çevirir.

AÅŸağıdaki resimde, A3 boyutunda bir antetimiz ve uzunluÄŸu 127 mm olan bir parçamız var. DeÄŸiÅŸik görünüm alanları, deÄŸiÅŸik ölçeklerde görüntüleniyor. Ölçek ayarlama, “Zoom” komutuna girilen (deÄŸer)xp ile saÄŸlanıyor. Kağıt Düzleminde çıktı alırken 1 Plotted MM = 1 Drawing Units ile ölçek belirlendiÄŸinde, Kağıt Düzlemindeki A3 antetimiz kağıda 1:1 ölçeÄŸinde aktarılırken, görünüm alanlarının kendi ölçeklerinde çıktıları alınacaktır.

Değişik ölçeklerde Kağıt Düzlemine göre zumlama

İpucu: Kolaylık için antetinizi 1:1 ölçekte olacak şekilde ayarlayın, görünüm alanlarınızı da Kağıt Düzlemine göre ölçekleyin.

Kağıt Düzleminde Çizgi Tipi Ölçeği

“PSLTSCALE” sistem deÄŸiÅŸkeni ile, Kağıt Düzleminde görünen tüm çizgi tiplerinin, aynı ölçekte olmasını saÄŸlayabilirsiniz. Bu sistem deÄŸiÅŸkenine, “Format/Linetype…” menüsünde “Use paper space units for scaling”i kullanarak da ulaÅŸabilirsiniz. Bu deÄŸiÅŸken 1 olduÄŸunda, Kağıt Düzlemindeki tüm çizgi tipleri, görünüm alanlarının ölçeÄŸinden bağımsız olarak, aynı ölçekte görüntülenir. 0 olduÄŸunda ise, her görünüm alanının ölçeÄŸi, çizgi tipinin görüntülenmesindeki ölçeÄŸi belirler.

Görünümleri Hizalama

Bir görünüm alanındaki görünümü, diğer bir görünüme göre hizalamak gerekebilir. Örneğin, mekanik ve mimari uygulamalarda, görünüşlerin ve kesitlerin eksen çizgilerinin birbiri ile hizalı olması gerekir. Açılı, yatay ve dikey hizalamalar için bir görünüm alanındaki görünümü, diğer bir görünüm alanında belirlenen temel noktaya göre kaydırmak gerekir.

Görünüm alanlarında nesneleri hizalamak için:

1. “Mvsetup” komutuna girin.

2. “Align”ı seçin.

3. AÅŸağıdakilerden biri ile devam edin: “Horizontal” seçeneÄŸi, diÄŸer bir görünüm alanındaki temel noktaya göre yatay hizalama yapar.“Vertical” seçeneÄŸi, diÄŸer bir görünüm alanındaki temel noktaya göre dikey hizalama yapar.“Açılı” seçeneÄŸi, diÄŸer bir görünüm alanındaki temel noktaya göre belirlenen mesafe ve açıda hizalama yapar.4. Görünüm alanlarından sabit kalacak olanı güncel görünüm alanı yapın ve temel noktayı gösterin. (1. Nokta)

5. Hizalamanın yapılacağı görünüm alanını seçin ve sonra hizalama noktasını seçin. (2. Nokta)

6. Açılı hizalamalarda, mesafe ve açıyı ikinci görünüm alanında belirleyin.

İpucu: Doğru bir hizalama işlemi için, nesne kenetleme modlarını kullanmanız gerekir.

Arkada Kalan Çizgilerin Gizlenmesi

EÄŸer çiziminizde 3 boyutlu nesneleriniz varsa, bunların basılı çıktılarında arkada kalan çizgilerin gizlenmesini isteyebilirsiniz. Bunun için “Mview” komutunun “Hideplot” seçeneÄŸini veya “View” menüsünden “Floating Viewports / Hideplot” seçeneÄŸini kullanın.

Değişik Disiplinlerde Kağıt Düzlemi Kullanımı

Yaptığınız çizimin basılı çıktısını alacaksanız, Kağıt Düzlemi işinizi kolaylaştıracaktır. AutoCAD, temelde üzerinde çalışan uygulama yazılımlarına yukarıda anlattığımız Kağıt Düzlemi işlevlerini sunar. Ancak bazı uygulama yazılımları, işleri daha da kolaylaştırmak için, ek Kağıt Düzlemi işlevleri de içerirler. Şimdi Kağıt Düzleminin, değişik disiplinlerde ne şekilde kullanılabileceğine bakalım.

Mekanik Uygulamalarda Kağıt Düzlemi

Autodesk Mechanical Desktop, AutoCAD’in sunduÄŸu Kağıt Düzlemi özelliklerini, çok daha kolay kullanımlı olacak ÅŸekilde özelleÅŸtiriyor. Kağıt Düzlemi özelliÄŸi, MDT ile Model BoÅŸluÄŸunda oluÅŸturulan parçaların (katı,yüzey ya da tel çerçeve) ve montajların teknik resim görünüşlerinin kolayca ve otomatik olarak alınmasını saÄŸlıyor.

Autodesk Mechanical Desktop’da Kağıt Düzlemi kullanımı

Modellerin üstten, yandan, izometrik, kesit, detay, eÄŸik vb. görünüşleri çıkartılabiliyor. Görünüşler çıkartılırken, arkada kalan çizgiler hesaplanıyor ve bunlar istenen çizgi tipleriyle görüntüleniyor. MDT, bu görünüşler üzerinde önceden tanımlı ve kendisinin atadığı ölçüleri otomatik olarak yerleÅŸtiriyor. Ayrıca, yeni ölçüler kullanıcı tarafından da kolaylıkla görünüşlere eklenebiliyor. Bunların dışında, Kağıt Düzlemindeki görünüşler üzerine kaynak, geometrik toleranslar gibi semboller DIN, ISO, ANSI, BS, JIS standartlarına göre oluÅŸturulabiliyor. Böylece, istenen karmaşıklıkta modeller tasarlanırken, Kağıt Düzleminde de bunların teknik çizim görünüşleri MDT’nin yetenekleri ile otomatik olarak yaratılabiliyor. 2B görünüşler ve 3B model birbirlerine baÄŸlı olduklarından birinde yapılan deÄŸiÅŸiklikler diÄŸerine yansıyor.

Mimari Uygulamalarda Kağıt Düzlemi

AutoCAD Architectural Desktop’da, AutoCAD’in Kağıt Düzlemi özelliklerinden yararlanılıyor. Mimari çizimlerde Kağıt Düzlemi, plan, kesit ve görünüş gibi aynı anda bakılması gereken çizimleri pafta üzerinde anlaşılır biçimde sunmak için kullanılıyor.

Autodesk Architectural Desktop’da Kağıt Düzlemi kullanımı

Çizimlere eşlik eden mahal listeleri, lejantlar, metinler ve paftayı çerçeveleyecek antet de Kağıt Düzleminde yaratılabiliyor. Kağıt Düzleminde projenin kaplama yapılmış görüntüleri ve fotoğrafları da kullanılarak etkileyici sunum paftaları oluşturulabiliyor.

GIS Uygulamalarında Kağıt Düzlemi

AutoCAD Map, AutoCAD’in Kağıt Düzlemi iÅŸlevlerini kullanır. AÅŸağıdaki örnekte proje alanı farklı detaylarda ve ölçeklerde görüntülenerek çıktı almaya hazır hale getirilmiÅŸ durumda:

AutoCAD Map’de Kağıt Düzlemi kullanımı

Görünüm alanları standart antetli kağıdın üzerine yerleştirilerek gerekli düzenlemeler yapılmış. Soldaki iki görünüm alanında proje verilerinin olduğu halihazır ve kadastro paftaları aynı alan için ayrı ayrı gösterilmiş. Sağ üstte aynı alana ait arazi kullanım sorgulaması ve alt görünüm alanında da halihazır ve kadastro paftalarının birleştirilmiş halinden bir detay yer alıyor.

Arazi - Topoğrafya Uygulamalarında Kağıt Düzlemi

AutoCAD Land Development Desktop’la üretilen projelerde çizime ait farklı detaylar aynı pafta üzerine basılmak istendiÄŸinde Kağıt Düzlemi kullanıcıya büyük kolaylık saÄŸlar. Üzerinde çalışılan proje, kullanıcının belirlediÄŸi görünüm alanlarında farklı açılarda, ölçeklerde veya detaylarda görüntülenebilir.

AutoCAD Land Development Desktop’da Kağıt Düzlemi kullanımı

Yukarıda Kağıt Düzleminin nasıl kullanılabileceğine dair bir örnek yer alıyor. Çalışma alanı farklı detaylarda ve şekillerde görüntüleniyor, eş yükseklik eğrilerini kapsayan tüm arazi, çalışma alanına yaklaşılarak alınan bir detay görüntü, çalışma alanından alınan kesit görüntüsü ve arazinin üç boyutlu modeli antetli kağıda yerleştirilerek çıktı almaya hazır hale getiriliyor.

Duvar Stili OluÅŸturmak

AutoCAD Architectural Desktop, mimari elemanlar için stil tabanlı "akıllı"nesneler kullanır. Duvar da bunlardan birisidir. Kullanıcı tarafından oluşturulabilen farklı duvar stilleri, duvarın fiziksel yapısını ve çizimlerde nasıl görüneceğini belirler.

Gelin, örnek bir duvar stili yaratalım. Duvarımız, iki tarafı sıvalı yarım tuğla bir duvar olsun ve planda aşağıdaki gibi gözükmesini isteyelim.

"Design"menüsü altında "walls"alt menüsü içinde yer alan "wall styles"komutunu çalıştırdığımızda karşımıza dosyamızın içinde kullanıma hazır duvar stillerimiz listelenir. "New"düğmesine basarak kütüphanemize yeni bir duvar stili eklemenin ilk adımını atarız; duvarımızın adı T-TUĞLA13 olsun. "Edit"düğmesi ile duvarımızı hazırlayacağımız diyalog kutusuna ulaşıyoruz, öncelikle "Description"bölümüne kısa bir tanımlama yazalım. Örneğin, "iki tarafı sıvalı yarım tuğla iç duvar ".

"Components"sayfasında, duvar kompozisyonu içindeki her malzemenin adı (name), öncelik sırası (priority), yerleşme yeri (edge offset) ve kalınlığı (width) belirtilir.

"Priority"değeri duvarların kesiştiği noktada malzeme katmanlarının nasıl temizleneceğini belirler. Bu değer ne kadar küçükse o katman o kadar önceliklidir. Örneğin, biri birine saplanan iki duvardan biri betonarme ve diğeri tuğla ise, sürekli olması gereken betonarme malzeme olacağından katmanlar içinde en yüksek öncelik değerine betonarme katmanı sahip olacaktır.

"Edge offset"değeri her katmanın başlangıç yerini, "Width"ise katmanın kalınlığını belirler. Şimdi ince sıva için bir katman oluşturalım. "Add"düğmesine basarak listeye yeni bir katman ekleyelim. Listede daha önceden bir katman var ise, onu da seçebiliriz. Daha sonra bu katman için aşağıdaki değerleri girelim.

name: ince sıva

priority: 80

edge offset: -2

width: 2

Aynı işlemi tuğla katmanı için aşağıdaki değerlerle yapalım:

name: tuÄŸla

priority: 20

edge offset: 0

width: 9

Son katman, yani diğer taraftaki ince sıva için aşağıdaki değerlerle devam edelim:

name: ince sıva

priority: 80

edge offset: 9

width: 2

"Width"ve "Edge Offset"için sabit bir değer verebileceğimiz gibi "BW (base width)"seçeneği ile bu değeri duvar kalınlığına da bağlayabiliriz. Örneğin, "BW/2"değeri duvar kalınlığının yarısı kadar olacağını belirler.

Buraya kadar duvarımızın fiziksel özelliklerini tanımladık. Şimdi duvarımızın değişik görünüşlerde nasıl çizileceğini belirleyelim. Bunun için "Display props"sayfasına geçiyoruz.

Biz burada deÄŸiÅŸiklikleri sadece plan bakışı için yapacağız. "Wall style"seçeneÄŸi yapılacak deÄŸiÅŸikliklerden sadece söz konusu stilin etkilenmesi içindir. Onu iÅŸaretleyip "Attach Override"düğmesine basıyoruz. "Edit display props…"düğmesine bastıktan sonra, duvar katmanlarının (layer), taramalarının (hatch), plan düzleminin altında (below cut plane) ve üstünde (above cut plane) kalan çizgilerinin, çizilecekleri AutoCAD katmanlarını yöneten diyalog kutusu karşımıza çıkar.

Duvar içinde yer alan her malzemenin farklı kalem kalınlığında ve gerektiğinde taramayla çizilebilmesi için kendi sıra numarasıyla anılan "boundary"ve "hatch"katmanları vardır. Boundary 1, 2 ve 3 için birer renk seçin. Listenin alt taraflarına gidin, "hatch2"yi açın ve onun için de bir renk seçin. Bu tuğla malzemenin taranarak belirtilmesini sağlayacaktır.

"Hatching"sayfasına geçerek "hatch2 "nin tarama tipini, sıklığını vb. değerleri seçin. OK düğmesine basarak ilk diyalog kutusuna dönün.

Diyalog kutularının sol alt köşesinde bulunan ikon, yüzen görüntüleyiciyi açmak için kullanılır. Duvarınızın istediğiniz gibi görüntülenip görüntülenmediğini buradan kontrol edebilirsiniz. Örneğin, katman renkleriniz doğru mu?

Yeni duvar stilinizi kütüphanenize eklediniz. Artık istediğiniz uzunlukta, yükseklikte ve formda defalarca kullanabilirsiniz.

Bılgısayarların Temel Özellıklerı Bilgisayarin Asil İslemi Yapan Merkezi Islem Birim

Salı, 06 Kasım 2007

BILGISAYARLARIN TEMEL ÖZELLIKLERIBilgisayarin asil islemi yapan Merkezi Islem Birimi (CPU) tamamen elektronik devrelerden olusmaktadir. Bilgisayarda su islemler yapilabilir: l.Girdi islemleri:Bilgisayara verilerin girilmesini ~aglayan islemlerdir. Programlarda kullanilan verilerin girilmesi buna bir örnektir. 2.Aritmetik is;lemler:Çarpma, toplama, çikarma, bölme, üs alma gibi asil aritmetik islemleri yapar. Bunlardan baska karsilastirmalar da yapabilir. Bir bilgiyi digeri ile karsilastirir, büyük olani vs tespit edebilir. 3.Çikti islemleri:Girilen bilgilerin kullanilabilir hale gelmesini saglar. 4.Veri saklama is;lemleri:Program ve veriler bilgisayarda saklanarak daha sonra istenilen zamanlarda tekrar tekrar kullanilmasina imkan saglar. 5.Saklanmis bir programi isletmek: Programcinin, komut kümelerini (program) her defasinda yeniden girmesi gerekmez. Bir defa girince daha sonra bu programi her zaman isletebilir. 6.Islem akisini ve sirasini otomatik olarak degistirebilir, yapilan karsilastirma ve verilere göre bilgisayar farkli komutlari isletebilir. Ancak programin haricindeki komutlari is;letemez. BILGISAYARIN KULLANIM ALANLARI Günümüzde bilgisayarin kullanilmadigi alan ve meslek hemen hemen yoktur. Bilgisayarlarin bu kullanim alanlari asagida özet olarak verilmistir: Evlerde: Ev bütçesinin hazirlanmasi (gelir-giderler), telefon, fiyatlar, vergiler vs girilerek sonradan tekrar kullanilmasi ve diger bilgilerin kaydi. Egitimde: Egitimin (yabanci dil ögreniminden, astronomi, fizik, tip’tan bilimsel arastirmalara kadar) bilgisayar destekli yapilmasi. Ekonomik arastirmalarda: Ekonomik verilerinin hesaplanmasi, yorumlanmasi vs. Trafik kontrolünde: Trafik isiklarinin zamanlamasi ve diger trafik islemlerinin tamamlanmasi vs. Askeri alanda: Nükleer silahlarin kontrolü ve uzay çalismalarinda. Imalatta: Üretim esnasinda kalite kontrol ve otomatik üretim amaciyla (robotik üretim). Kamusal hizmetlerde: Devlet hizmetleri, saglik hizmetleri, banka hizmetleri, planlama hizmetleri vs. Iletisimde (internet): Uzak mesafeler arasinda bilgi alis verisinde. Ticaret ve yönetimde: Muhasebe, bordro, satis, rezervasyon, stok kontrolü vs. Masa üstü yayincilikta:(Desktop, Publishing, DTP) Bilgisayarin daktilo gibi kullanilmasidir. Böylece; yazilan yazi ekrandan takip edilebilir, yanlis yazilan yazi düzeltilebilir, üzerinde istenilen degisiklikler yapilabilir, saklanabilir ve çiktisi alinabilir. Ofis otomasyonunda: Bir isletmenin veya isletmeler arasi ofis hizmetlerinin bilgisayar araciligiyla yürütülmesidir. Baslica türleri; Kelime is;lem: Yazi yazmak ve bununla ilgili islemler için kullanilir. Yaygin kullanilan kelime is;lem programlar; Word For Windows, Ami Pro, Windows Write, PW, WS Hesap tablosu: Aritmetik islemler yapmak ve hesaplama yöntemlerini (formülleri) belirleyerek sonuca ulasmak için kullanilir. Yaygin kullanilan hesap tablosu programlari MS-Excel, Lotus I-23,Quatro Pro, Improve, Moonstar vs. Elektronik-posta e-mail: Mesaj gönderilmesi ve doküman iletimi amaciyla kullanilir. Bilgisayarli konferans :Iki uzak mesafe arasinda görüntülü konferans (Tele konferans) düzenlenebilmektedir. Görüntüler, büyük ekranlara yansitilarak daha rahat görünmesi saglanir. Veri tabani yönetimi: Her türlü bilginin istenildiginde ve istenildigi sekilde ulasilmak üzere düzenlendigi veri koleksiyonudur. Yaygin olarak kullanilan programlar; MS Access, Windows Kart dosyasi, Paradox,dBase. Sunum: Toplanti ve konferanslarda anlatilanlarin daha etkili olmasi için görsel ve isitsel sunumlara imkan verilebilir. Böylece sunucu, anlattiklarini bilgisayar vasitasiyla daha anlasilir ve düzenli yapabilir. Mühendislik Uygulamalari: Mühendislerin ve mimarlarin çizim ve tasarimlar için, elektrik mühendislerinin endüstriyel tasarimlari için bilgisayar yaygin bir sekilde kullanilmaktadir. Buna Bilgisayar destekli dizayn (Computer Aided Desigri- CAD) denmektedir. En yaygin kullanilan program ise AutoCAD yazilimidir. Çizim ve boyama, grafik yazilimlari, görüntü isleme, entegre yazilimlar, multimedia (çoklu ortam, istatistik, animasyon (canlandirma), ticari uygulamalar ve oyun için de bilgisayarlar kullanilmaktadir. DONANIM VE YAZILIM KAVRAMLARI Bilgisayar, yazilim (software) ve donanim (hardware) olmak üzere iki bölümden olusur. Bu iki unsurdan birisi olmadan bilgisayar çalisamaz. Donanim (Hardware): Bilgisayariri fiziksel ve elektronik yapisini olusturan ana ve çevre birimlerinin tümüne donanim denir. Örnek: Ekran, klavye, mainboard, kablo, vs. Yazilim (Software): Bilgisayari çalistirmaya yarayan, fiziksel kisim disinda kalan her seye yazilim denir. Yazilim, programlari ifade eder. Bu programlar ile bilgisayar istenildigi gibi yönlendirilir. Örnek; isletim sistemi, muhasebe programlari vs. BILGISAYARIN DONANIM YAPISI Asagidaki resimde de görüldügü gibi bir bilgisayarin ana yapisi 1.Monitor 2.Kasa 3.Klavye 4.Fare’den olusmaktadir.

Barkod

Salı, 06 Kasım 2007

Barkod

kodlanabilir bilgilerin, bilgisayar ve benzeri cihazlar tarafından okunabilecek basit simgelerdir. Daha teknik olarak anlatmak gerekirse, farklı kalınlıklardan oluşan yanyana dizilmiş siyah çizgiler topluluğudur. Aşağıda bir barkod örneği görülmektedir:

Barkod günümüzde neredeyse bir çok yerde rastlayabileceğimiz bir simge durumunda. Dergiler, sigara, biskuit, ciklet, bilgisayar ve daha bir çok ürünün üzerinde barkodu görmek mümkün. Barkod aslında, bilgisayar ve buna benzer cihazların kodlamayı okumasını kolaylaştırmak için yapılmıştır. Bilgisayara barkod bilgisini aktarmak için barkod okuyucular kullanılmaktadır. Bu barkod okuyucular barkod çizgilerini tarayarak, kodlama sistemini çözümler ve kodu bilgisayara aktarır.

İlk barkod patenti 1949 yılında alınmış olmasına raÄŸmen, bilgisayar sistemlerinin yaygınlaÅŸamamasından, aktif olarak 1980 yılından sonra yoÄŸun kullanımı baÅŸlamıştır. İlk standart barkod 1968′de oluÅŸturulmuÅŸ. Yaygın olarak kullanılan EAN kod standartı ise ancak 1976 oluÅŸturulmuÅŸ. EAN standartı bugün bir ürün üzerinde sıklıkla görebileceÄŸimiz bir barkod türünün oluÅŸmasını saÄŸlamıştır.

Barkod bir çok standarta sahiptir. Bu standartlar barkodun basımı ve okunması için uluslararası kuruluÅŸlarca saptanmaktadır. EAN, Avrupa ve ülkemizde kullanılan en yaygın standarttır. EAN kodu içinde ülke kodu, firma kodu gibi kodlamalar bulunmaktadır. EAN kodu Türkiye’de Türkiye Odalar ve Borsalar BirliÄŸi (TOBB) bünyesinde bulunan Mal Numaralama Merkezi tarafından verilmektedir.

EAN, tek barkod standartı değildir. EAN daha çok perakende satılan ürünlere standart barkodlama getirmek amacı ile oluşturulmuştur. Bu sayede numaralama işlemi bir merkez kontrolünde gerçekleştirilerek, ürün barkodlarının farklılaşması sağlanabilmektedir.

Code 128, Code 39, UPC gibi bir çok barkod standartı bulunmaktadır. Bu standartların özelliklerini Barkod Standartları bölümünde bulabilirsiniz.

Barkodlar sadece düz çizgilerden oluşmamaktadır. 2D diye adlandırılan iki boyutlu barkodlarda söz konusudur. Bu kodlama sistemi sayesinde yüzlerce karakterlik bilgi bir barkoda sığdırılabilmektedir. Örnek 2D barkodu aşağıda verilmiştir. 2D barkodlarında bir çok standartı bulunmaktadır. 2D Barkod ile bir personelin tüm kimlik bilgilerini, klinik uygulamalarda hastaya ait tüm bilgileri, üretimde ürünün geçtiği aşamaları tutabilirsiniz.

[IMG]file:///C:/DOCUME%7E1/SA%28%5e_%5e%7E1/LOCALS%7E1/Temp/msohtml1/01/clip_image001.gif[/IMG]

2D Barkod Örneği

Barkod Tipleri

Farklı amaçlar için kullanılmak amacı ile oluşturulmuş bir çok barkod standartı bulunmaktadır. Barkod standartları kodun içeriği, kaç karakter olacağı, içerebileceği karakterler (numerik, alfanümerik) özelliklerini içerir. Aşağıda belli başlı barkod standartları anlatılmıştır. EAN UPC Code 128Code 39Code 39 (Extended)Interleaved 2-of-5 Codabar Barkod ve Barkod Teknolojileri Sayfasına Dönüş

EAN

EAN kendi içinde çeşitli standartlara sahiptir. EAN 13, perakende ve uluslarası satışlarda kullanılır. Sadece nümerik ve 13 haneden oluşur. İlk üç hanesi firma kodu, sonraki dört hanesi firma kodu, sonraki beş hanesi ürün kodu ve son karakter kontrol karakteridir. Aşağıda EAN-13 kod dizilişi görülmektedir. Örnekde ülke kodu olarak Türkiye verilmiştir.

[IMG]file:///C:/DOCUME%7E1/SA%28%5e_%5e%7E1/LOCALS%7E1/Temp/msohtml1/01/clip_image002.gif[/IMG] EAN kodu rastgele kullanımlı bir kod değildir. EAN-13 kodunun TOBB (Türkiye Odalar ve Borsalar Birliği) bünyesine bulunan Mal Numaralandırma Merkezine yapılacak başvuru ile alınmaktadır. EAN-13, neredeyse tüm perakende ürünlerde kullanılmaktadır.

EAN-8, ürüne özel verilen koddur. EAN-8 dizilimi aşağıda verilmiştir. Ülke kodu içermek. 8 haneli nümerik kodlamadan oluşur. Ürün kodu TOBB tarafından verilir.

XXX XXXX

X

Ülke

Kodu

Ürün Kodu

Kontrol kodu

EAN için ülke kodları aşağıda verilmiştir:

Ülke Kodu

Açıklama

00-13

USA & Canada

20-29

reserved for local use (store/warehouse)

30 -37

France

400-440

Germany

45

Japan

46

Russian Federation

471

Taiwan

474

Estonia

475

Latvia

476

Azerbeycan

477

Lithuania

479

Sri Lanka

480

Philippines

482

Ukraine

484

Moldova

485

Armenia

486

Georgia

487

Kazakhstan

489

Hong Kong

49

Japan

50

UK

520

Greece

528

Lebanon

529

Cyprus

531

Macedonia

535

Malta

539

Ireland

54

Belgium & Luxembourg

560

Portugal

569

Iceland

57

Danmark

590

Poland

594

Romania

599

Hungary

600-601

South Africa

609

Mauritius

611

Morocco

613

Algeria

619

Tunisia

622

Egypt

625

Jordan

626

Iran

64

Finland

690-692

China

70

Norway

729

Israel

73

Sweden

740-745

Guatemala, El Salvador, Honduras, Nicaragua, Costa Rica & Panama

746

Republica Dominicana

750

Mexico

759

Venezuela

76

Switzerland

770

Colombia

773

Uruguay

775

Peru

777

Bolivia

779

Argentina

780

Chile

784

Paraguay

785

Peru

786

Ecuador

789

Brazil

80 -83

Italy

84

Spain

850

Cuba

858

Slovakia

859

Czech

860

Yugoslavia

869

Turkey

87

Netherlands

880

South Korea

885

Thailand

888

Singapore

890

India

893

Vietnam

899

Indonesia

90-91

Austria

93

Australia

94

New Zealand

955

Malaysia

977

Uluslararası periyodik yayınlar için

978

Uluslarası Standart Kitap Numarası

979

Uluslararası müzik numarası

980

Refund receipts

99

Coupons

UPC

UPC (Universal Product Code), ilk en geniş uygulamaya sahip barkod standartıdır. Satışa sunulan ürünlerin standart kodlaması için kullanılır. EAN, UPC standartının bir ürünüdür. 10 nümerik haneden oluşur. İlk beş hane, firma kodu, sonraki beş karakter ise ürün kodunu ifae eder. UPC-A ve UPC-E en çok kullanılan standartlardır.

Code 128

Alfanumerik kodlamaya sahip bir standarttır. Code 128, ürün kodu dışında, barkod içinde farklı bilgilerin tutulması amacı ile oluşturulmuştur. Code128 barkodu ile ağırlık, tarih, ölçüm sonuçları, lokasyon, raf adres bilgileri tutulabilir. Code 128 ile ürünün özelliklerini veya farklı bilgileri çok kolay barkod olarak basabilirsiniz. Alfanumerik kodlama yapılabilir. Code 128, üç alt bileşeni bulunmaktadır. Bu bileşenler çeşitli karakter setlerini içerir. 128 karakteri kullanabileceğiniz geniş bir karakter setine sahiptir.

[IMG]file:///C:/DOCUME%7E1/SA%28%5e_%5e%7E1/LOCALS%7E1/Temp/msohtml1/01/clip_image003.gif[/IMG]

Code 39

Alfanumerik kodlamaya sahip bir standarttır. 26 büyük harf, 10 rakam ve 7 özel karakter kodlamasına göre tasarlanmıştır. Açık ve basit bir kodlama yapısına sahiptir. Okuyucular tarafından çok kolay okuma yapılabilecek bir kodlama yapısına sahiptir. Genellikle uzunluk olarak fazla yer kaplarlar. Aşağıda örnek olarak görülmektedir:

[IMG]file:///C:/DOCUME%7E1/SA%28%5e_%5e%7E1/LOCALS%7E1/Temp/msohtml1/01/clip_image004.gif[/IMG]

Code 39 (Extended)

Code 39 ile aynı yapıda, fakat 128 karakterlik bir ASCII tablosuna sahiptir.

Interleaved 2-of-5

Sadece nümerik karakter kodlamasına sahiptir. Kodlamada kullanılacak karakter sayısı çift sayıya denk gelmelidir. Yani 6,10,12 haneli, çift sayı olan kodlama uzunluğu kullanılabilir. Aşağıda örnek olarak görülmektedir:

[IMG]file:///C:/DOCUME%7E1/SA%28%5e_%5e%7E1/LOCALS%7E1/Temp/msohtml1/01/clip_image005.gif[/IMG]

Codabar

Codabar daha çok kütüphane, tıbbı endüstride kullanılan bir kodlama standartıdır. Nümerik karakterleri, kontrol karakterlerini ve başlangıç/son (start/stop) karakterlerini barındırabilir. Codabar, aynı zamanda USD-4, NW-7 veya 2-of-7 code olarak da adlandırılır.

[IMG]file:///C:/DOCUME%7E1/SA%28%5e_%5e%7E1/LOCALS%7E1/Temp/msohtml1/01/clip_image006.gif[/IMG]

ÜRÜNLERİNİZE NASIL BARKODLAMA YAPABİLİRSİNİZ

Ürünlerinize barkodlama yapmadan ürünün satış noktalarının ve nasıl satışının yapıldığının ve ürün izlemede kullanılan metodlar önem taşımaktadır.

Eğer ürününüz perakende ürün ise yani biskuit, sigara, deterjan, içecek gibi ürün tipinde ise EAN barkodlaması kullanmanız önerilir. Bu sayede sadece kuruluşunuza ait bir koda sahip olursunuz. EAN kodlaması Barkod Tipleri bölümünde anlatılmıştır.

EÄŸer ürün perakende deÄŸil veya sadece kendi stoklama, üretim sisteminizi izlemek için kullanacaksanız, EAN kodlamasını kullanmak zorunda deÄŸilsiniz. Ama yine de mamüllerinizin standart kodlamasını için EAN kullanabilirsiniz. Mal Numaralandırma Merkezinden alancağınız her bir EAN kodu ile 0..9999 arasındaki kodlama ile 10,000 ürünü kodlayabilirsiniz. 10,000′den fazla ürün söz konusu ise yine Mal Numaralandırma Merkezinden ayrı bi EAN kodu alabilirsiniz.

EÄŸer iÅŸletme içinde ürünleri barkodlandıracaksanız yaygın olarak kullanılan barkod tipi Code 39 veya Code 128′dir. Barkod kodlarının anlamlı olması gerekmemektedir. Çünkü bu kodlar bilgisayar tarafından tanınacak bir kodlandırma sistemidir. Öneml, olan ürünleri birbirinden ayırt etmek için her bir ürüne grubu, türüne veya tipine farklı bir kod verilmesidir.

Barkod ürün kodu içerebildiği gibi ağırlık, serino, firma kodu gibi bilgilerin ürün üzerine basılmasında da kullanılabilir. Barkod sadece ürünlerde değil, depoda raf adreslerinde, üretim iş istasyonlarının numaralandırılmasında, personel kartlarında ve daha bir çok yerde kullanılmaktadır.

Aşağıda çeşitli etiket tipleri gösterilmektedir:

[IMG]file:///C:/DOCUME%7E1/SA%28%5e_%5e%7E1/LOCALS%7E1/Temp/msohtml1/01/clip_image007.gif[/IMG] [IMG]file:///C:/DOCUME%7E1/SA%28%5e_%5e%7E1/LOCALS%7E1/Temp/msohtml1/01/clip_image008.gif[/IMG] [IMG]file:///C:/DOCUME%7E1/SA%28%5e_%5e%7E1/LOCALS%7E1/Temp/msohtml1/01/clip_image009.gif[/IMG] İlk etiket örneğinde ürünün sadece ürün kodu bulunmaktadır. Bu kod ile ürünün fiyat bilgisine, ürünün ne olduğuna erişmek yeterli olabilmektedir. Bu kodlama içinde ürünün fiyat bilgisi, ne olduğu yazılı değildir. Ancak bu koda karşılık gelen bilgiler bilgisayarınız tarafından veritabanından alınır ve işlem yapılır.

İkinci etiket örneÄŸinde, ürün barkodu ve ürüne ait bir seri numarası bulunmaktadır. Seri numarası genellikle ürünün birebir takip edilmesi için kullanılır. Her bir seri numaralı ürün genellikle ayrı ayrı izlenebilir. ÖrneÄŸin etikette belirtilen Monitör, Teknik Servis’e geldiÄŸi anda ürünün seri numarasından ürünün ne zaman satıldığı ve garanti kapsamı içinde olup olmadığı bilgisine eriÅŸilebilir. Bu bilgiler bilgisayarda seri numarasına karşılık gelen bilgilerdir. Seri numarası her bir ürün için farklı bir numara olup, ürünün ne zaman satıldığı veya garanti süresini içermez. Serinumarasının bu bilgileri de içermesi gerekmez. Ama yinede ürünün üretim tarihi gibi bilgileri barkod bilgisi içinde bulundurabilirsiniz.

Diğer bir örnekte ise standart miktara sahip olmayan ürünler için etiketleme yapılmıştır. Etiket üzerinde yine ürün barkodu ve hemen aşağısında ağırlık barkodu bulunmaktadır. Bu sayede ağırlıkları değişken ürünlerinde her birinin üzerine ağırlık bilgisi yazılabilmektedir.

Zaman zaman, tek bir barkod bilgisine ürünün hem kodu hemde ağırlığı gibi, ürüne özel bir takım bilgilerde yazılabilir. Bunun avantajı tek bir barkod okutma işlemi ile ürünü koduna ve ürünün ağırlık bilgisine erişebilmektir.

BARKODLAMA İŞLEMİ NASIL YAPILIR NELERE DİKKAT EDİLMESİ GEREKİR

Barkodun kullanım amacına dönersek, barkod bir operasyonda (satış, depolama, üretim vb.) insan hatalarını en aza indirmek ve işlem hızını arttırmak üzere kullanılır. Operatör bilgisayarın klavyesinden girmek yerine barkodları okutarak bilgileri bilgisayara aktarır. Bu yüzden hatalı girişleri engellemek için ürün etiketinizin üzerine gerekli bilgilerin barkodlanarak yazılması gerekmektedir. Dikkat edilmesi gereken diğer bir nokta da, hangi bilgilerin ürün üzerinde yer alıp almayacağıdır. Klavyeden girişlerde yapılan hata istatistiği ise 300 karakterde bir karakter hatadır. Bu iyimser bir tahmindir. Klavyesi iyi olmayan veya iş yoğunluğu fazla olan bir operatör daha fazla hata payına sahiptir. Bunun için barkod, kullanıcıların bu bilgileri doğru girmesini sağlar ve kullanıcının dikkatini farklı noktalar üzerinde yoğunlaştırmasını sağlar.

Örneğin coğu zaman fiyat bilgisi barkodlanarak ürün üzerine basılmaz. Fiyat bilgisi, bilgisayarınızda ürün bazında tutulur. Fiyat bilgisi bilgisayarınızda ürün koduna karşılık gelecek şekilde girilir. Ürün barkodu okutulduğunda bilgisayarınızda bulunan program aracılığı ile okutulan barkoda karşılık gelen fiyat bilgisi veritabanından bulunarak, işlem yapılır. Bu sayede fiyat bilgilerini sadece bilgisayarınızdaki program aracılığı ile değiştirmek yeterli olacaktır. Aksi takdirde, ürün üzerinde bulunursa, fiyat değişikliğinde tüm ürünleri tekrar etiketlemek durumunda kalabilirsiniz. Genellikle ürün etiketlerinin üzerinde fiyat bilgisi, son kullanıcıyı bilgilendirmek amacı ile yazı ile yazılır.

Ürünü tarif eden veya ürüne özel bir takım bilgiler olabilir. Yukardaki örnek etiketlerde belirtildiği gibi, her bir ürüne ait seri numara, ağırlık bilgisi etiket üzerine basılabilir.

Ürün Barkodu Nasıl Basılabilir ?

Ürün eğer standart bir pakete sahip ve standart ürün ise, ürün ambajı üzerine matbaa aşamasındayken de basılabilir. Eğer ürün ambalajı yok ise, ürün etiketlemesini kendiniz de yapabilirsiniz.

Ürün etiketlemesini kendiniz yapacaksanız, genellikle bu iş için Barkod Yazıcılar kullanılmaktadır. (Neden Barkod yazıcı kullanılması gerektiği için buraya tıklayınız) Bu durumda, barkod yazıcısı ve etiket baskısı yapabilecek bir yazılıma ihtiyaç vardır.

Etiket ve Baskı Türü Seçimi

Barkod etiketleri kendinden yapışkanlı (sticker), karton, metal ve benzeri şekillerde olabilir. Etiket baskı yöntemi ise ikiye ayrılır: Termal Baskı : Termal baskı aynen klasik faks makinalarında olduğu gibi, yazma işlemini kağıdı ısıtarak gerçekleştirir. Termal kağıda (ısıya duyarlı kağır) yapılan bu baskı yönteminde ısınan kağıt yüzeyi, siyaha dönüşür ve baskı gerçekleştirilir. Basılan bu etiketlerin güneşte , sıcak ortamda, yoğun ışık altında kalması baskının bozulmasına sebep verebilmektedir. Bu yüzden dayanıklı bir baskı metodu değildir. Ancak kısa süreli kullanım için elverişlidir. Örneğin bankalarda işlem sırası için verilen sıra numarası etiketleri termal baskı ile basılan etiketledir ve kısa süre içinde kullanırlar.

Termal baskı için termal etiket kullanılması zorunludur.

Termal Transfer Baskı : Termal transfer baskı, ribbon diye adlandırılan şerit aracılığı ile yapılan baskıdır. Isıtılan şeritin etikete yapışması ile baskı gerçekleştirilir. Etiketin ısıya karşı duyarlı olması gerekli değildir. Bu baskı metodu dayanıklıdır. Isıdan, güneşten doğrudan etkilenmez. Baskının dayanıklılığı, etiketin ömrünün belirlemez. Eğer etiket yağmur, kar veya soğuğa maruz kalacak ise etiketin tipide önem taşımaktadır. Baskı yöntemi dışında, etiketin niteliğinin önemi büyüktür. Etiket ürüne yapıştırılacak ise, kendinden yapışkanlı etiket kullanılması gerekir. Eğer elbise, pantolan, ceket gibi bir ürüne takılacaksa, karton etiket kullanılabilir. Ürünün barındılacağı yer ve ürünün niteliği etiket seçiminde etkili olacaktır. Örneğin etiketin ürün üzerinde kolaylıkla çıkartılmasını isteyebilir veya çıkartılma anında yırtılmasını isteyebilirsiniz. Buna göre kağıt, PE (plastik) karışımlı veya alüminyum etiket kullanabilirsiniz.

Ürünleri Etiketlemek Mümkün Değilse

Eğer ürün etiketleme yapılmayacak kadar ufak veya birim fiyatı düşük ürünler ise, ürün kodunu içeren etiketi, ürünün bulunduğu raf, dolap, çekmece üzerine de yapabilirsiniz. Örneğin civate, çivi, fener ampulü gibi malzemeleri etiketlemek son derece zor ve maliyetli olamabilmektedir. Bunun için bu tür ürünler, tuttuğunuz paket, çekmece, raf gibi yerlere ürün etiketini yapıştırabilirsiniz. Bu durumda stoğa giriş/çıkış işleminde bu barkod okuturularak işlem yapılabilir.

NEDEN BARKOD YAZICI KULLANILIR

Barkod yazıcılar, etiket basmak için ideal araçlardır. Bunun bir çok sebebi vardır. Sadece barkod etiketi değil, fuar giriş kullanıcı kartı, sinema bileti ve daha bir çok amaç için kullanılabilirler. Ancak barkod yazıcısı diye adlandırılan yazıcıların aşağıdaki temel özellikleri vardır: Değişik türde etiketlere baskı yapılabilir.Termal baskı yapabilirlerEtiketleme maliyetleri düşüktürHızlı baskı yapabilirlerEndüstriyel tipleri mevcuttur. Bu sayede üretim, depo gibi endüstriyel alanlarda kolayca kullanılabiirler.Yukarıda sayılan özellikler belli başlı özelliklerdir. Bir Inkjet veya Laser yazıcı ile kıyaslandığında etiket baskı maliyeti son derece düşüktür. Ayrıca Inkjet veya Laser yazıcıların ancak sayfa şeklinde tasarlanan etiketlere veya tek tek besleme sureti ile yapılan etiketlere baskı yapabilirler. Bu etiketler Inkjet ve Laser teknolojisine uyun şekilde üretilmiş olmaları gereklidir. Piyasa da bulabileceğiniz en yaygın çeşit etiket türü A4 boyutunda bir sayfaya dizili şekilde ki etiketlerdir. Bu etiketlerin desavantajı, tek bir etiket basmak zorunda olduğunuzda sayfadaki tek bir etikete basmak zoruna olmanız ve her seferinde baskı yapılacak etiketi seçmek zornda oluşunuzdur. Bunlar basit kullanım zorluklarıdır.

Aslında daha da önemlisi, etiketleme maliyeti ve dayanıklı etiket üretimidir. Barkod yazıcılar ile PE, karton, firmanızın Logo’su baskılı etiket ürettirebilirsiniz. Bu etiketler istediÄŸiniz boyutlarda ve ürününüze uygun ÅŸekilde tasarlanabilir. ÖrneÄŸin soÄŸuk hava deposunda barındırılan gıdalarda kullanılacak etiket yapışkanı ve etiket buna göre seçilmelidir. Veya ürününüz yaÄŸmura, kara, ısıya dayanıklı olacak, ürün üzerinden çıkartıldığı zaman iz bırakmayacak nitelikte olsun istiyorsanız barkod yazıcı ile uygun etikete, uygun ÅŸekilde baskı metodu ile baskı yapmalısınız.

Barkod yazıcılar, hızlı baskı yapma niteliğine de sahiptirler. Kendi içlerinde barındırdıkları merkezi işlemci birimi ve kendilerine özgü dilleri ile garik tasarımları etiketleri dahi çok hızlı basabilmektedirler. Microsoft Windows gibi işletim sistemlerinde baskı grafik tabanlı yapılır. Bu da baskı hızını olumsuz etkiler. Halbuki barkod yazıcılara bir kaç byte göndererek barkod bastırabilmek mümkündür.

Barkod yazdırma metodları için Etiket ve Baskı Türübaşlığına bakınız.

Barkod Yazıcı Seçilirken Dikkat Edilmesi Gereken Konular ?Barkod yazıcı seçerken, ilk olarak etiketleme amacınızını belirlemeniz gerekmektedir. Bu baskı metodunu seçmeniz konusunda önemli bir noktadır. EÄŸer dayanıklı (uzun süre kalıcı) etiket üretmek istiyorsanız Termal Transfer baskısı yapabilen bir barkod yazıcı olmalıdır. EÄŸer etiket kısa süreli kullanım için ise bu durumda Termal baskı yapabilen bir barkod yazıcı da yeterli olabilecektir. Yazıcı kararı verirken aÅŸağıdaki sorular cevaplandırılmalıdır : Etiket Dayanıklı mı, yoksa kısa süreli kullanım için mi basılacak ?Günde/Ayda veya bir anlık en fazla kaç etiket basılacak ?Ofis ortamında mı, yoksa endüstriyel bir ortamda mı kullanılacak ?Etiket geniÅŸliÄŸi en fazla kaç cm. veya mm. olacak. Ne tür bir etikete baskı yapılmak isteniyor (Kendinden yapışkanlı, karton, yıkama talimatı vb..)Barkod yazıcılar genel olarak masa üstü, endüstriyel olarak ikiye ayrılır. Endüstriyel yazıcıların neredeyse tümü Termal/Termal Transfer baskıyı desteklemektedirler. Ancak masaüstü yazıcı alırken hangi türde baskı yapabildiÄŸini sormanızda fayda vardır. EÄŸer geniÅŸliÄŸi 10 cm’den büyük etiket kullanacaksanız, yazıcının maksiumum kaç cm. geniÅŸliÄŸine baskı yaptığını sorunuz. Ve son olarak baskı hızı bir anda ihyacınız karşılabilecek nitelikte olmalıdır. Aksi takdirde yavaç bir barkod yazıcı operasyonunuzun hızını kesebilir.

Her barkod yazıcı istenilen türde etikete baskı yapamayabilir. ÖrneÄŸin karton etiket baskı da, karton kalınlığı bazı barkod yazıcılar tarafından kabul edilemeyebilmektedir. Veya yıkama talimatı etiketi basacaksanız, her barkod yazıcı tekstil’e uygun etiket baskısı yapamayabilir.

Bunların dışında, barkod yazıcıya yardımcı aksesuar olarak kesisi ve soyucu gibi üniteler de takılabilmektedir. Kesici ünitesi sayesinde, her bir etiket baskısından sonra veya baskı bitiminde etiketlerin biribirinden ayrılmasını sağlamak amacı ile otomatik kesilmesi sağlanabilir. Soyucu ünitesi ise yapışkanlı etiketin otomatik olarak kağıttan ayrılmasını sağlayarak, kullanıcının etiket soymasına gerek kalmadan otomatik olarak etiketi çıkartır.

Barkod Okuyucu Alınmasın da Dikkat Edilecek Konular ?

Piyasada pek çok barkod okuyucu çeşidi bulunmaktadır. Burada söz edilen barkod okuyucular, bilgisayara klavye aracılığı ile bağlanabilen klavye veya seri port bağlantılı okuyuculardır. Bu okuyucular bilgisayara kablo aracılığı ile bağlıdırlar.

Barkod Okuyucular, Basit CCD, Long Range (Uzak Mesafe Okuyucusu), Lazer Okuyucu olarak genel olarak üç farklı çeşittedir. Bunların dışında perakende sistemde sıklıkla kullanılan sabit veya çok yönlü okuyucularda mevcuttur.

Basit CCD okuyucular, okuyucunun barkoda çok yaklaştırılması veya dayanması suretiyle okuma yapabilen okuyuculardır. Bu okuyucular okuyucu genişliğinde büyük olan barkodları okuyamaz. Çok ideal okuyucular değildirler. Yüzeyin yuvarlak, parlak, biraz buruşuk olması okumalarını kolaylıkla engelleyebilir.

Long Range (Uzak Mesafe) Okuyucular, basit CCD okuyuculara göre daha uzak mesafeden okunmasını sağlar. 10-20 cm arasında okuma yapabilen okuyucular vardır. Barkod genişliği, barkod okuyucu genişliğinde fazla olabilir. Basit CCD okuyuculara göre, barkod bilgisi daha kolay okutulur.

Laser Okuyucular ideal denebilecek okuyuculardır. 1.2 metre mesafeden barkod okuyabilenleri vardır. Diğer barkod okuyuculara göre barkodları okutmak daha kolaydır. Barkod bilgisi daha kısa sürede tanınır ve bilgisayara aktarılır.

Eğer barkodun kolay okunamasını istiyor ve operasyonun hızı sizin sizin önemli ise Basit CCD okuyucu seçmemelisiniz.

EAN Başvurusu için Gerekli Belgeler

EAN başvurusunu ilk kez yapıyorsanız, Türkiye Odalar ve Borsalar Birliğine bağlı, Milli Mal Numaralandırma Merkezine kayıt işleminizi yaptırmanız gerekmektedir. Bunun için gerekli belgeler:

·TOBB matbu evrakları (Başvuru Formu, Danışman Firma ile yapılan Anlaşma Taahütnamesi, TOBB ile yapılacak noter tasdikli taahütname)

·Ticaret Odası Faaliyet Belgesi

·Kayıt için Aidat Makbuzu

·Önceki yıla ait gelir tablosu

·Vergi Levhası Fotokopisi

EAN başvurularınızı, bir danışman firma aracılığı ile yapabilirsiniz

Programlarınızdan Barkod Nasıl Basabilirsiniz ?

Microsoft Office ve Programalam araçlarından farklı şekillerde barkod baskısı yapabilirsiniz. Bunun için özel tasarlanmanmış barkod fontları veya OCX, ActiveX gibi program bileşenlerinden yararlanabilirsiniz.

Barkod fontları kullanışlı bir yöntemdir. Ancak Microsoft Visual Basic, Borland Delphi, Power Builder gibi uygulama geliştirme araçları kullanıyorsanız, ActiveX veya OCX kullanmanızı öneririz. Programlarınızın içinden kolaylıkla kullanabileceğiniz Mabry Barcode ActiveX/OCX ile bir çok barkod standartınını programlarınızda görüntüleyebilir ve basabilirsiniz. Barkod tipini, genişliğini, mil kalınlığını, yönünü çok kolay belirtebilirsiniz. Yazıcıya baskı için ise basmak istediğiniz koordinatı vermeniz yeterlidir.

Aşağıda barkod fontlarını bulabileceğiniz linkleri ve free (bedava) barkod fontlarını bulabilirsiniz. Aşağıda verilen program veya fontlar ile ilgili herhangibir sorumluluk kabul edilemektedir ve destek verilmemektedir.

Barkod Fontlar ve İlgili Linkler Download. Matthew Welch tarafından oluÅŸturulan Code 39 barkod fontu. Detaylı bilgiyi Matthew’in sitesinde bulabilirsiniz. (Freeware) Download. Rick Brown tarafından oluÅŸturulan Code128 barkod fontu. Detaylı bilgi için Rick Brown’a e-mail atabilirsiniz. (Freeware)Abri Technologies. Pek çok barkod fontu bulabileceÄŸiniz adres.Anex Techologies, 32 Bit Code39, Code128, CodaBar ve daha bir çok barkod tipini destekleyen barkod fontlarını bulabilirsiniz. Barcode Pro, True Type Font demolarını bu adresden çekebilirsiniz.


Destekliyoruz arkadas - arkadas - oyun oyna - oyun - en güzel oyunlar jinekolog - kadin dogum doktoru kadin dogum uzmani jinekolog - kadýn doðum doktoru kadýn doðum uzmaný