PDF de programación - Una comparación entre C, C++, Java y Ada

Imágen de pdf Una comparación entre C, C++, Java y Ada

Una comparación entre C, C++, Java y Adagráfica de visualizaciones

Actualizado el 23 de Febrero del 2018 (Publicado el 6 de Junio del 2017)
2.609 visualizaciones desde el 6 de Junio del 2017
342,1 KB
27 paginas
Creado hace 15a (19/01/2009)
UNIVERSIDAD DE CANTABRIA

Una comparación entre

C, C++, Java y Ada

Santander, enero de 2009
J. Javier Gutiérrez
[email protected]

GRUPO DE COMPUTADORES Y TIEMPO REAL
DPTO. DE ELECTRÓNICA Y COMPUTADORES

© Michael González, Javier Gutiérrez

19/ene/09

Una comparación
entre C, C++, Java y Ada

UNIVERSIDAD DE CANTABRIA

1. Introducción
2. Estructura de un programa
3. Tipos de datos y declaraciones de datos
4. Operadores y expresiones
5. Entrada/salida simple
6. Instrucciones de control
7. Subprogramas y paso de parámetros
8. Modularidad y ocultamiento de información
9. Abstracción de tipos y reusabilidad
10.Excepciones
11.Llamada a funciones C y Java desde Ada
12.Conclusiones

GRUPO DE COMPUTADORES Y TIEMPO REAL
DPTO. DE ELECTRÓNICA Y COMPUTADORES

© Michael González, Javier Gutiérrez

19/ene/09

1

2

1. Introducción

UNIVERSIDAD DE CANTABRIA

El lenguaje C es uno de los lenguajes de programación más populares
que existen hoy en día
Características más importantes:
• lenguaje sencillo (aunque más difícil de aplicar)
• estructurado
• tipos definidos por el usuario
• no exige tipificación estricta
• permite compilación separada
• es de un nivel relativamente bajo
• compiladores baratos y eficientes

GRUPO DE COMPUTADORES Y TIEMPO REAL
DPTO. DE ELECTRÓNICA Y COMPUTADORES

© Michael González, Javier Gutiérrez

19/ene/09

3

Versiones del lenguaje C

UNIVERSIDAD DE CANTABRIA

Existen diversas versiones del lenguaje C:
• C común: apareció en 1978 y estaba directamente ligado al sistema

operativo UNIX

• C ANSI o C ISO: estandarización en 1988, y luego en 1995 y 1999;

versión no ambigua y más portable, que añade
- asignación de estructuras (registros)
- tipos enumerados
- prototipos de funciones, con especificación de sus argumentos
- librerías estándares (funciones matemáticas, entrada/salida,

etc.)

En este seminario nos referiremos al ISO C 99

GRUPO DE COMPUTADORES Y TIEMPO REAL
DPTO. DE ELECTRÓNICA Y COMPUTADORES

© Michael González, Javier Gutiérrez

19/ene/09

El lenguaje C++

UNIVERSIDAD DE CANTABRIA

Es un lenguaje derivado del C, pero mucho más complejo. Incluye:
• definición de módulos (llamados clases)
• programación orientada al objeto
• tipificación más estricta
• tratamiento de excepciones
• plantillas (equivalentes a módulos genéricos)
El C++ fue estandarizado en 1998.

GRUPO DE COMPUTADORES Y TIEMPO REAL
DPTO. DE ELECTRÓNICA Y COMPUTADORES

© Michael González, Javier Gutiérrez

19/ene/09

El lenguaje Java

UNIVERSIDAD DE CANTABRIA

Es un lenguaje con una sintaxis similar a la del C++, pero unos
conceptos de diseño totalmente diferentes:
• portabilidad de clases mediante:

- código intermedio estandarizado, e interpretado por una

máquina virtual (portable, pero ineficiente)

- las clases se cargan dinámicamente (y de sitios remotos)
• gestión automática de memoria, que aumenta la fiabilidad
• programación orientada a objetos
• tipificación estricta
• tratamiento de excepciones; recientemente, genéricos
El Java pertenece a la empresa Sun y no está estandarizado

GRUPO DE COMPUTADORES Y TIEMPO REAL
DPTO. DE ELECTRÓNICA Y COMPUTADORES

© Michael González, Javier Gutiérrez

19/ene/09

4

5

6

2. Estructura de un programa

