프로젝트 구성

48
프프프프 프프

description

프로젝트 구성. 프로젝트. 델파이 프로그램의 기본 단위 즉 , 델파이로 만드는 프로그램을 구성하는 모든 파일들의 집합 구성파일 확인 View 메뉴 -> Project Manager 메뉴 프로젝트 파일 (DPR 확장자 ) 폼 관련 파일 (FRM 확장자 ) 소스 파일 (PAS 확장자 ). 프로젝트. DPR ----  FRM 파일 | --  PAS 파일. 프로젝트 파일. program Project1; uses Forms, - PowerPoint PPT Presentation

Transcript of 프로젝트 구성

프로젝트 구성

프로젝트• 델파이 프로그램의 기본 단위• 즉 , 델파이로 만드는 프로그램을

구성하는 모든 파일들의 집합• 구성파일 확인

– View 메뉴 -> Project Manager 메뉴– 프로젝트 파일 (DPR 확장자 )– 폼 관련 파일 (FRM 확장자 )– 소스 파일 (PAS 확장자 )

프로젝트• DPR ---- FRM 파일 | -- PAS 파일

프로젝트 파일program Project1;

uses Forms, test in 'test.pas' {Form1};

{$R *.RES}

begin Application.Initialize; Application.CreateForm(TForm1, Form1); Application.Run;end.

프로젝트 파일program Project1;

• 프로젝트의 이름을 지정• 프로젝트의 이름이 실행 파일의 이름이 됨

프로젝트 파일uses Forms, test in 'test.pas' {Form1};

• Uses 절– 다른 소스 파일의 내용을 참고하고 싶을때 이용– In : Test.pas 소스 파일이 이 프로젝트에서

사용되는 파일이라는 것을 컴파일러에게 알려 줌– Test : 유닛의 식별자 (identifier) 이고 test.pas 는

유닛이 저장된 파일 이름– {Form1} : 유닛과 연결된 폼 이름을 위한 주석

프로젝트 파일{$R *.RES}

• 컴파일러에게 리소스 파일을 연결해서 컴파일 하라는 컴파일러 지시어

프로젝트 파일begin Application.Initialize; Application.CreateForm(TForm1, Form1); Application.Run;end.

• 프로그램 실행시 실행 순서• Application.Initialize : 어플리케이션을

초기화하라는 명령• Application.CreateForm(TForm1, Form1) :

어플리케이션에서 사용할 폼 생성• Application.Run : 어플리케이션을 실제로

실행하는 명령

유닛 (Unit)

• 유니트는 델파이 프로그램의 기본이 되며 메인 프로그램과 매우 유사

• 새로운 프로젝트를 만들면 폼과 함께 생성• 유니트는 크게 세 부분 구성

– interface 부분 : 현재의 유닛 파일내에서 사용하고자 하는 변수와 다른 유닛 등을 지정하는 영역

– implementation 부분 : 유닛에서 사용되는 프로시져와 함수가 실행되는 부분을 지정

– finalization 부분 : 프로그램이 종료될 때 파일을 닫기 , 메모리 해제 등의 윈도우 자원들을 해제해 주는 영역

unit Unit1;

interface

usesWindows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;

typeTForm1 = class(TForm)Label1: TLabel;Button1: TButton;Edit1: TEdit;procedure Button1Click(Sender: TObject);private{ Private declarations }public{ Public declarations }end;

varForm1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);begin

Edit1.Text := ' 안녕하세요 ';end;

end.

USES 문• uses

Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;

• 델파이가 만들어 놓은 유닛을 정의하여 이러한 유닛들이 포함되어 있는 변수나 상수 , 서브루틴을 프로그램에서 참조할 수 있게하는 역할 . => C 언어의 헤더파일과 같은 역할을 함

TYPE 문• type

TForm1 = class(TForm)Label1: TLabel;Button1: TButton;Edit1: TEdit;procedure Button1Click(Sender: TObject);private{ Private declarations }public{ Public declarations }end;

• 클래스를 선언할 수 있음 , 이벤트 핸들러 선언 부분• 폼에 객체를 배치하면 이 부분에 객체에 대한 사용 컴포넌트가 추가됨 => 대문자 T 로 시작하는 글자는 델파이가 미리 만들어 놓은 클래스를 의미하거나 유닛 객체를 의미

VAR 문• var

Form1: TForm1;• 전역변수를 선언하는 영역

IMPLEMENTATION 문• implementation

{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);begin

Edit1.Text := ' 안녕하세요 ';end;

end.• 프로그램에서 필요한 프로시저 작성• {$R *.DFM} : 주석 => 컴파일러 지시자로 폼과 폼에 포함된

