480 likes | 722 Views
프로젝트 구성. 프로젝트. 델파이 프로그램의 기본 단위 즉 , 델파이로 만드는 프로그램을 구성하는 모든 파일들의 집합 구성파일 확인 View 메뉴 -> Project Manager 메뉴 프로젝트 파일 (DPR 확장자 ) 폼 관련 파일 (FRM 확장자 ) 소스 파일 (PAS 확장자 ). 프로젝트. DPR ---- FRM 파일 | -- PAS 파일. 프로젝트 파일. program Project1; uses Forms,
E N D
프로젝트 • 델파이 프로그램의 기본 단위 • 즉, 델파이로 만드는 프로그램을 구성하는 모든 파일들의 집합 • 구성파일 확인 • 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;interfaceusesWindows, 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 문 • usesWindows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; • 델파이가 만들어 놓은 유닛을 정의하여 이러한 유닛들이 포함되어 있는 변수나 상수, 서브루틴을 프로그램에서 참조할 수 있게하는 역할. => C 언어의 헤더파일과 같은 역할을 함
TYPE 문 • typeTForm1 = class(TForm)Label1: TLabel;Button1: TButton;Edit1: TEdit;procedure Button1Click(Sender: TObject);private{ Private declarations }public{ Public declarations }end; • 클래스를 선언할 수 있음, 이벤트 핸들러 선언 부분 • 폼에 객체를 배치하면 이 부분에 객체에 대한 사용 컴포넌트가 추가됨=> 대문자 T로 시작하는 글자는 델파이가 미리 만들어 놓은 클래스를 의미하거나 유닛 객체를 의미
VAR 문 • varForm1: 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자를 넘을 수 없음 • 영문자 알파벳, 숫자, 밑줄문자 “_”로 구성 • 대소문자 구별 안함 • 이름의 첫번째 문자는 반드시 영문자 알파벳 • 예약어들은 변수 이름이 될 수 없음
var x,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; MyArray 0 1 2 3 4 5 6 7 8 9
배열(array) • 사용법 • 변수와 마찬가지로 초기화가 필요함 • 각 요소 사용 • 예) 배열의 2번째 위치에 10 저장 • MyArray[1] := 10; MyArray 0 1 2 3 4 5 6 7 8 9
배열(array) • 다차원 배열 • 선언형식 • Array [인덱스1, 인덱스2, …] of 요소의 타입; • 원하는 차원의 개수만큼 인덱스 지정 • 예) 2차원의 예 • Var MyArray : array [0..2, 0..2] of integer MyArray[1,0] := 11; MyArray 0,0 0,1 1,0 1,1
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) Score var score:record hak : integer; name : string; kuk : integer; eng : integer; mat : integer; end; Begin score.hak := 2001; score.name := ‘홍길동’; 학번 이름 성적 국어 영어 수학
열거형(Enumerated) • 여러 값들을 순서에 따라 미리 열거해서 정의하는 자료형 • 사용할 값들을 미리 정해 놓고 이 값들 중에서 하나 선택 • 선언형식 var DayofWeek : (Mon,Tue,Wed,Thu,Fri,Sat,Sun); begin DayofWeek := Fri;