UNIVERSIDAD DE CANTABRIA

Estructura de un bloque en Ada y en C/Java:

Ada

C/Java

declare

begin

<declaraciones>

<instrucciones>

exception

<manejadores>

end;

{

}

<declaraciones>

<instrucciones>

GRUPO DE COMPUTADORES Y TIEMPO REAL
DPTO. DE ELECTRÓNICA Y COMPUTADORES

© Michael González, Javier Gutiérrez

19/ene/09

7

2. Estructura de un programa
(cont.)

UNIVERSIDAD DE CANTABRIA

Estructura de un programa:

Ada
with modulo1;
procedure Nombre is
<declaraciones>
begin
<instrucciones>
end;

C

Java

#include <modulo1.h>
main()
{
<declaraciones>

<instrucciones>
}

import paquete.*;
public class Nombre {
public static void
main (String[] args)
{
<declaraciones>

<instrucciones>
}
}

GRUPO DE COMPUTADORES Y TIEMPO REAL
DPTO. DE ELECTRÓNICA Y COMPUTADORES

© Michael González, Javier Gutiérrez

19/ene/09

8

Ejemplos

UNIVERSIDAD DE CANTABRIA

#include <stdio.h>
main()
{
printf("hola\n"); // printf para escribir
}

with Ada.Text_IO;
procedure Hola is
begin
Ada.Text_IO.Put_Line("hola"); -- put para escribir
end Hola;

GRUPO DE COMPUTADORES Y TIEMPO REAL
DPTO. DE ELECTRÓNICA Y COMPUTADORES

© Michael González, Javier Gutiérrez

19/ene/09

9

Ejemplos (cont.)

UNIVERSIDAD DE CANTABRIA

public class Hola {
public static void main(String[] args)
{
// println es una operación del objeto
// out de la clase System
System.out.println("hola");
}
}

GRUPO DE COMPUTADORES Y TIEMPO REAL
DPTO. DE ELECTRÓNICA Y COMPUTADORES

© Michael González, Javier Gutiérrez

19/ene/09

10

Algunas observaciones:

UNIVERSIDAD DE CANTABRIA

C/Java

se distingue entre mayúsculas y minúscu-

las

las instrucciones acaban con “;”, pero los

bloques no

Ada

no hay distinción

instrucciones y bloques acaban con “;”

En Java las funciones son bloques que

siempre son métodos de clases

Las funciones y procedimientos son blo-

ques que se pueden anidar

comentarios entre /**/, o empezando

con // hasta fin de línea

los comentarios empiezan con “--” y

continúan hasta el final de la línea

todas las variables deben declararse

los strings se encierran entre ""

idem.
idem.

en C y Java el retorno de línea se pone en

el string "\n"

retorno de línea con operaciones específi-

cas (New_Line, Put_Line)

GRUPO DE COMPUTADORES Y TIEMPO REAL
DPTO. DE ELECTRÓNICA Y COMPUTADORES

© Michael González, Javier Gutiérrez

19/ene/09

11

Importancia de la declaración de
variables

UNIVERSIDAD DE CANTABRIA

La siguiente línea de programa en Fortran causó la pérdida de la
nave Viking dirigida al planeta Venus:

DO 20 I=1.100

La línea correcta, que hubiera sido el equivalente de un lazo for era:

DO 20 I=1,100

En su lugar, el compilador interpretó que la instrucción era una
asignación a la variable (no declarada) DO20I:

DO20I = 1.100

En C, Java y Ada todos los objetos deben ser declarados

GRUPO DE COMPUTADORES Y TIEMPO REAL
DPTO. DE ELECTRÓNICA Y COMPUTADORES

© Michael González, Javier Gutiérrez

19/ene/09

12

3. Tipos de datos

Tipos predefinidos:

Ada
Integer

C

signed char

short
int
long

Boolean

Character (8 bits)

Wide_Character (16 bits)

(se usa int)

se usa char (8 bits)

wchar_t

Float

Duration
String

float
double

-

char[], char*

UNIVERSIDAD DE CANTABRIA

Java
byte
short
int
long

boolean

char (16 bits)

float
double

-

String

GRUPO DE COMPUTADORES Y TIEMPO REAL
DPTO. DE ELECTRÓNICA Y COMPUTADORES

© Michael González, Javier Gutiérrez

19/ene/09

13

Declaraciones

C/Java