여러가지 컴포넌트의 속성을 읽어오라는 의미• interface 에 정의된 내용을 토대로 사용자가 프로시저 , 함수를

지정하거나 지정된 프로시저나 함수에서 사용할 변수나 상수 등 을 지정한다 . 여기서 지정하는 함수와 프로시저 혹은 변수나 상수 등은 모두 이들을 지정한 현재의 유니트에서만 사용할 수 있 다 . 즉 , 지역적으로만 사용할 수 있다 .

Unit < 유닛 이름 >; 소스코드가 저장될 파일 이름Interface

uses< 포함될 유닛 이름들 >;const< 상수이름 > := < 상수값 >;type

< 타입지시어 >:< 타입 >; 사용할 클래스 정의 , 폼에 추가한 컴포넌트 리스트정의

< 프로시저와 함수선언 >; 이벤트 핸들러의 선언들과 필요에 따라 만든 함수들 선언

private{ private declarations } < 변수이름 >:< 변수타입 >;

public{ public declarations }프로시저 ( 함수 ) 선언 ;

end; 타입의 끝 var < 객체이름 >:< 클래스 이름 >; 클래스 변수 정의

Implementation 앞에서 선언한 프로시저나 함수들을 자세히 구현

{$R*.DFM}// 구현코드부분 이 부분에 이벤트 핸들러 / 프로시저 / 함수

구현

Initialization 코드 실행시 맨 처음 실행되는 코드 코드 실행 중 초기값이 필요할때 설정

Finalization 메인 프로그램이 종료되고 실행 메모리나 시스템 자원 해제를 위한 처리

End.

폼 파일• 폼 디자인 정보를 저장• 바이너리 파일로 저장 => 5 에서는

텍스트 파일로 저장

파스칼 언어 문법

파스칼의 역사• Nicklas 에 의해서 1960 년대 말에 개발

– Algol 언어를 모델• FORTRAN 이나 COBOL 보다 장점이 많음• 매우 복잡하고 배우기 어려운 단점

– 코드의 작성이 쉽고 , 배우기 쉽고 , 사용하기 쉬운 언어 설계

– 구조적 프로그래밍 지원하는 블록구조

• 1984년도 볼랜드의 터보파스칼• 객체지향 언어

언어의 구조Procedure 프로시저명 ;Begin…. 본문… .;

End;

예제 )Procedure TForm1.ButtonClick(Sender:TObject);Begin

End;

• 프로시져 추가버튼 객체 더블클릭

• Edit 객체 추가

• 프로시져에 코드 삽입

컴포넌트 처리

• Edit1.text => Form1.Edit1.text

• 소속 . 컴포넌트 . 속성– Form1.Edit1.text

• 소속 . 컴포넌트 . 함수– Form1.Button1.OnClick()

주석문

• {}– { 와 } 사이에 주석문 입력 =>{ 이건 주석 }

• (* *)– (* 와 *) 사이에 주석문 입력 =>(* 이건

주석 *)• //

– // 다음에 주석문 입력 => // 이줄은 주석

세미콜론 / 점 /begin…end;

• ;( 세미콜론 ) – 코드 한줄의 끝을 의미하는 기호

• .(점 )– 유닛 혹은 프로그램의 끝

• 블록– begin (블록의 시작 )– end (블록의 끝 )

• 모든 코드는 세미콜론으로 분리• Begin…end; 는 항상 한 쌍으로 사용• End; 앞에서의 세미 콜론은 생략 가능• 유닛의 마지막 end 뒤에는 .(점 ) 을 추가해서 유닛의 마지막임을 표시

문장 (Statement)

• 하나의 실행 가능한 코드 라인• 단순문•복합문

– Begin 과 end 사이에 여러 단순문을 합쳐서 하나의 블록으로 만든 예

변수

변수란 ?

• 값을 저장하기 위한 공간

• 쓰이는 용도에 따라 각각의 형이 존재– 정수를 저장하기 위한 공간– 실수를 저장하기 위한 공간– 문자를 저장하기 위한 공간– 문자열을 저장하기 위한 공간

변수의 이름•각 변수를 구별하기 위한 방법• 이름 생성규칙

– 255 자를 넘을 수 없음– 영문자 알파벳 , 숫자 , 밑줄문자 “ _”로

구성– 대소문자 구별 안함– 이름의 첫번째 문자는 반드시 영문자

알파벳– 예약어들은 변수 이름이 될 수 없음

변수 선언varx,y : integer;begin

x := 10;y := 0;y := x+5

end;

• 형식• 변수 1, 변수 2,… : 변수형 ;

• 변수형 => 자료형

자료형• 변수가 가질 수 있는 값의 종류나 타입• 기본 자료형

