중화사전망 - 서예자전 - C 언어와 파스칼 언어의 구문 비교
C 언어와 파스칼 언어의 구문 비교
현대 c 언어는 많은 파스칼 개념을 사용합니다.
예를 들어, 오래된 C 언어, 유형 검사가 약하고 함수 프로토타입이 없습니다. 그러나 오늘날의 C/C++ 언어는 함수 프로토타입을 지원합니다 (지원되지 않음)
이전 함수 스타일을 숭상하고) 유형 검사 메커니즘은 Pascal 만큼 엄격하다. 고대의 C 언어는 과거에는 포인터를 통해서만 액세스할 수 있었다.
바인드 변수는 매우 안전하지 않지만 오늘 C/C++ 의 참조 매개 변수는 상당히 안전합니다. 참조 매개 변수는 Pascal 의 var 매개 변수와 정확히 동일합니다.
게다가, 파스칼 자체도 엄청난 발전을 이루었고, Borland 의 공로는 필수적이다.
오늘날 사람들이 사용하는 파스칼은 거의 모두 터보 파스칼이나 델피의 Object Pascal 이다. 워스 시대
프로그램 이름 (입력, 출력);
Const a =1;
Type t = char 의 압축 배열;
Var I: 정수;
시작
Writeln ('이것은 골동품 파스칼 프로그램');
끝내다.
얼마나 많은 사람들이 알고 있습니까? 소프트웨어는 프로그램 begin end, 모듈을 분리할 수 없습니다, 그래서 미 쳤 어 요?
현대의 파스칼 언어도 C 언어의 많은 개념을 차용했다. 예를 들면 기본 매개변수 값, 변하지 않는 변수 레코드:
유형
TPoint = 레코드
대/소문자 정수
0: (x, y: 확장);
1: (반지름, 각도: 확장);
끝;
Case 섹션은 case type: integer of 가 아니라 case integer of 이며 실제로 c 언어의 union 과 동일합니다.
참조 데이터 유형 (예: smallint, longint, 유형이 지정되지 않은 포인터, 유형 매개 변수) 및 강제 유형 변환 메커니즘은 언급되지 않습니다.
오늘 파스칼의 문서 처리는 C 언어와 약간 비슷하며, 과거와 천양지차가 있다. 누가 오래된 파스칼의 get/put 작업을 기억합니까?
이렇게 많은 유사성을 말했는데, 사실 그 해의 비유사성을 부각시킨 것이다. 언어 발전에는 유사점이 있고, 차이점 ({} 과 begin..end) 은 보통
이것은 보잘것없다
오늘 몇 가지 중요한 차이점이 있습니다: 1. 파스칼은 하위 프로그램 중첩을 지원하며 c 는 지원하지 않습니다. C 의 설계 목표 중 하나는 기계 언어의 구조에 직접 대응하는 것이기 때문이다.
2. 파스칼 서브루틴은 프로시저/함수로 구분되고 c 는 함수만 있습니다.
3. 파스칼 유형 (예: char 및 boolean) 은 특별한 열거 유형이지만 열거와 정수는 같은 것이 아니므로 Ord () 를 통해 변환해야 합니다.
C 의 char 와 enum 은 정수로 간주됩니다.
4.c 는 가변 매개변수 void f(int x, ...) 를 지원하지만 파스칼은 지원하지 않습니다.
5.C/c++ 의 모듈식 메커니즘은 헤더 파일의 파일에+* 연결이 포함되어 있다는 것입니다. 텍스트 작업이 포함된 obj 파일이므로 컴파일 속도가 느립니다.
Pascal 은 unit 연결, 이진 연산, 컴파일 속도가 빠릅니다 (대형 소프트웨어 개발에는 여전히 중요).
6.c 언어 구조/배열 초기화는 숫자 값만 주면 되고 요소 수는 정의된 것보다 적을 수 있습니다. 파스칼은 반드시 요점을 명확하게 지적해야 한다.
수량명, 수량이 정확히 일치:
Var Point: TPoint = (x: 100, y: 200);
7.c 의 logo 는 대/소문자를 구분하며 Pascal 은 그렇지 않습니다.
8.C 컴파일러 사전 처리 기능은 Pascal 보다 강력하며 실제로 중요합니다 (C 컴파일러의 많은 단점을 보완함).
9. 쉽게 간과되는 것도 중요하다. 두 사람의 표현 방식이 다르다.
9. 1 에 대한 표현식. C/C++ 는 너무 많은 사명을 부여받았고, 대입문 자체도 하나의 표현식이었고, a = b 는 동시에 A 를 반환했기 때문에
A = b = c; 로 쓸 수 있습니다. 파스칼의 할당 수는 엄밀히 말하면 규정된 연산이다: 할당, 다른 것은 없다. 너는 A: = B: = C 를 쓸 수 없다.
9.2.C/c++ 표현식의 유형은 소스 피연산자에 따라 엄격하게 달라집니다. char a = 100, b = 200 그렇다면 a+b 의 결과입니다
유형은 여전히 char 이고, 물론 넘칠 것이다. Pascal 은 var a, B: Smallint 의 충분한 데이터 유형으로 확장될 것입니다. C: longint; 답: = 32768;
B: = 32768;
C: = a+b; //결과는 65536 이며 c 언어에서는 0 이어야 합니다.
결국, C 는 기계에 접근하고, 뼈에서는 피연산자를' 이진' 으로 여긴다. (이것은 때때로 장점이다. 특히 하드웨어를 다룰 때는 더욱 그렇다.) 파스칼은 수학에 접근하여 수학의 관점에서 수치를 보려고 시도했다. 10. c 의 for 루프가 얼마나 강력한지, Pascal 의 for 루프가 규칙을 따르는 방법은 중요하지 않습니다. = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
가장 큰 차이점은 C 에서 함수 내부에 다른 함수를 정의할 수 없다는 것입니다.
그러나 파스칼의 프로시저 함수는 존재할 수 있습니다.
또한 c 에는 = = 파스칼 및: =
그리고 C 는 {} 로 범위를 나타내지만 파스칼은 begin end 를 사용한다.
For 루프 c 의 경우 다음과 같은 조건에서 변수를 자유롭게 늘리거나 줄일 수 있습니다
Int I;;
For(I = 0;; 나< 100; I+=2)
{
}
그러나 Pascal 은 한 번에 1 만 추가할 수 있습니다. (이것이 맞는지 모르겠습니다. VB 와 혼합하면 참고할 수 있습니다.)
= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
그들은 OOP 에서 약간의 차이가 있다.
1.pascal 은 다중 상속을 지원하지 않으며 단일 아버지만 상속할 수 있는 반면 c++ 는 여러 아버지를 허용합니다.
곽BC 가 제공하는 TV 로 프로그래밍하면 TV 의 소스 코드를 꼭 보셨을 겁니다. 델포드의 VCL 과 얼마나 비슷한지 알 수 있을 겁니다.
결국, c++ 는 많은 다중 상속을 사용하여 작성되었습니다. 델퍼드는 나중에 그녀를 다시 썼다.
Oop 의 미래 발전에 비추어 볼 때, 다중 상속을 장려하지 않고 Java 와 Pascal 은 이러한 작업을 지원하지 않으며, 근본적으로 클래스의 복잡성을 감소시킨다. (알버트 아인슈타인, Northern Exposure (미국 TV 드라마), 성공명언)
이질성과 가독성.
파스칼에는 오버로드 및 다형성의 개념이 없습니다. 이제 borland 는 Pascal 을 완전히 개선했습니다.
파스칼은 여전히 c++ 가 없는 친구입니다. 그가 할 수 있는 것은 같은 단원의 다른 클래스의 개인 변수에 액세스하는 것이다. 현재 컴파일
이 과정에서, 모두들 가능한 한 친구 사용을 피해야 한다.
4.pascal 의 모든 클래스는 TObject 의 후손이지만 실제로는 아무것도 쓰지 않습니다.
Aaa = 클래스 ();
끝;
여전히
Aaa = 클래스 (to object);
끝;
이렇게 하면 모든 클래스 포인터를 to object 로 변환할 수 있으며 to object 에서 몇 가지 기본적인 클래스 초기화 및 분석을 수행했습니다.
생성자 연산자 오버로드. 이것은 c++ 만큼 좋지 않습니다.
5. 모든 파스칼은 안에 아무것도 쓰지 않았더라도 생성자를 명시적으로 선언해야 한다. C++ 는 할 수 없습니다.
6.pascal 의 모든 클래스는 힙에 적용되고, 통합 관리되며, 각 클래스의 상호 운용이 힙에서 수행됩니다.
C++ 는 스택, 스택, 데이터 영역에 존재할 수 있으므로 여러 영역의 클래스가 서로 액세스할 수 있으므로 c++ 가 해결해야 할 복잡성이 됩니다.
질문 7. 위의 이유에 근거하다.
예를 들어, 클래스 TDemo 는 ,
C++ 로 쓸 수 있습니다
Tdemo * demo = new tdemo ();
TDemo 데모; //직접 엔티티 만들기
그러나 파스칼 (Pascal) 에서는 반드시 써야 한다.
데모: 티데모;
데모: = TDemo. Create ();
8. 또 다른 문제는 문자열입니다.
이제 파스칼의 문자열 조작성이 c++ 보다 강하다고 할 수 있습니다.
그는 직접+,c++ 할 수 없다. 주된 이유는 c++ 가 기본 작업에 너무 가깝기 때문입니다.
9. 아직도 일련의
파스칼의 문자열은 긴 문자열과 짧은 문자열로 나뉘는데, 모두 문자열 [0] 으로 시작되며 실제로 문자열의 길이를 저장합니다.
도, 긴 문자열은 4 바이트로 길이가 4G 인 문자열을 나타내고, 짧은 문자열은 1 바이트이며, 최대 길이는 255 이며, c++ 와는 달리 매듭의 의미입니다.
묶다.
파스칼은 많은 장점을 가지고 있다. 예를 들어 문자열 길이를 얻으려면 c++ 가 \0 을 만날 때까지 전체 문자열을 스캔해야 합니다.
크기는 나오지만 파스칼은 [0] 만 읽는데, 이 효율성은 컴파일된 어셈블리 코드에서 알 수 있다.
또 다른 장점은 유니코드와 같은 멀티바이트 문자열 지원에 대해 16bit 이므로 많은 \0 이 있다는 것입니다
C++ 는 문자 영매술 종료 기호의 충돌을 해결하기 위해 끝을 \0\0 으로 변경해야 합니다. 파스칼은 어떤 변화도 필요하지 않습니다. 10 ... 아직 많이 있어서 잠시 기억이 안 나요.