Colección de citas famosas - Slogan de motivación - Comparación gramatical entre el lenguaje c y el lenguaje pascal

Comparación gramatical entre el lenguaje c y el lenguaje pascal

C y Pascal eran diferentes antes, pero ahora se están volviendo cada vez más similares.

El lenguaje C moderno toma prestados muchos conceptos de Pascal:

Por ejemplo, el antiguo lenguaje C tiene una verificación de tipos débil y no tiene prototipos de funciones. Pero el lenguaje C/C actual admite prototipos de funciones (en lugar de defender el estilo de función antiguo) y el mecanismo de verificación de tipos es casi tan estricto como Pascal. El antiguo lenguaje C solía ser accesible sólo a través de punteros.

Las variables de enlace son muy inseguras, pero los parámetros de referencia C/C actuales son bastante seguros. El parámetro de referencia es exactamente el mismo que el parámetro var de Pascal.

Además, Pascal también ha experimentado un tremendo desarrollo y Borland ha contribuido mucho.

El Pascal que la gente usa ahora es casi todo Turbo Pascal o Object Pascal de Delphi. Vale la pena

Nombre del programa (entrada, salida);

const a = 1;

tipo t = matriz comprimida de caracteres;

var i: integer;

Inicio

Writeln('Este es un programa Pascal antiguo');

Fin.

¿Cuántas otras personas conoces? Un software es un programa que comienza y termina y los módulos no se pueden distinguir, así que ¿no te vuelvas loco?

El lenguaje Pascal moderno también toma prestados muchos conceptos del lenguaje C, como valores de parámetros predeterminados y registros de variables inmutables:

Tipo

TPoint = registro

Enteros de caso

0: (x, y: extensión);

1: (radio, ángulo: extensión

); Fin;

La parte del caso no es tipo de caso: entero de sino entero de caso de, que en realidad es lo mismo que unión en lenguaje C.

En cuanto a los tipos de datos de referencia (como entero pequeño, entero largo, punteros sin tipo, parámetros de tipo) y mecanismos de conversión de tipos forzados, no los mencionaré.

El procesamiento de archivos actual en Pascal es un poco como el lenguaje C, que es muy diferente del pasado. ¿Quién recuerda todavía las operaciones get/put del viejo Pascal?

Habiendo dicho tantas similitudes, en realidad resalta la diferencia en aquel entonces. Existen similitudes y diferencias en el desarrollo de los lenguajes ({} y start..end) generalmente

Es trivial

Hoy en día existen algunas diferencias importantes: 1. Pascal admite el anidamiento de subrutinas, pero C no. Porque uno de los objetivos de diseño de C es corresponder directamente a la estructura del lenguaje de máquina.

2. Los subprogramas de Pascal se dividen en procedimientos/funciones, mientras que C solo tiene funciones.

3. Los tipos Pascal son relativamente estrictos, como char y boolean, que son tipos de enumeración especiales. Sin embargo, las enumeraciones y los números enteros no son lo mismo y deben convertirse mediante Ord().

Los caracteres char y enum de c se tratan como números enteros.

4.c admite el parámetro variable void f(int x,...), pero Pascal no.

5. El mecanismo modular de C/c es que el archivo de encabezado contiene * conexiones. obj y el archivo contiene una operación de texto, por lo que la compilación es lenta.

Pascal es conexión de unidades, operación binaria y compilación rápida (aún muy importante para desarrollar software a gran escala).

6. La inicialización de la estructura/matriz del lenguaje C solo requiere valores numéricos y el número de elementos puede ser menor que el definido; Pascal debe señalar claramente los puntos clave.

Nombre de la cantidad, la cantidad corresponde estrictamente a:

var Punto: TPoint = (x: 100, y: 200);

El logo de 7.c Es para distinguir mayúsculas y minúsculas, Pascal no.

8. La función de preprocesamiento del compilador de C es más poderosa que Pascal y también es muy importante en la práctica (compensa muchas deficiencias del compilador de C).

9. Es fácil pasarlo por alto pero también es importante: las dos expresiones son diferentes.

Expresión del 9.1. A C/C se le han asignado demasiadas tareas, e incluso la declaración de asignación en sí es una expresión a = b también devuelve a, por lo que se puede escribir como a = b = c; estrictamente hablando Es una operación prescrita: asignación, y nada más No se puede escribir A: = B: = C.

9.2. El tipo de expresión C/c depende estrictamente del operando fuente: char a = 100, b = 200, entonces el resultado de a b

El tipo sigue siendo char, por supuesto que se desbordará. Pascal lo expandirá a un tipo de datos lo suficientemente grande para usted: var a, b: smallint; c: longint; = 32768; = a b; // El resultado es 65536, que definitivamente es 0 en lenguaje C.