UNIVERSIDAD DE CANTABRIA

int lower;
char c,resp;// dos variables de tipo char
int i=0; // variable inicializada
const float eps=1.0e-5; // constante C
#define MAX 8 // constante textual (C)
final float eps=1.0e-5; // constante Java

Ada

Lower : Integer;
C, Resp : Character; -- dos variables Character
I : Integer := 0; -- variable inicializada
Eps : constant Float:=1.0e-5; -- Constante

GRUPO DE COMPUTADORES Y TIEMPO REAL
DPTO. DE ELECTRÓNICA Y COMPUTADORES

© Michael González, Javier Gutiérrez

19/ene/09

14

Observaciones sobre las
declaraciones

UNIVERSIDAD DE CANTABRIA

Puede observarse que, tanto en C y Java como en Ada:
• las variables se pueden inicializar
• se pueden declarar como constantes
• se pueden declarar varias variables juntas
En C y Java se pone primero el tipo, y luego la variable (al revés que
en Ada)

GRUPO DE COMPUTADORES Y TIEMPO REAL
DPTO. DE ELECTRÓNICA Y COMPUTADORES

© Michael González, Javier Gutiérrez

19/ene/09

15

Tipos discretos definidos por
el usuario

UNIVERSIDAD DE CANTABRIA

Ni en C ni en Java se pueden crear más tipos enteros o reales
Tampoco se pueden definir tipos subrango
En ambos se pueden definir tipos enumerados
Suponer el siguiente tipo enumerado en Ada:

type Dimension is (Planox, Planoy, Planoz);
Fuerza, Linea : Dimension;
...
Fuerza:=Planox;
Linea :=Dimension’Succ(Fuerza);

GRUPO DE COMPUTADORES Y TIEMPO REAL
DPTO. DE ELECTRÓNICA Y COMPUTADORES

© Michael González, Javier Gutiérrez

19/ene/09

16

Tipos discretos (cont.)

Su equivalente en C sería:

UNIVERSIDAD DE CANTABRIA

typedef enum {planox,planoy,planoz} dimension;
dimension fuerza, linea;

linea=planox;
fuerza=linea+1;

Observaciones:
• en C (y en Java también) el operador de asignación es “=”
• los valores enumerados se tratan como enteros, con valores 0, 1,

2,...

• fuerza toma el valor planoy en el ejemplo

GRUPO DE COMPUTADORES Y TIEMPO REAL
DPTO. DE ELECTRÓNICA Y COMPUTADORES

© Michael González, Javier Gutiérrez

19/ene/09

17

Tipos discretos (cont.)

UNIVERSIDAD DE CANTABRIA

El equivalente al tipo Dimension en Java sería esta clase:

public enum Dimension {planox, planoy, planoz};

Dimension fuerza, linea;

linea=Dimension.planox;

GRUPO DE COMPUTADORES Y TIEMPO REAL
DPTO. DE ELECTRÓNICA Y COMPUTADORES

© Michael González, Javier Gutiérrez

19/ene/09

18

Caracteres

UNIVERSIDAD DE CANTABRIA

Los caracteres en Ada, C, y Java se representan encerrados entre
apóstrofes:

char c1,c2;
c1=’a’;

Los caracteres de control tiene una representación especial:
Ada
ASCII.LF
ASCII.NUL
ASCII.BEL
’’’

Carácter
new-line
carácter nulo
bell (pitido)
apóstrofe

C/Java

’\n’
’\0’
’\a’
’\’’

GRUPO DE COMPUTADORES Y TIEMPO REAL
DPTO. DE ELECTRÓNICA Y COMPUTADORES

© Michael González, Javier Gutiérrez

19/ene/09

19

Arrays

UNIVERSIDAD DE CANTABRIA

Los arrays de C son muy diferentes de los de Ada o Java:
• no tienen un tamaño especificado
• el usuario es responsable de no exceder su tamaño real
• se pueden manipular mediante punteros
Los arrays de Ada y Java son mucho más seguros
Los arrays de Java se crean siempre en memoria dinámica
• la variable array es una referencia que apunta al array creado

dinámicamente

• la asignación copia la referencia, no el array
En Java no hay tipos array, pero sí objetos (o variables) array

GRUPO DE COMPUT
  • Links de descarga
http://lwp-l.com/pdf4337

Comentarios de: Una comparación entre C, C++, Java y Ada (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad