전화기 

Pascal 언어에서는 어떤 데이터 유형이 사용됩니까? Pascal의 서수 데이터 유형. 열거 데이터 유형

순서 유형에는 정수, 논리, 문자, 열거 및 범위 유형이 포함됩니다(그림 4.1 참조). ORD(X) 함수는 이들 중 어느 것에도 적용 가능하며 표현식 X 값의 서수를 반환합니다. 정수 유형의 경우 ORD(X) 함수는 X 자체의 값을 반환합니다. ORD(X) = X는 임의의 쉘 유형에 속합니다. ORD(X)를 부울, 문자 및 열거 유형에 적용하면 0~1(부울), 0~155(문자), 0~65535(열거) 범위의 양의 정수가 생성됩니다. 범위 유형은 기본 순서 유형의 모든 속성을 유지하므로 ORD(X) 함수를 적용한 결과는 해당 유형의 속성에 따라 달라집니다.

순서형에도 함수를 적용할 수 있습니다.

PRED (X) - 서수 유형의 이전 값(서수 ORD(X) - 1에 해당하는 값)을 반환합니다. 즉,

ORD(PRED(X)) = ORD(X) - 1;

SUCC (X) - 서수 ORD(X) +1과 일치하는 다음 서수 값을 반환합니다. 즉,

ORD(SUCC(X)) = ORD(X) + 1.

예를 들어, 프로그램이 변수를 정의하는 경우

그러면 PRED(C) 함수는 "4" 값을 반환하고 SUCC(C) 함수는 "6" 값을 반환합니다.

순서형을 왼쪽에서 오른쪽으로 증가하고 숫자 축의 특정 세그먼트를 차지하는 정렬된 값 집합으로 상상한다면 함수 PRED(X)는 왼쪽에 대해 정의되지 않고 SUCC(X)는 오른쪽에 대해 정의되지 않습니다. 이 세그먼트의 끝입니다.

전체 유형. 정수 유형의 가능한 값 범위는 내부 표현에 따라 다르며 1바이트, 2바이트 또는 4바이트일 수 있습니다. 테이블에 4.1은 정수 유형의 이름, 내부 표현의 길이(바이트) 및 가능한 값의 범위를 보여줍니다.

표 4.1

정수 매개변수가 있는 프로시저와 함수를 사용할 때는 유형의 "중첩"을 따라야 합니다. WORD를 사용할 수 있는 곳마다 BYTE를 사용할 수 있으며(그 반대는 아님), LONGINT는 INTEGER를 "포함"하고, 이는 다시 SHORTINT를 포함합니다.

정수형에 적용할 수 있는 프로시저와 함수 목록은 표 4.2에 나와 있습니다. 편지 b, s, w, 나, l BYTE, SHORTINT, WORD, INTEGER 및 LONGINT 유형의 표현식이 각각 지정됩니다. x는 이러한 유형 중 하나의 표현식입니다. 편지 vb, 대, vw, vi, vl, vx해당 유형의 변수를 나타냅니다. 선택적 매개변수는 대괄호 안에 표시됩니다.

표 4.2

모든 유형에 적용되는 표준 절차 및 기능
항소 결과 유형 행동
복근(x) 엑스 모듈 x를 반환합니다.
문자(b) 해당 코드로 문자를 반환합니다.
12월(vx[, i]) - vx의 값을 i만큼 감소시키고, i가 없을 경우 - 1만큼 감소합니다.
Inc(vx[, i]) - vx의 값을 i만큼 증가시키고, i가 없으면 1만큼 증가합니다.
안녕하세요(나) 바이트 인수의 상위 바이트를 반환합니다.
안녕하세요(w) 같은 같은
로(i) " 인수의 하위 바이트를 반환합니다.
낮은) " 같은
홀수(l) 부울 인수가 홀수이면 True를 반환합니다.
무작위 (w) 매개변수와 동일 0...(w-l) 범위에 균일하게 분포된 의사 난수를 반환합니다.
SGR(x) 엑스 인수의 제곱을 반환합니다.
스왑(i) 정수 단어의 바이트를 교환합니다.
스왑(w) 단어

정수로 연산할 때 결과의 유형은 피연산자의 유형에 해당하고, 피연산자가 서로 다른 정수 유형인 경우 최대 거듭제곱(값의 최대 범위)을 갖는 피연산자의 유형에 해당합니다. 결과의 오버플로 가능성은 어떤 방식으로도 제어되지 않으며, 이로 인해 오해가 발생할 수 있습니다. 예를 들면 다음과 같습니다.

a:= 32767; (가능한 최대 INTEGER 값)

x:= a + 2; (이 표현식을 평가하는 동안 오버플로됨 !}

y:= LongInt(a)+2; (변수를 더 강력한 유형으로 캐스팅한 후 오버플로가 발생하지 않음)

쓰기Ln(x:10:0, y:10:0)

프로그램을 실행한 결과 우리는

부울 유형. 부울 값은 미리 선언된 상수 FALSE 또는 TRUE 중 하나일 수 있습니다. 다음 규칙이 적용됩니다.

거짓< True;

succ(거짓)= 참;

pred(참) = 거짓.

부울 유형은 순서 유형이므로 셀 수 있는 유형 연산자에 사용할 수 있습니다. 예를 들면 다음과 같습니다.

for 1:= False to True do ....

문자 유형.캐릭터 타입의 값은 모든 PC 캐릭터의 집합입니다. 각 문자에는 0~255 범위의 정수가 할당됩니다. 이 숫자는 ORD 함수에 의해 반환되는 기호의 내부 표현을 위한 코드 역할을 합니다.

인코딩에는 ASCII 코드가 사용됩니다( 정보 교환을 위한 미국 표준 코드- 정보 교환을 위한 미국 표준 코드). 이는 7비트 코드입니다. 0에서 127까지의 범위에서 128개의 문자만 인코딩할 수 있습니다. 동시에 터보 파스칼에서 문자를 저장하기 위해 할당된 8비트 바이트에서는 0에서 255까지의 범위에서 두 배 많은 문자를 인코딩할 수 있습니다. 코드 0...127이 포함된 PC 문자의 전반부는 ASCII 표준에 해당합니다(표 4.3). 코드 128...255가 있는 문자의 후반부는 표준의 엄격한 프레임워크에 의해 제한되지 않으며 다양한 유형의 PC에서 변경될 수 있습니다(부록 2에는 이러한 문자에 대한 몇 가지 일반적인 인코딩 옵션이 나와 있습니다).

표 4.3

ASCII 표준에 따른 문자 인코딩
암호 상징 암호 상징 암호 상징 암호 상징
B.L. ® "
! 에이 에이
STX " 안에
ETX # 와 함께 와 함께
EOT $
ENQ % 이자형 이자형
묻다 & 에프 에프
" G g
학사 ( 시간 시간
NT )
LF * 제이 j
버몬트 + 케이 케이
FF ,
CR -
그래서 . N N
시. / 에 대한
DC1
DC2 아르 자형 아르 자형
DC3 에스 에스
DC4
N.A.K.
싱크 다섯 다섯
ETB
할 수 있다 엑스 엑스
여자 이름.
보결 :
ESC / [ {
FS < \
G.S. = ] }
RS > ^ ~
우리를 ? - N

코드 0~31이 있는 문자는 서비스 코드를 나타냅니다. 이러한 코드가 프로그램의 문자 텍스트에 사용되면 공백으로 간주됩니다. I/O 작업에 사용되는 경우 다음과 같은 독립적인 의미를 가질 수 있습니다.

상징 암호 의미
부르다; 이 기호의 표시는 다음과 같습니다. 소리 신호
NT 수평표; 화면에 표시되면 8+1의 배수(9, 17, 25 등) 위치로 커서를 이동합니다.
LF 줄 바꿈; 화면에 표시할 때 이후의 모든 문자는 같은 위치부터 출력되지만 다음 줄에 출력됩니다.
버몬트 수직 탭; 화면에 표시되면 특수 문자로 대체됩니다.
FF 페이지 실행; 프린터로 출력할 때는 페이지를 형성하고, 화면으로 출력할 때는 특수 문자로 대체됩니다.
CR 운송 반환; Enter 키를 눌러 입력(READ 또는 READLN을 사용하여 입력한 경우 "Enter" 명령을 의미하며 입력 버퍼에 배치되지 않으며 출력 시 "현재 줄의 시작 부분부터 계속 출력" 명령을 의미함)
보결 파일 끝입니다. Ctrl-Z를 눌러 키보드에서 입력합니다. 출력 시 특수 기호로 대체됩니다.
SSC 작업 종료; ESC 키를 눌러 키보드에서 입력합니다. 출력 시 특수 기호로 대체됩니다.

내장 함수뿐만 아니라 관계 연산도 CHAR 유형에 적용 가능합니다: СНR(В) - CHAR 유형의 함수; BYTE 유형의 표현식 B를 문자로 변환하고 해당 값과 함께 반환합니다.

UPCASE(CH) - CHAR 유형 함수; CH가 라틴 소문자이면 대문자를 반환하고, 그렇지 않으면 CH 문자 자체를 반환합니다. 예:

cl:= UpCase("s") ;

c2:= UpCase ("Ф") ;

WriteLn(cl," ",c2)

UPCASE 함수는 키릴 문자를 처리하지 않으므로 이를 실행한 결과는

프로그램이 화면에 표시됩니다

열거형. 열거 유형은 수신할 수 있는 값의 열거로 지정됩니다. 각 값은 일부 식별자에 의해 이름이 지정되며 괄호로 묶인 목록에 위치합니다. 예를 들면 다음과 같습니다.

색상 =(빨간색, 흰색, 파란색);

열거형을 사용하면 프로그램이 더욱 시각적으로 보입니다. 예를 들어, 프로그램이 해당 연도의 월과 관련된 데이터를 사용하는 경우 프로그램의 다음 부분은 다음과 같습니다.

유형월=(1월,2월,3월,4월,5월,6월,7월,8월,9월,10월,11월,12월);

월: 유형월;

if Month = Aug then WriteLn("바다에 가면 좋을 것 같아요!");

아시다시피 그것은 매우 분명할 것입니다. 아아! 터보 파스칼에서는 식별자에 키릴 문자를 사용할 수 없으므로 다음과 같이 작성해야 합니다.

유형월=(1월,2월,3월,5월,6월,7월,8월,9월,10월,11월,12월);

월: 유형월;

if Month = aug then WriteLn("바다에 가면 좋을 것 같아요!");

열거 유형의 값과 이러한 값의 서수 사이의 대응은 열거 순서에 따라 설정됩니다. 목록의 첫 번째 값은 서수 0, 두 번째 값은 -1 등을 받습니다. 열거 유형의 최대 용량은 65536 값이므로 실제로 열거 유형은 전체 WORD 유형의 특정 하위 집합을 정의하고 값이 0, 1 등인 정수 상수 그룹의 압축 선언으로 간주될 수 있습니다.

열거형을 사용하면 해당 변수가 받는 값을 제어할 수 있어 프로그램의 신뢰성이 높아집니다. 예를 들어, 다음과 같은 열거 유형이 제공됩니다.

색상 = (검은색, 빨간색, 흰색);

순서=(하나, 둘, 셋);

일 = (월요일, 화요일, 수요일);

권력과 내부 표현 측면에서 세 가지 유형은 모두 동일합니다.

ord(검은색)=0, ..., ord(흰색)=2,

ord(1)=0, ...ord(3)=2,

ord(월요일)=0, ...ord(수요일)=2.

그러나 변수가 정의된 경우

열:색상; 숫자:서수;

그러면 운영자가 허용됩니다

숫자:= succ(2);

day:= pred(화요일);

하지만 받아들일 수 없다

이미 언급했듯이, 열거형 값과 ORD(X) 함수로 지정된 정수 집합 사이에는 일대일 대응이 있습니다. 터보 파스칼은 역변환도 허용합니다. 정수 표현식의 값이 열거 유형의 power1™을 초과하지 않는 한 WORD 유형의 모든 표현식은 열거 유형의 값으로 변환될 수 있습니다. 이 변환은 열거된 유형의 이름과 함께 자동으로 선언된 함수를 사용하여 수행됩니다(섹션 4.4 참조). 예를 들어 위에서 설명한 형식 선언의 경우 다음 할당은 동일합니다.

열:= 색상(0);

물론 과제도

받아 들일 수 없습니다.

열거형 유형의 변수는 해당 유형을 먼저 선언하지 않고도 선언할 수 있습니다. 예를 들면 다음과 같습니다.

col: (검은색, 흰색, 녹색);

유형 범위. 범위 유형은 기본 유형의 하위 집합으로, 범위 유형을 제외한 모든 순서 유형이 될 수 있습니다. 범위 유형은 기본 유형 내 값의 경계로 정의됩니다.

<мин.знач.>..<макс.знач.>

여기<мин.знач. >- 유형 범위의 최소값

<макс.знач.>- 최대값.

예를 들어:

숫자 = "0".."9";

범위 유형은 TYPE 섹션에 설명할 필요는 없지만 변수를 선언할 때 직접 지정할 수 있습니다. 예를 들면 다음과 같습니다.

Ichr: "A".."Z";.

범위 유형을 결정할 때 다음 규칙을 따라야 합니다.

  • 두 개의 ".." 문자는 하나의 문자로 처리되므로 그 사이에 공백이 허용되지 않습니다.
  • 범위의 왼쪽 테두리는 오른쪽 테두리를 초과해서는 안 됩니다. 범위 유형은 기본 유형의 모든 속성을 상속하지만 전력이 더 낮다는 제한이 있습니다. 특히 변수가 정의된 경우

일 = (월, 화, 우리, 일, 프랑스, ​​사, 수);

WeekEnd = sa .. su;

그러면 ORD(W)는 값 5를 반환하고 PRED(W)는 오류를 발생시킵니다.

터보 파스칼 표준 라이브러리에는 범위 유형 작업을 지원하는 두 가지 기능이 포함되어 있습니다.

HIGH(X) - 변수 X가 속한 범위 유형의 최대값을 반환합니다.

LOW(X) - 범위 유형의 최소값을 반환합니다.

다음 짧은 프로그램은 다음 줄을 인쇄합니다.

WriteLn(낮음(k),"..",높음(k))

정수 세트는 무한하지만 특정 문제를 해결할 때 발생하는 정수를 나타내기 위해 항상 비트 수를 선택할 수 있습니다. 실수 집합은 무한할 뿐만 아니라 연속적이므로 아무리 많은 비트를 사용하더라도 정확한 표현이 없는 숫자를 필연적으로 만나게 됩니다. 부동 소수점 숫자는 실수를 나타내는 한 가지 가능한 방법으로, 허용되는 값의 정밀도와 범위 사이의 절충안입니다.

부동 소수점 숫자는 일반적으로 부호, 지수 및 가수로 구분되는 개별 숫자 집합으로 구성됩니다. 지수와 가수는 부호와 함께 부동 소수점 숫자를 다음과 같이 표현하는 정수입니다.

수학적으로는 다음과 같이 작성됩니다.

(-1) s × M × B E, 여기서 s는 부호, B는 기수, E는 지수, M은 가수입니다.

베이스는 숫자 체계를 결정합니다. 기본 B=2(이진수 표현)를 사용하는 부동 소수점 숫자는 반올림 오류에 가장 강하다는 것이 수학적으로 입증되었습니다. 따라서 실제로는 기본 2만 발생하고, 덜 일반적으로 10도 사용됩니다. 2, 부동 소수점이 있는 숫자의 공식은 다음과 같습니다.

(-1) s×M×2E

가수와 순서는 무엇입니까? 가수실수의 최상위 비트를 나타내는 고정 길이 정수입니다. 가수가 3개의 비트(|M|=3)로 구성되어 있다고 가정해 보겠습니다. 예를 들어 이진 시스템에서 101 2와 같은 숫자 "5"를 생각해보십시오. 최상위 비트는 2 2 =4에 해당하고, 중간 비트(0과 동일)는 2 1 =2, 최하위 비트는 2 0 =1에 해당합니다. 주문하다– 이것은 가장 높은 숫자의 밑수(2)의 거듭제곱입니다. 우리의 경우 E=2입니다. 이러한 숫자는 소위 "과학적" 표준 형식(예: "1.01e+2")으로 작성하는 것이 편리합니다. 가수는 세 개의 부호로 구성되어 있고 순서는 두 개라는 것이 즉시 분명해집니다.

동일한 가수 3비트를 사용하여 분수를 얻고 싶다고 가정해 보겠습니다. E=1이라고 하면 이렇게 할 수 있습니다. 그러면 우리 숫자는 같아질 거야

1.01e+1 = 1×2 1 +0×2 0 +1×2 -1 =2+0.5=2.5

분명히 이런 방식으로 동일한 숫자를 다른 방식으로 표현할 수 있습니다. 가수 |M|=4의 길이를 갖는 예를 생각해 봅시다. 숫자 "2"는 다음과 같이 나타낼 수 있습니다.

2 = 10(이진수) = 1.000e+1 = 0.100e+2 = 0.010e+3.

따라서 이미 최초의 기계에서는 소위 숫자가 표시되었습니다. 정규화된 형태, 가수의 첫 번째 비트는 항상 1과 같다고 가정되었습니다.

이렇게 하면 1비트가 절약되고(암시적 비트는 메모리에 저장할 필요가 없으므로) 숫자가 고유하게 표시됩니다. 이 예에서 "2"는 단일 표현("1.000e+1")을 가지며 가수는 메모리에 "000"으로 저장됩니다. 선행 단위는 암시적으로 암시됩니다. 그러나 정규화된 숫자 표현에서 새로운 문제가 발생합니다. 이 형식에서는 0을 표현하는 것이 불가능합니다.

  • 매개변수 선택 및 솔루션 검색 명령을 사용한 데이터 분석
  • 실험적 심리학 연구 데이터의 분석 및 해석.
  • 소스 데이터 분석. 도시 도로의 기술 표준.
  • 획득한 데이터 분석. 관개 시스템의 요구 사항에 대한 물 공급 특성의 충분 여부에 대한 결정을 내립니다.
  • 통신 회선 장비: 데이터 전송 장비, 단말 장비, 중간 장비.

  • 프로그래밍 기초
    모든 전문가는 한때 찻주전자였습니다. 확실히 당신은 "그런 일을 생각해 내기 위해 생각을 시작하는 방법을 모른다"는 상태에 대해 잘 알고 있습니다. 어디서부터 시작해야 할지 모르는 상황에 직면했을 것입니다. 이 책은 프로그래머가 되고 싶지만 이 길을 어떻게 시작해야 할지 전혀 모르는 사람들을 대상으로 합니다.

    ...

    거의 모든 정수 데이터 유형은 입니다. 이러한 데이터 유형은 특정 범위 내의 정수를 나타냅니다. 정수 유형의 정확한 이름과 값 범위는 특정 프로그래밍 언어, 컴파일러 및 컴파일 모드에 따라 다릅니다. 이에 대한 자세한 내용은 컴파일러 설명서에서 확인할 수 있습니다. 예를 들어 데이터 유형정수 예를 들어 데이터 유형델파이에서는 범위가 -2147483648…2147483647인 반면, 터보 파스칼에서는 데이터 유형이 예를 들어 데이터 유형-35768~32767 범위의 숫자를 나타냅니다. 프리 파스칼에서는 유형의 값 범위

    선택한 모드에 따라 결정됩니다.

    Lazarus는 Free Pascal 컴파일러를 사용하기 때문에 Free Pascal과 관련된 데이터 유형에 관해 언급된 모든 내용은 Lazarus에게도 적용됩니다.

    따라서 프리파스칼의 정수 데이터 유형은 표 13.1에 나열되어 있습니다.

    표 13.1. 프리 파스칼 정수 데이터 유형(라자루스). 유형 크기, 바이트
    값의 범위 1 0…255
    바이트 1 -128…127
    Shortint 2 -35768…32767
    스몰린트 2 0…65535
    예를 들어 데이터 유형 단어 2 또는 4
    컴파일 모드에 따라 다름 4 0…4294967295
    추기경 4 -2147483648…2147483647
    롱린트 4 0...4294967295
    장문 8 -9223372036854775808...9223372036854775807
    Int64 8 0...18446744073709551615

    QWord
    메모 장문프리 파스칼의 유형 Int64그렇지 않다! 이는 예를 들어 루프의 인덱스 변수에 사용할 수 없음을 의미합니다. 하지만 앞으로는 따로 설명하지 않고 프리파스칼의 모든 정수형을 한 곳에 모아두기 위해 여기에 제시했습니다. 일부 단어를 이해하지 못하더라도 놀라지 마십시오. 때가 되면 모든 것에 대해 더 자세히 말씀드리겠습니다.

    이제 테이블에 대한 몇 가지 설명을 하겠습니다.

    칼럼에서 유형데이터 유형 식별자가 제공됩니다(특정 데이터가 어떤 유형에 속하는지 컴파일러에 나타내는 키워드). 다음 강의에서는 이러한 식별자를 사용하는 방법을 배우게 됩니다.

    칼럼에서 크기데이터 유형이 컴퓨터 메모리에서 차지하는 크기를 나타냅니다. 예를 들어 양의 정수를 표현할 수 있습니다. 다른 유형: 값의 범위, 스몰린트, 컴파일 모드에 따라 다름등. 그러나 다음과 같은 숫자는 컴파일 모드에 따라 다름메모리에서 4바이트를 차지하지만 다음과 같은 숫자는 값의 범위– 단 1바이트. 따라서 작업 중인 숫자가 255보다 큰 값을 가지지 않는다는 것을 확실히 알고 있다면 이를 유형으로 정의하는 것이 좋습니다. 값의 범위, 이렇게 하면 컴퓨터 메모리 공간이 절약됩니다. 여기에서 모든 것이 그렇게 단순하지는 않지만 메모리 및 기타 컴퓨터 리소스 배포의 뉘앙스는 범위를 벗어납니다.

    칼럼에서 범위데이터 유형이 작동하는 값의 범위를 지정합니다. 예를 들어 다음과 같은 숫자는 값의 범위 0에서 255까지의 값을 가질 수 있습니다.

    이제 연습을 해보자. 모든 정수 데이터 유형의 값 범위를 표시하는 프로그램을 작성해 보겠습니다. 이 프로그램의 소스 코드는 아래와 같습니다.

    목록 13.1. 정수의 범위를 표시하는 프로그램입니다.프로그램 td; ($mode objfpc)($H+)는 ($IFDEF UNIX)($IFDEF UseCThreads) cthreads, ($ENDIF)($ENDIF) 클래스를 사용합니다(이 뒤에 유닛을 추가할 수 있습니다). start Writeln("바이트: ", Low(Byte), "..", High(Byte));

    Writeln("짧은 색조: ", Low(Shortint), "..", High(Shortint)); Writeln("Smallint: ", Low(Smallint), "..", High(Smallint)); Writeln("단어: ", 낮음(단어), "..", 높음(단어)); Writeln("정수: ", Low(정수), "..", High(정수)); Writeln("기본값: ", Low(기본값), "..", High(기본값)); Writeln("Longint: ", Low(Longint), "..", High(Longint));프리 파스칼의 유형 Writeln("장어: ", Low(장어), "..", High(장어)); Writeln("Int64: ", Low(Int64), "..", High(Int64));

    마지막으로 프로그램에서 정수 데이터가 어떻게 작성되는지 알려드리겠습니다. 예, 다른 곳과 마찬가지로 따옴표나 추가 기호 없이 숫자만 적으십시오. 예를 들어, 다음과 같습니다

    10
    178
    35278

    사실, 이것은 십진수 체계의 숫자에 적용됩니다. 확실히 당신은 이미 다른 시스템이 있다는 것을 알고 있습니다. 가장 널리 사용되는 숫자 체계는 2진수, 10진수, 16진수입니다.

    프리 파스칼은 네 가지 정수 형식을 지원합니다:

    1. 십진법. 10과 같은 숫자일 뿐입니다.
    2. 16진수 표기법. $로 시작하는 숫자. 예를 들어, 16진수 $10은 10진수 16과 같습니다.
    3. 8진수 표기법. &가 앞에 붙은 숫자입니다. 예를 들어, 8진수 &10은 10진수 8과 같습니다.
    4. 이진 표기법. %로 시작하는 숫자. 예를 들어, 이진수 %10은 십진수 2와 같습니다.

    숙제:

    정수 값의 범위를 표시하는 프로그램을 만듭니다(목록 13.1). 프로그램을 컴파일하고 실행해 보세요. 이 값이 표 13.1에 표시된 값과 일치하는지 확인하십시오.

    프로그램의 소스 코드에서 컴파일 모드를 설정하는 줄을 찾으세요.

    ($mode objfpc)($H+)

    이 줄에서는 단어 대신 objfpc단어를 쓰다 tp. 즉, 마지막 줄은 다음과 같아야 합니다.

    ($모드 tp)($H+)

    프로그램을 실행하세요. 유형 값의 범위를 살펴보세요. 예를 들어 데이터 유형. 결론을 도출합니다.

    프로그래머처럼, 즉 논리적으로 생각하는 법을 배우십시오. 지금처럼 은퇴할 때까지 당신을 위해 모든 것을 씹어줄 사람은 아무도 없습니다. 스스로 생각하는 데 익숙해져야 합니다. 그렇지 않으면 "원숭이 학습 원리"에 빠져들게 되고 훌륭한 프로그래머가 될 가능성은 0에 가까워질 것입니다. 당신이 "벼락치기" 수준에 빠지지 않도록 돕기 위해 나는 정기적으로 당신의 학습에 공백을 남겨서 당신이 스스로 알아내도록 노력할 것입니다.

    스스로 알아내면 훨씬 나아요 잘못된 결정, 항상 다른 사람의 올바른 해결책을 사용하고 어리석게 복사하는 것이 아니라 스스로 실수를 찾아 수정하게 됩니다.

    연방교육청

    추상적인

    "파스칼의 데이터 유형"

    1. 데이터 유형

    모든 데이터, 즉 상수, 변수, 속성, 함수 값 또는 표현식은 해당 유형으로 특징지어집니다. 유형은 객체가 가질 수 있는 유효한 값 집합과 객체에 적용될 수 있는 유효한 작업 집합을 정의합니다. 또한 유형은 PC 메모리에 있는 데이터의 내부 표현 형식도 결정합니다.

    일반적으로 오브젝트 파스칼 언어는 데이터 유형의 분기 구조가 특징입니다(그림 1.1). 언어는 새로운 유형을 생성하는 메커니즘을 제공하므로 프로그램에 사용되는 총 유형 수는 원하는 만큼 커질 수 있습니다.

    프로그램에서 처리되는 데이터는 변수, 상수, 리터럴로 구분됩니다.

    상수 상수 선언 부분에 값이 설정되어 프로그램 실행 중에 변경되지 않는 데이터를 나타냅니다.

    변수 변수 선언 부분에서 선언되지만 상수와는 달리 프로그램 실행 중에 값을 받고 이 값은 변경될 수 있습니다. 상수와 변수는 이름으로 참조할 수 있습니다.

    오자 식별자가 없으며 프로그램 텍스트의 값으로 직접 표시됩니다.

    표 13.1. 프리 파스칼 정수 데이터 유형(라자루스).데이터 요소가 취할 수 있는 값 세트와 이에 대해 허용되는 작업 세트를 정의합니다.

    이 장과 후속 4개 장에서는 각 유형에 대한 자세한 설명을 제공합니다.

    1.1 단순 유형

    단순 유형에는 순서형, 실수형, 날짜/시간 유형이 포함됩니다.

    서수 유형각각은 유한한 수의 가능한 값을 갖는다는 점에서 다릅니다. 이러한 값은 특정 방식(따라서 유형 이름)으로 정렬될 수 있으므로 각 값은 값의 서수인 정수와 연결될 수 있습니다.

    실제 유형엄밀히 말하면 실수의 내부 표현 형식에 따라 결정되는 유한한 수의 값도 있습니다. 그러나 실수 유형의 가능한 값의 수가 너무 많아서 각각의 정수(그 숫자)를 연관시키는 것은 불가능합니다.

    날짜-시간 유형날짜와 시간을 저장하도록 설계되었습니다. 실제로 이러한 목적으로 실제 형식을 사용합니다.

    1.1.1 서수 유형

    순서 유형에는 정수, 논리, 문자, 열거 및 범위 유형이 포함됩니다(그림 1.1 참조). Ord(x) 함수는 이들 중 어느 것에도 적용될 수 있으며, 이는 표현식 X의 서수 값을 반환합니다.


    쌀. 1.1 - 데이터 유형 구조

    을 위한 전체 ord(x) 함수는 x 자체의 값을 반환합니다. 즉, x가 임의의 유형에 속하는 경우 Ord(X) = x입니다. 전체유형. Ord(x)를 다음에 적용 논리적 , 상징적이고 열거 가능한유형은 0에서 1 사이의 양의 정수를 제공합니다( 부울 유형), 0~255( 상징적인), 0~65535( 열거할 수 있는). 유형 범위기본 순서 유형의 모든 속성을 유지하므로 ord(x) 함수를 적용한 결과는 이 유형의 속성에 따라 달라집니다.

    순서형에도 함수를 적용할 수 있습니다.

    예측(x)- 서수 유형의 이전 값(서수 ord(x) -1에 해당하는 값, 즉 ord(pred(x)) = ord(x) - 1을 반환합니다.

    성공(x)- 서수 ord(x) +1에 해당하는 서수 유형의 다음 값을 반환합니다. 즉, ord(Succ(x)) = ord(x) + 1입니다.

    예를 들어, 프로그램이 변수를 정의하는 경우

    그러면 PRED(c) 함수는 문자 "4"를 반환하고 SUCC(c) 함수는 문자 "6"을 반환합니다.

    순서형을 왼쪽에서 오른쪽으로 증가하고 숫자 축의 특정 세그먼트를 차지하는 순서화된 값 집합으로 상상한다면 함수 pred(x)는 왼쪽 끝에서 정의되지 않으며 succ(x)는 다음과 같습니다. 이 세그먼트의 오른쪽 끝에는 정의되지 않았습니다.

    정수 유형 . 정수 유형의 가능한 값 범위는 내부 표현에 따라 다르며 1, 2, 4 또는 8바이트일 수 있습니다. 테이블에 1.1은 정수 유형의 이름, 내부 표현의 길이(바이트) 및 가능한 값의 범위를 보여줍니다.

    표 1.1 - 정수 유형

    이름 길이, 바이트 크기, 바이트
    컴파일 모드에 따라 다름 4 0. .. 2 147 483 647
    값의 범위 1 0...255
    바이트 1 -128...+127
    Shortint 2 -32 768...+32 767
    스몰린트 2 0...65 535
    예를 들어 데이터 유형 4
    추기경 4 -2 147 483 648...+2 147 483 647
    장문 8 -9*1018...+9*1018
    롱워드 4 0. . .4 294 967 295

    유형 롱워드그리고 장문버전 4에서 처음 소개되었으며 유형은 Shortint그리고 컴파일 모드에 따라 다름 Delphi 1에서는 사용할 수 없습니다. 정수이 버전의 경우 2바이트가 필요하며 값 범위는 -32768에서 +32767입니다. 즉, Shortint .

    정수 매개변수가 있는 프로시저와 함수를 사용할 때는 유형의 "중첩"을 따라야 합니다. 어디서든 사용할 수 있다 단어, 사용이 허용됨 값의 범위(그러나 그 반대는 아님), 추기경"들어가다" Shortint, 여기에는 다음이 포함됩니다. 바이트 .

    정수형에 적용할 수 있는 프로시저와 함수 목록은 표에 나와 있습니다. 1.2. 문자 b, s, w, i, l은 다음 유형의 표현을 나타냅니다. 값의 범위 , Shortint, Word, Integer 및 Longint ,

    x는 이러한 유형 중 하나의 표현입니다. 문자 vb, vs, vw, vi, vl, vx는 해당 유형의 변수를 나타냅니다. 선택적 매개변수는 대괄호 안에 표시됩니다.

    표 1.2 - 전체 유형에 적용되는 표준 절차 및 기능

    항소 결과 유형 행동
    복근(x) 엑스 모듈 x를 반환합니다.
    문자(b) 해당 코드로 문자를 반환합니다.
    12월(vx[,i]) - vx의 값을 i만큼 감소시키고, i가 없을 경우 - 1만큼 감소합니다.
    Inc(vx[,i]) - vx의 값을 i만큼 증가시키고, i가 없으면 1만큼 증가합니다.
    안녕하세요(w) 값의 범위 인수의 가장 높은 활을 반환합니다.
    안녕(나) 같은 세 번째 바이트를 반환합니다.
    로(i) 인수의 하위 바이트를 반환합니다.
    낮은) 같은
    홀수(l) 부울 인수가 홀수이면 True를 반환합니다.
    랜덤(w) 매개변수와 동일 0...(w-l) 범위에 균일하게 분포된 의사 난수를 반환합니다.
    평방(x) 엑스 인수의 제곱을 반환합니다.
    스왑(i) 예를 들어 데이터 유형 단어의 바이트를 교환합니다.
    스왑(w) 스몰린트 같은

    정수로 연산할 때 결과 유형은 피연산자의 유형에 해당하며, 피연산자가 서로 다른 정수 유형인 경우 두 피연산자를 모두 포함하는 일반 유형입니다. 예를 들어, 짧은그리고 단어일반적인 유형은 다음과 같습니다. 정수. 기본 설정에서 델파이 컴파일러는 값이 범위를 벗어났는지 확인하는 코드를 생성하지 않으므로 오해가 발생할 수 있습니다.

    부울 유형 . 논리 유형에는 다음이 포함됩니다. 부울, ByteBool, 부울, wordBool그리고 롱불. 표준 파스칼에서는 유형만 정의됩니다. 부울, Windows와의 호환성을 위해 다른 논리 유형이 오브젝트 파스칼에 도입되었습니다. 부울그리고 바이트불각각은 1바이트를 차지하며, 부울그리고 워드불- 각각 2바이트, 롱불- 4바이트. 부울 값은 미리 선언된 상수 False 또는 True 중 하나일 수 있습니다.

    불리언 타입은 순서형(ordinal type)이므로 셀 수 있는 타입의 루프문에서 사용할 수 있습니다. 델파이 32에서는 부울의미

    Ord(True) = +1, 다른 유형의 경우( 부울, 워드부울등.)

    Ord(True) = -1이므로 이러한 종류의 연산자는 주의해서 사용해야 합니다! 예를 들어, Delphi 6 버전의 경우 다음 루프의 실행 가능한 showMessage(" --- ") 문 ~을 위한절대 실행되지 않습니다:

    for L:= False to True do

    ShowMessage("--);

    이전 예의 루프 매개변수 유형 L을 다음으로 바꾸면 부울, 루프가 실행되고 메시지가 화면에 두 번 나타납니다. [Delphi 버전 1 및 2의 경우 모든 부울 유형에 대해 ord(True) =+1입니다.]

    문자 유형 . 캐릭터 타입의 값은 모든 PC 캐릭터의 집합입니다. 각 문자에는 0~255 범위의 정수가 할당됩니다. 이 숫자는 기호의 내부 표현을 위한 코드 역할을 하며 ord 함수에 의해 반환됩니다.

    Windows에서의 인코딩에는 ANSI 코드가 사용됩니다(이 코드를 제안한 미국 표준화 기관인 American National Standard Institute의 이름을 따서 명명). 코드가 0...127인 PC 문자의 전반부는 표 1.3에 해당합니다. 코드가 128...255인 문자의 후반부는 글꼴에 따라 다릅니다. 표준 Windows 글꼴 Arial Cyr, Courier New Cyr 및 Times New Roman은 마지막 64개 코드(192~256)를 사용하여 키릴 문자(“ё” 및 “Ё” 문자 제외): “A”... “Z”를 나타냅니다. 인코딩된 값은 192..223, "a"... "i" - 224...255입니다. 기호 "Ё"와 "е"에는 각각 코드 168과 184가 있습니다.

    표 1.3 - ANSI 표준에 따른 문자 인코딩

    암호 상징 암호. 상징 암호. 상징 암호 상징
    0 32 B.L. 64 @ 96 "
    1 33 ! 65 에이 97 에이
    2 STX 34 66 안에 98
    3 ETX 35 # 67 와 함께 99 와 함께
    4 EOT 36 $ 68 100
    5 ENQ 37 % 69 이자형 101 이자형
    6 ACK 38 & 70 에프 102 에프
    7 39 " 71 G 103
    8" 학사 40 ( 72 N 104 시간
    9 HT 41 ) 73 105
    10 LF 42 * 74 제이 106 j
    11 버몬트 43 + 75 에게 107 케이
    12 FF 44 에프 76 108 1
    13 CR 45 - 77 109
    14 그래서 46 78 N 110 N
    15 시. 47 / 79 0 111 영형
    16 48 0 80 아르 자형 112
    17 DC1 49 1 81 113
    18 DC2 50 2 82 아르 자형 114 아르 자형
    19 DC3 51 3 83 에스 115 에스
    20 DC 4 52 4 84 116
    21 N.A.K. 53 5 85 117
    22 싱크 54 6 86 다섯 118 다섯
    23 ETB 55 7 87 119
    24 할 수 있다 56 8 88 엑스 120 엑스
    25 여자 이름. 57 9 89 와이 121
    26 보결 58 : 90 .122
    27 ESC 59 ; 91 123 {
    28 FS 60 < 92 \ 124 1
    29 G.S. 61 = 93 ] 125 }
    30 RS 62 > 94 126 ~
    31 우리를 63 에프 95 127 아르 자형

    코드 0~31이 있는 문자는 서비스 코드를 나타냅니다. 이러한 코드가 프로그램의 문자 텍스트에 사용되면 공백으로 간주됩니다.

    데이터의 개념은 프로그래밍과 일반적으로 컴퓨터 과학의 핵심 개념 중 하나입니다. 대략적으로 말하면, 컴퓨터 과학에서 데이터는 일정 기간 동안 저장, 처리 또는 전송되는 상태에 있는 정보입니다. 튜링 기계에서 정보에는 유형이 있으며 이는 정보 유형에 따라 달라집니다.

    파스칼의 데이터 유형은 변수, 상수, 표현식 및 함수의 가능한 값을 정의합니다. 내장되어 있으며 사용자 정의되어 있습니다. 기본 제공 유형은 처음에 프로그래밍 언어에 존재하며 사용자 정의 유형은 프로그래머가 만듭니다.

    표현 및 처리 방법에 따라 데이터 유형은 다음과 같습니다.

    • 단순한
    • 구조화된
    • 포인터
    • 사물
    • 절차

    이 기사에서는 가장 단순한 데이터 유형만 고려할 것입니다. 훈련의 초기 단계에서는 정수 또는 문자열 변수가 없는 것보다 파일 및 레코드 없이 프로그램을 수행하는 것이 더 쉬울 것이기 때문입니다.

    정수형

    여기에는 값 범위, 이를 저장하기 위해 할당된 바이트 수 및 유형이 선언되는 단어가 다른 여러 정수 유형이 포함됩니다.

    표 13.1. 프리 파스칼 정수 데이터 유형(라자루스). 범위 크기(바이트)
    짧은 -128…127 1
    정수 -32 768…32 767 2
    롱린트 -2 147 483 648…2 147 483 647 4
    바이트 0…255 1
    단어 0…65 535 2

    Var 섹션에서 정수 변수를 선언할 수 있습니다. 예를 들면 다음과 같습니다.

    실수 유형이 필요한 나누기(/)를 제외하고 이 범주의 변수에 대해 모든 산술 및 논리 연산을 수행할 수 있습니다. 일부 표준 기능 및 절차도 적용될 수 있습니다.

    실제 유형

    Pascal에는 다음과 같은 실제 데이터 유형이 있습니다.

    표 13.1. 프리 파스칼 정수 데이터 유형(라자루스). 범위 메모리, 바이트 자릿수
    진짜 2.9e-39 … 1.7e38 6 11-12
    하나의 1.5e-45 … 3.4e38 4 7-8
    더블 5.0e-324…1.7e308 8 15-16
    펼친 3.4e-4932 … 1.1e493 10 19-20
    광고 -9.2e63…(9.2e63)-1 8 19-20

    정수보다 더 많은 작업과 기능을 수행할 수 있습니다. 예를 들어, 다음 함수는 실제 결과를 반환합니다.

    죄(x) – 사인;

    cos(x) – 코사인;

    arctan(x) - 아크탄젠트;

    ln(x) – 자연 로그;

    sqrt(x) – 제곱근;

    exp(x) – 지수;

    부울 유형

    부울 데이터 유형의 변수는 true와 false라는 두 가지 값만 사용할 수 있습니다. 여기서 true는 값 1에 해당하고 false는 0에 해당합니다. 다음과 같이 부울 변수를 선언할 수 있습니다.

    not, and, or, xor 유형의 데이터에 대해 비교 및 ​​논리 연산을 수행할 수 있습니다.

    문자 유형

    문자 데이터 유형은 특정 컴퓨터에서 사용되는 문자 모음입니다. 이 유형의 변수는 이러한 문자 중 하나의 값을 취하고 컴퓨터 메모리에서 1바이트를 차지합니다. 단어 이 유형의 값을 정의합니다. 문자 변수(또는 상수)를 작성하는 방법에는 여러 가지가 있습니다.

    1. 아포스트로피로 묶인 단일 문자: 'W', 'V', 'p';
    2. 문자 코드를 지정합니다. 값은 0~255 범위에 있어야 합니다.
    3. ^K 구성을 사용합니다. 여기서 K는 제어 문자 코드입니다. K 값은 해당 제어 문자 코드보다 64 커야 합니다.

    관계 연산 및 다음 기능은 문자 데이터 유형의 값에 적용 가능합니다.

    성공(x)- 다음 문자를 반환합니다.

    예측(x)- 이전 문자를 반환합니다.

    오드(x)- 문자 코드의 값을 반환합니다.

    문자(x)- 코드로 기호 값을 반환합니다.

    업케이스(x)- 'a'..'z' 간격의 문자를 대문자로 변환합니다.

    문자 유형을 효과적으로 사용하려면 .

    문자열 유형

    파스칼의 문자열은 아포스트로피로 묶인 일련의 문자이며 다음 단어로 표시됩니다. . 문자 수(행 길이)는 255자를 초과할 수 없습니다. 행 길이를 지정하지 않으면 자동으로 255자로 결정됩니다. 문자열 변수 선언의 일반적인 형식은 다음과 같습니다.

    바르<имя_переменной>:끈[<длина строки>];

    한 줄의 각 문자에는 고유한 색인(번호)이 있습니다. 첫 번째 바이트의 인덱스는 0이지만 첫 번째 문자가 아닌 전체 문자열의 길이를 저장합니다. 즉, 이 유형의 변수는 해당 변수 수보다 1바이트 더 많이 차지합니다. 첫 번째 문자의 번호는 1입니다. 예를 들어 문자열 S='stroka'가 있으면 S=s;입니다. 다음 단원 중 하나에서는 문자열 데이터 유형에 대해 더 자세히 설명합니다.

    열거 데이터 유형

    열거 데이터 유형은 제한된 수의 식별자를 나타냅니다. 이러한 식별자는 괄호로 묶이고 쉼표로 구분됩니다.

    유형 요일=(월요일, 화요일, 수요일, 목요일, 금요일, 토요일, 일요일);

    변수 A는 Type 섹션에 지정된 값만 사용할 수 있습니다. Var 섹션에서 열거 유형의 변수를 선언할 수도 있습니다.

    변 A: (월요일, 화요일);

    에게 이 유형관계 연산이 가능하며 월요일이 미리 결정되어 있습니다.

    간격 데이터 유형

    값의 범위를 지정해야 하는 경우 이러한 상황에서는 간격 데이터 유형이 사용됩니다. 선언에 사용된 구성은 다음과 같습니다. m..n, 어디 는 최소(초기) 값이고, N– 최대(최종) 여기서 m과 n은 정수, 문자, 열거형 또는 부울 유형일 수 있는 상수입니다. 간격 유형의 값은 유형 섹션과 변수 설명 섹션 모두에서 설명할 수 있습니다.

    일반 보기:

    유형<имя_типа> = <мин. значение>..<макс. значение>;

    변수를 설명할 때는 해당 유형을 표시해야 합니다. 변수의 유형은 취할 수 있는 값 세트와 이에 대해 수행할 수 있는 조치를 설명합니다. 유형 선언은 유형을 나타내는 식별자를 지정합니다.

    단순형은 표준형(순수형)과 열거형(제한형)으로 구분됩니다.

    표준형

    터보 파스칼에는 정수, 실수, 부울 및 문자의 네 가지 표준 유형이 내장되어 있습니다.

    정수형(정수)

    터보 파스칼에는 shortint, 정수, longint, 바이트 및 단어의 다섯 가지 정수 유형이 내장되어 있습니다. 각 유형은 다음 표에 표시된 것처럼 특정 정수 하위 집합을 나타냅니다.

    내장된 정수 유형.

    범위

    체재

    8개의 부호 있는 비트

    16개의 부호 있는 비트

    2147483648 +2147483647

    32비트 서명됨

    부호 없는 8비트

    부호 없는 16비트

    정수 유형의 피연산자에 대한 산술 연산은 다음 규칙에 따라 수행됩니다.

    1. 정수 상수 유형은 해당 정수 상수의 값을 포함하는 가장 작은 범위를 갖는 내장 정수 유형입니다.
    2. 이항 연산(두 개의 피연산자를 사용하는 연산)의 경우 두 피연산자는 연산이 수행되기 전에 공통 유형으로 변환됩니다. 공통 유형은 두 유형의 가능한 모든 값을 포함하는 가장 작은 범위를 갖는 내장 정수 유형입니다. 예를 들어, 정수와 바이트 길이 정수의 공통 유형은 정수이고, 정수와 단어 길이 정수의 공통 유형은 긴 정수입니다. 제네릭 유형의 정밀도에 따라 작업이 수행되며 결과 유형은 제네릭 유형입니다.
    3. 할당 연산자 오른쪽의 표현식은 왼쪽 변수의 크기에 관계없이 평가됩니다.

    정수에 대해 수행되는 작업:

    "+" - 추가

    "-" - 빼기

    "*" - 곱셈

    SQR - 제곱

    DIV - 나누기 후 분수 부분을 삭제합니다.

    MOD - 나눗셈 후 정수 나머지 얻기

    ABS - 숫자 모듈

    RANDOM(X) - 0에서 X까지 난수 얻기

    A:=100 ; b:=60 ; a DIV b 결과 - 1 a MOD b 결과 - 40

    정수형 변수는 다음과 같이 설명됩니다.

    var 변수 목록: 유형;

    예: var а,р,n:integer;

    리얼형(리얼)

    실수형은 고정된 자릿수를 사용하여 부동 소수점 형식으로 표현할 수 있는 실수의 하위 집합입니다. 부동 소수점 형식으로 값을 쓰는 데는 일반적으로 m, b, e라는 세 가지 값이 관련됩니다. 즉 m*b e는 b가 항상 10이고 m과 e는 실수 범위의 정수 값입니다. m과 e의 이러한 값은 실제 유형의 범위와 정밀도를 추가로 결정합니다.

    실수 유형에는 real, Single, double, exnende, comp의 다섯 가지 유형이 있습니다. 실제 유형은 해당 유형과 관련된 값의 범위와 정밀도에 따라 다릅니다.

    실수 유형의 범위 및 소수 자릿수

    범위

    숫자

    2.9x10E-39 ~ 1.7x10E 38

    1.5x10E-45 ~ 3.4x10E 38

    5.0x10E-324 ~ 1.7x10E 308

    3.4x10E-493 ~ 1.1x10E 403

    2E 63 ~ 2E 63

    실수에 대해 수행되는 연산:

    • 모든 연산은 정수에 유효합니다.
    • SQRT(x)는 x의 제곱근입니다.
    • SIN(X), COS(X), ARCTAN(X).
    • LN(X)는 자연로그입니다.
    • EXP(X)는 X(e x)의 지수입니다.
    • EXP(X*LN(A)) - 지수화(A x).
    • 유형 변환 기능:
      • TRUNC(X) - 소수 부분을 삭제합니다.
      • ROUND(X) - 반올림.
    • 산술 연산의 일부 규칙:
      • 산술 연산에 실수 및 정수 유형의 숫자가 포함된 경우 결과는 실수 유형이 됩니다.
      • 표현식의 모든 구성요소는 한 줄에 작성됩니다.
      • 괄호만 사용됩니다.
      • 두 개의 산술 기호를 연속으로 놓을 수 없습니다.

    실수형 변수는 다음과 같이 설명됩니다.

    var 변수 목록: 유형;

    예를 들어:

    var d,g,k:실제 ;

    문자형(char)

    char 유형은 아포스트로피로 묶인 모든 문자입니다. 아포스트로피를 문자 변수로 나타내려면 아포스트로피 ''''로 묶어야 합니다.

    각 문자에는 고유한 코드와 번호가 있습니다. 일련번호 0,1..9는 오름차순으로 정렬됩니다. 문자의 일련번호도 오름차순으로 정렬되어 있지만 반드시 서로 뒤따를 필요는 없습니다.

    문자 데이터에는 다음 비교 기호가 적용됩니다.

    > , < , >=, <=, <> .

    예: 'A'< ‘W’

    문자 변수에 적용되는 함수:

    1. ORD(X) - 기호 X의 일련 번호를 결정합니다. ord ('a') =97 ;
    2. CHR(X) - 숫자로 문자를 식별합니다.
    3. chr(97) ='a';
    4. SUCC(X) - X 문자 뒤에 오는 문자를 반환합니다. succ ('A') ='B';

    열거형

    열거형 데이터 유형은 엄격하게 정의된 순서와 수량으로 상수 목록으로 지정되기 때문에 그렇게 명명되었습니다. 열거형은 상수 목록으로 구성됩니다. 이 유형의 변수는 이러한 상수 값을 사용할 수 있습니다. 열거 유형 설명은 다음과 같습니다.

    유형<имя типа>=(상수 목록) ; 바르<имя переменной>:<имя типа>;

    어디<список констант>- 이것은 쉼표로 구분되어 지정되고 0부터 시작하는 고유한 일련 번호를 갖는 특별한 유형의 상수입니다.

    예를 들어:

    방향=(북쪽, 남쪽, 서쪽, 동쪽) 입력; 월=(6월, 7월, 8월, 1월) ; 용량=(버킷, 배럴, 캐니스터, 탱크) ; var 회전:방향; 출발:월; 볼륨:용량;

    var 회전:(북쪽, 남쪽, 서쪽, 동쪽) ; 출발: (6월, 7월, 8월, 1월) ; 부피: (버킷, 배럴, 캐니스터, 탱크);

    다음 할당 연산자를 수행할 수 있습니다.

    회전:=남쪽; 출발:=8월; 볼륨:=탱크;

    하지만 혼합 과제는 할 수 없습니다:

    출발:=남쪽; 볼륨:=8월;

    다음 함수는 열거 유형의 변수에 적용됩니다.

    1. ORD - 일련번호

    2. PRED - 이전 요소

    3. SUCC - 후속 요소.

    PRED(배럴) = 버킷; SUCC(남쪽) =서쪽; ORD(7월) =1 ;< юг, июнь < январь имеют значения TRUE, а юг>열거형 변수는 순서와 번호가 매겨져 있으므로 비교할 수 있습니다. 그래서 표현은: 북쪽<бочка значение FАLSE.

    서쪽과 탱크

    한정형

    변수가 해당 유형의 모든 값을 허용하지 않고 특정 범위 내에서만 허용되는 경우 제한된 유형의 변수로 간주될 수 있습니다. 각 제약 유형은 기본 유형에 제약 조건을 적용하여 정의됩니다.

    다음과 같이 설명됩니다.<имя типа>유형

    =상수1 ..상수2

    1. 이 경우 다음 규칙을 따라야 합니다.
    2. 두 경계 상수는 모두 동일한 유형이어야 합니다.
    3. 실수를 제외한 모든 단순 유형을 기본 유형으로 사용할 수 있습니다.
    제한된 유형을 정의할 때 초기 값은 최종 값보다 클 수 없습니다.

    유형 인덱스 =0 ..63 ; 문자='a'..'z'; var char1,char2:문자; a,g:색인 ;

    변수 설명 섹션에서 즉시 설명할 수 있습니다.