En el análisis final, C está cerca de la máquina y trata los operandos como "binarios" en su esencia (esto a veces es una ventaja, especialmente cuando se trata de hardware, Pascal está cerca de las matemáticas y lo intenta); mirar los valores desde una perspectiva matemática. 10. En cuanto a qué tan poderoso es el bucle for de C y cómo el bucle for de Pascal sigue las reglas, estos no son importantes. ==================================================== ======

Creo que la mayor diferencia es que C no permite definir otras funciones dentro de una función.

Pero se permite que existan las funciones procedimentales de Pascal.

Además, a C se le da == suma de Pascal: =

Además, C usa {} para expresar el rango, pero Pascal usa inicio y fin.

Acerca del bucle for c, puede aumentar o disminuir las variables en la condición a voluntad, como

int I

for(I = 0; ; i lt100; i =2)

{

}

Pero Pascal solo puede sumar 1 a la vez (no sé si esto es correcto). , puedes consultarlo si lo mezclas con vb)

=============================== ============== ==============

Tienen algunas diferencias en oop.

1. Pascal no admite la herencia múltiple y solo puede ser heredada por un solo padre, mientras que c permite varios padres.

Si utilizas el televisor proporcionado por Guo BC para programar, debes haber visto el código fuente del televisor y encontrarás lo similar que es al vcl de Delphi, pero

es c después de todo Escrito, usando mucha herencia múltiple. Más tarde, Delphi la reescribió.

Desde la perspectiva del desarrollo futuro de oop, no se recomienda la herencia múltiple. Java y Pascal no admiten esta operación, lo que reduce fundamentalmente la complejidad de la clase.

Heterogeneidad y legibilidad.

2. Pascal no tiene los conceptos de sobrecarga y polimorfismo. Ahora borland ha perfeccionado completamente a Pascal.

3. Pascal todavía no tiene c amigos. Todo lo que puede hacer es acceder a variables privadas de otras clases en la misma unidad. Compilación actual

En este proceso, todos deberían intentar evitar el uso de amigos.

4. Todas las clases en Pascal son descendientes de TObject, pero en realidad no escribes nada.

AAA = clase();

Fin;

Aún equivalente a

AAA = clase(al objeto);

Fin;

De esta manera, todos los punteros de clase se pueden convertir en objetos, y él ha realizado algunas inicializaciones y análisis básicos de clases en objetos.

Sobrecarga del operador constructor. Esto es peor que c.

5. Todos los pascales deben declarar explícitamente el constructor, incluso si no escribes nada en él. Y c no puede.

6. Todas las clases en Pascal se aplican en el montón y se administran de manera uniforme, y las operaciones mutuas de cada clase se realizan en el montón.

Y c puede existir en el montón, la pila y el área de datos, lo que permite que las clases en diferentes áreas accedan entre sí. Esto se convierte en una complejidad que c necesita resolver.

Pregunta 7. Basado en las razones anteriores.

Por ejemplo, la clase TDemo,

se puede escribir en C

t demo * demo = new t demo()

; TDemo demo ; //Crea la entidad directamente

Pero en pascal, debe escribirse

demo: t demo;

Demo: = TDemo. create();

8. Otro problema son las cadenas.

Ahora se puede decir que la operabilidad de las cadenas de Pascal es mejor que la de C.

Él puede hacerlo directamente, pero c no. La razón principal es que c está demasiado cerca de las operaciones subyacentes.

9. Sigue siendo una cadena

Las cadenas de Pascal se dividen en cadenas largas y cadenas cortas, ambas comenzando con cadena[0], que en realidad almacena la longitud.

Grado, la cadena larga tiene 4 bytes, lo que indica una cadena con una longitud de 4G, la cadena corta tiene 1 byte y la longitud máxima es 255, a diferencia de c, que significa un nudo.

Agrupación.

Pascal tiene muchas ventajas. Por ejemplo, si desea obtener la longitud de una cadena, c necesita escanear toda la cadena hasta encontrar \0.

Muestra el tamaño, mientras que Pascal solo lee [0]. Esta eficiencia se puede ver en el código ensamblador compilado.

Otro beneficio es la compatibilidad con cadenas de varios bytes, como Unicode. Debido a que es de 16 bits, habrá muchos \0, que es diferente de

C, que tiene que serlo. cambiarse a \0\ 0 indica fin, para resolver conflictos con símbolos de fin de canalización de personajes. Pascal no requiere ningún cambio. 10...Hay muchos más, no los recuerdo en este momento.