– 숫자 관련 자료형 : Shortint, Integer, LongInt, Byte, Word, Real, Single, Double, Extended, Comp, Currency

– 문자형 : char– 문자열형 : string – 논리형 : Boolean

숫자관련 자료형• 정수형

– Shortint : 1Byte (-128 ~ 127)– Integer : 2Byte (-32767~32768)– LongInt : 4Byte (-2147483638 ~ 2..7)– Byte : 1Byte (0 ~ 255)– Word : 2Byte (0 ~ 65535)

숫자관련 자료형• 실수형

– Real : 6Byte (2.9*10E-39 ~1.7*10E38)– Single : 4Byte (1.5*10E-45 ~ 3.4*10E38)– Double : 8Byte (5.0*10E-45 ~ 1.7*10E308)– Extended : 10Byte (3.4*10E-4932 ~

1.1*10E4932)– Comp : 8Byte (-2*10E63+1 ~ 2*10E63-1)– Currency : 8Byte (-922337203685477.5808

~ 922337203685477.5807 ( 약 10 진수 15자리 )

나눗셈 프로그램 작성

• 문자를 실수로 변환 => strtofloat( 문자 )• 실수를 문자로 변환 => floattostr( 실수 )

나눗셈 프로그램 작성

문자형 (char)

• 문자형– AnsiChar : 1Byte

• ASCII 코드값 저장– WideChar : 2Byte

• 국제문자를 지원하는 유니 코드 문자 저장

• 문자값은 항상 어포스트로피 (‘’) 로 감싸야 함– ‘H’

• 선언예 ) a : char; a := ‘N’;

문자열형 (String)

• 문자열 : 연속된 문자들의 집합• 문자열 지정시 어포스트로피 이용해서

지정• 문자열 서로 연결할 때 + 연산자 사용

• 선언예 ) b : string; b := ‘문자열’ ;

논리형 (Boolean)

• 참과 거짓을 표시하기 위해서 True 혹은 False 값만을 가질 수 있는 자료형

• True 와 false 는 파스칼에서 미리 정의되어 있는 정의어

• 선언예 ) flag : boolean; flag := true;

구조화된 자료형• 배열 (Array)• Set 형• 레코드 (Record)• 열거형 (Enumerated)

배열 (array)

• 같은 종류의 자료형을 여러 개 저장할 수 있는 메모리 공간

• 여러 데이터를 하나의 변수처럼 사용가능

국어 영어 수학

MyScore

배열 (array)

• 선언형식– Array [인덱스 ] of 요소의 타입 ;

•예 )– Var MyArray:array [1..10] of char;

0 1 2 3 4 5 6 7 8 9

MyArray

배열 (array)

• 사용법– 변수와 마찬가지로 초기화가 필요함– 각 요소 사용

•예 ) 배열의 2 번째 위치에 10 저장– MyArray[1] := 10;

0 1 2 3 4 5 6 7 8 9

MyArray

배열 (array)

• 다차원 배열– 선언형식

• Array [인덱스 1, 인덱스 2, …] of 요소의 타입 ;• 원하는 차원의 개수만큼 인덱스 지정

– 예 ) 2차원의 예• Var MyArray : array [0..2, 0..2] of integer

MyArray[1,0] := 11;

1,0 1,1

0,0 0,1

MyArray

Set 형• 한 타입의 여러 요소들이 모여 있는 집합• Integer, Boolean, Char, 열거형 등의

자료형만 set 형으로 만들 수 있음

• 역할 : 어떤 값이 특정 set 에 속해 있는지 여부를 확인할 때 사용

Set 형• 선언형식

– Var vowels : set of char; begin

vowels := [‘a’, ‘e’, ‘i’, ‘o’, ‘u’]; …..

• in vowels

레코드 (record)

• 다른 종류의 자료형을 여러 개 포함할 수 있는 구조

• 연관있는 여러 종류의 데이터를 하나의 단위로 묶어서 처리할 경우 유용

• 선언형식– 변수명 : record 변수 1 : integer;

변수 2 : char; …

end;

레코드 (record)

var score:record

hak : integer;name : string;kuk : integer;eng : integer;mat : integer;

end;Begin score.hak := 2001; score.name := ‘ 홍길동’ ;

학번 이름

Score

국어

성적

영어 수학

열거형 (Enumerated)

• 여러 값들을 순서에 따라 미리 열거해서 정의하는 자료형

• 사용할 값들을 미리 정해 놓고 이 값들 중에서 하나 선택

• 선언형식var DayofWeek : (Mon,Tue,Wed,Thu,Fri,Sat,Sun);begin

DayofWeek := Fri;