프로젝트 구성
프로젝트 델파이 프로그램의 기본 단위 즉, 델파이로 만드는 프로그램을 구성하 는 모든 파일들의 집합 구성파일 확인 –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 uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Label1: TLabel; Button1: TButton; Edit1: TEdit; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: 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 자를 넘을 수 없음 – 영문자 알파벳, 숫자, 밑줄문자 “ _ ” 로 구성 – 대소문자 구별 안함 – 이름의 첫번째 문자는 반드시 영문자 알파 벳 – 예약어들은 변수 이름이 될 수 없음
변수 선언 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 ( ~ 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 ( ~ ( 약 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
배열 (array) 사용법 – 변수와 마찬가지로 초기화가 필요함 – 각 요소 사용 예 ) 배열의 2 번째 위치에 10 저장 –MyArray[1] := 10; MyArray
배열 (array) 다차원 배열 – 선언형식 Array [ 인덱스 1, 인덱스 2, … ] of 요소의 타입 ; 원하는 차원의 개수만큼 인덱스 지정 – 예 ) 2 차원의 예 Var MyArray : array [0..2, 0..2] of integer MyArray[1,0] := 11; 1,01,1 0,00,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;