Typeset by GMNI & FoilTEX

– Typeset by GMNI & FoilTEX – LENGUAJE C: ´ de los Lenguajes de Programacion ´ Evolucion ´ F. Navarrina, I. Colominas, H. Gomez, J. Par´ıs, M. Caste

1 downloads 143 Views 1MB Size

Story Transcript

– Typeset by GMNI & FoilTEX –

LENGUAJE C: ´ de los Lenguajes de Programacion ´ Evolucion ´ F. Navarrina, I. Colominas, H. Gomez, J. Par´ıs, M. Casteleiro

GMNI — G RUPO

DE

´ M ETODOS N UM E´ RICOS

EN I NGENIER´I A

´ ´ ´ Departamento de Metodos Matematicos y de Representacion ´ Escuela Tecnica Superior de Ingenieros de Caminos, Canales y Puertos ˜ Espana ˜ Universidad de A Coruna,

e-mail: [email protected] ´ pagina web: http://caminos.udc.es/gmni ˜ — G RUPO DE M ETODOS ´ U NIVERSIDAD DE A C ORU NA N UM E´ RICOS EN I NGENIER´I A

´INDICE ´ I Principales paradigmas de programacion ´ I Lenguaje Maquina I Ensamblador I FORTRAN I Lenguajes compilados I BASIC I Lenguajes interpretados

´ estructurada I Programacion I FORTRAN 77 I Lenguaje C I Tendencias actuales I Curiosidades ˜ — G RUPO DE M ETODOS ´ U NIVERSIDAD DE A C ORU NA N UM E´ RICOS EN I NGENIER´I A

´ (I) Principales paradigmas de programacion

PRINCIPALES PARADIGMAS (en Ingenier´ıa): ´ I Lenguaje Maquina:

Hardware

(< 1940 aprox.)

I Ensamblador:

Software

(1940–1950 aprox.)

I FORTRAN/II/IV:

Compiladores

(1950–1960 aprox.)

I BASIC:

´ Interpretes

(1960–1970 aprox.)

I PASCAL:

Prog. Estructurada

(1970–1980 aprox.)

I FORTRAN 77:

(influencia del Pascal)

(1977)

I Lenguaje C:

Portabilidad, S.O. UNIX

(1980–1990 aprox.)

I Lenguaje C++:

Prog. orientada a objeto

(1990–2000 aprox.)

I Fortran 90/95/2003:

(influencia del C)

(1990,1995,2003)

I Java:

Internet

(> 2000 aprox.)

˜ — G RUPO DE M ETODOS ´ U NIVERSIDAD DE A C ORU NA N UM E´ RICOS EN I NGENIER´I A

´ Lenguaje Maquina (I) ´ LENGUAJE MAQUINA I Secuencia de bits (agrupados en bytes) que corresponden a las instrucciones que debe ejecutar el procesador y a los datos fijos ´ ´ del programa (esencialmente constantes numericas y/o alfanumericas) . ´ directa de un programa en lenguaje maquina ´ I La codificacion es ♠ muy costosa, ♠ muy farragosa, y ♣ ABSOLUTAMENTE DEPENDIENTE DEL HARDWARE.

´ I Ejemplos: (vease la carpeta EjemplosDeArchivosDeTextoYBinarios) • El archivo hello.exe es un archivo binario que contiene un programa ejecutable. • El archivo hello.exe.txt muestra los bytes que forman el archivo hello.exe, • y el archivo hello.exe.b.txt muestra los correspondientes bits.

´ se utiliza en dispositivos muy sencillos. I En la actualidad solo ˜ — G RUPO DE M ETODOS ´ U NIVERSIDAD DE A C ORU NA N UM E´ RICOS EN I NGENIER´I A

Ensamblador (I) ENSAMBLADOR I Lenguaje de MUY BAJO NIVEL. (*) I El programador dispone de un repertorio de instrucciones elementales ´ sencillas, relativamente faciles de recordar. Por ejemplo: STO N

´ de memoria N. −→ Guardar (“‘store”) en la posicion

RCL N

´ de memoria N. −→ Leer (“recall”) el contenido de la posicion

+,-,*,/

−→ Sumar, restar, multiplicar, dividir.

=

−→ Calcular el resultado de las operaciones anteriores.

JMP #L

−→ Si el resultado anterior es 0, ir (“jump”) a la l´ınea L.

STP

−→ Parar el programa (“stop”).

I Un programa (ASSEMBLER) se encarga de ENSAMBLAR (**) ´ el codigo y construir el correspondiente programa ejecutable

´ ´ (*) Muy proximo al lenguaje maquina. ´ (**) Traducir el programa a lenguaje maquina y ˜ anadir lo que sea necesario para que pueda ejecutarse.

˜ — G RUPO DE M ETODOS ´ U NIVERSIDAD DE A C ORU NA N UM E´ RICOS EN I NGENIER´I A

Ensamblador (II) ´ en ENSAMBLADOR sigue siendo I La programacion ♠ muy costosa, ♠ muy farragosa, y ♣ ABSOLUTAMENTE DEPENDIENTE DEL HARDWARE.

´ se utiliza cuando se necesita sacar el maximo ´ I En la actualidad solo partido al hardware.

˜ — G RUPO DE M ETODOS ´ U NIVERSIDAD DE A C ORU NA N UM E´ RICOS EN I NGENIER´I A

Ensamblador (III) I Ejemplo: Programa para calcular factoriales realizado en ´ un hipotetico ENSAMBLADOR #01: #02: #03: #04: #05: #06: #07: #08: #09: #10: #11: #12: #13: #14: #15: #16: #17:

STO 1 STO RCL JMP * RCL = STO RCL 1 = STO GTO RCL STP

01 02 01 #16 02 02 01

01 #04 02

˜ — G RUPO DE M ETODOS ´ U NIVERSIDAD DE A C ORU NA N UM E´ RICOS EN I NGENIER´I A

FORTRAN (I) FORTRAN / II / IV

I Lenguaje de ALTO NIVEL. (*) ˜ I Disenado por John Backus para IBM en 1953, como ´ alternativa al Lenguaje Maquina de un ordenador IBM 704. I El primer compilador fue distribuido en 1957. John Backus (1924–2007). Creador del FORTRAN (1953) en IBM. (Fuente: IBM)

´ (*) Alejado del lenguaje maquina.

˜ — G RUPO DE M ETODOS ´ U NIVERSIDAD DE A C ORU NA N UM E´ RICOS EN I NGENIER´I A

FORTRAN (II)

´ ♣ FORTRAN proviene de FORmula TRANslator (“traductor de formulas”). ´ de las formulas ´ ♥ La codificacion es sencilla. ♣ La sintaxis viene condicionada por el soporte (tarjetas perforadas).

En efecto . . .

˜ — G RUPO DE M ETODOS ´ U NIVERSIDAD DE A C ORU NA N UM E´ RICOS EN I NGENIER´I A

FORTRAN (IIIa) I Origen: Tarjetas Perforadas (”punch cards”)

Tarjeta Perforada. (Fuente: )

˜ — G RUPO DE M ETODOS ´ U NIVERSIDAD DE A C ORU NA N UM E´ RICOS EN I NGENIER´I A

FORTRAN (IIIb) I Origen: Perforadora de Tarjetas

Perforadora de Tarjetas. (Fuente: )

˜ — G RUPO DE M ETODOS ´ U NIVERSIDAD DE A C ORU NA N UM E´ RICOS EN I NGENIER´I A

FORTRAN (IIIc) I Origen: Programa FORTRAN en tarjetas perforadas

Programa FORTRAN en tarjetas perforadas. (Fuente: )

˜ — G RUPO DE M ETODOS ´ U NIVERSIDAD DE A C ORU NA N UM E´ RICOS EN I NGENIER´I A

FORTRAN (IIId) I Origen: Lectora de Tarjetas

Programa FORTRAN en tarjetas perforadas. (Fuente: )

˜ — G RUPO DE M ETODOS ´ U NIVERSIDAD DE A C ORU NA N UM E´ RICOS EN I NGENIER´I A

FORTRAN (IV) ´ de memoria es r´ıgida pero predecible. (*) ♣ La gestion ´ ♣ Las instrucciones de control son muy primitivas. Basicamente. .. ♣ GOTO incondicional ´ ♠ IF aritmetico

♣ DO – CONTINUE ♣ CALL

´ PROGRAMA PRINCIPAL + SUBRUTINAS ♣ Modelo de implementacion: • SUBRUTINA = subprograma B CALL transfiere el control a un subprograma B que forma parte del programa ejecutable o ´ conoce el programa ejecutable B cuya localizacion (ejemplo: librer´ıas del sistema)

• La transfencia de argumentos se realiza POR REFERENCIA.

´ de un programa debe haber (*) En principio (siempre que el programa este´ bien hecho) cuando comienza la ejecucion ´ de todos los calculos, ´ memoria suficiente para la realizacion por lo que todo deber´ıa funcionar correctamente (sin detenciones por falta de recursos, “cuelgues” del sistema, etc.)

˜ — G RUPO DE M ETODOS ´ U NIVERSIDAD DE A C ORU NA N UM E´ RICOS EN I NGENIER´I A

FORTRAN (V) I Ejemplo: Programa FORTRAN IV para calcular factoriales

C 100 500 600

1000 110

PROGRAMA PARA CALCULAR FACTORIALES READ(5,100) N FORMAT(I5) NFAC=1 CONTINUE IF (N) 1000, 1000, 600 CONTINUE NFAC=NFAC*N N=N-1 GOTO 500 WRITE(6,110) NFAC FORMAT(I10) STOP END

˜ — G RUPO DE M ETODOS ´ U NIVERSIDAD DE A C ORU NA N UM E´ RICOS EN I NGENIER´I A

Lenguajes Compilados (I) LENGUAJES COMPILADOS I FORTRAN ES EL PROTOTIPO DE LENGUAJE COMPILADO • El programador escribe el programa fuente (uno o varios archivos *.f, *.for). • Un programa (compilador FORTRAN) se encarga de COMPILAR (*) el programa fuente (uno o varios archivos *.f, *.for) y crear los correspondientes programas objeto (archivos *.o, *.obj) • Otro programa (linker) se encarga de LINKAR (**) el/los programa/s objeto (archivos *.o, *.obj) y ´ crear el correspondiente programa ejecutable (archivo *.exe o sin extension). ´ • Una vez creado, el programa ejecutable (archivo *.exe o sin extension) puede utilizarse cuantas veces sea necesario.

´ (*) Traducirlo/s a lenguaje maquina. (**) Dimensionar la memoria necesaria y unir (“link”) todas las partes.

˜ — G RUPO DE M ETODOS ´ U NIVERSIDAD DE A C ORU NA N UM E´ RICOS EN I NGENIER´I A

Lenguajes Compilados (II) Programa Fuente (*.f, *.for)



´ COMPILACION [compilador]

Programa Objeto (*.o, *.obj)

⇓ Datos



LINKADO

[linker]

Programa Ejecutable (*.exe, sin ext.)



´ EJECUCION

[loader o debugger (*)]

Resultados (*) Debugger (depurador): loader que permite ejecutar paso a paso un programa ´ y que tiene herramientas que permiten localizar donde se producen los errores.

˜ — G RUPO DE M ETODOS ´ U NIVERSIDAD DE A C ORU NA N UM E´ RICOS EN I NGENIER´I A

Lenguajes Compilados (III) I ERRORES: ♣ de Planteamiento ˜ que impiden que el programa funcione correctamente. Errores conceptuales o de diseno

´ ♣ de Compilacion Errores gramaticales que impiden compilar el programa fuente y generar el correspondiente programa objeto.

♣ de Linkado Errores estructurales que impiden linkar el programa objeto y generar el correspondiente programa ejecutable.

´ (“run–time”) (*) ♣ de Ejecucion Errores de tipo general que impiden ejecutar el programa ejecutable y obtener los resultados.

´ dif´ıcil de encontrar. (*) Bug: error de ejecucion

˜ — G RUPO DE M ETODOS ´ U NIVERSIDAD DE A C ORU NA N UM E´ RICOS EN I NGENIER´I A

Lenguajes Compilados (IV) Errores de Planteamiento ˜ que impiden que el programa funcione Errores conceptuales o de diseno correctamente: ♠ uso de algoritmos inadecuados o incorrectos, ♠ errores en los datos.

˜ — G RUPO DE M ETODOS ´ U NIVERSIDAD DE A C ORU NA N UM E´ RICOS EN I NGENIER´I A

Lenguajes Compilados (V) ´ Errores de Compilacion Errores gramaticales que impiden compilar el programa fuente y generar el correspondiente programa objeto: ´ ♠ errores ortograficos (instrucciones mal escritas) o ´ ♠ errores sintacticos (proposiciones mal construidas).

˜ — G RUPO DE M ETODOS ´ U NIVERSIDAD DE A C ORU NA N UM E´ RICOS EN I NGENIER´I A

Lenguajes Compilados (VI) Errores de Linkado Errores estructurales que impiden linkar el programa objeto y generar el correspondiente programa ejecutable: ♠ dimensionamiento incorrecto de la memoria o ♠ falta de alguna de las subrutinas/funciones.

˜ — G RUPO DE M ETODOS ´ U NIVERSIDAD DE A C ORU NA N UM E´ RICOS EN I NGENIER´I A

Lenguajes Compilados (VII) ´ (“run–time”) Errores de Ejecucion Errores de tipo general que impiden ejecutar el programa ejecutable y obtener los resultados: ♠ errores ocultos que no fueron detectados ni al compilar ni al linkar, ♠ incapacidad del ordenador para ejecutar el programa ´ memoria de la que hay disponible o B el programa requiere mas B falta alguna de las subrutinas/funciones del sistema,

´ del ♠ errores ocultos de cualquiera de los tipos anteriores que impiden la ejecucion programa, ´ prohibida B conducen a una operacion ´ por 0, ra´ız cuadrada de un numero (ej: division negativo) o ´ B se producen errores en la lectura de datos.

˜ — G RUPO DE M ETODOS ´ U NIVERSIDAD DE A C ORU NA N UM E´ RICOS EN I NGENIER´I A

BASIC (I) BASIC ´ ordenadores, mas ´ rapidos, ´ ´ pequenos, ˜ ´ baratos. . . ♥ Mas mas mas ´ mas ´ comoda: ´ ♥ Interaccion MONITORES CRT frente a tarjetas perforadas. ´ se pone al alcance de personas sin experiencia ♣ La programacion ´ tecnica ´ con poca formacion y sin mentalidad anal´ıtica. (*) ˜ sobre el FORTRAN ♣ Algunas opiniones de nuevo cuno ♠ Es muy ¡dif´ıcil! programar en este lenguaje. ♠ Es muy ¡fastidioso! tener que compilar y linkar antes de ejecutar. ♣ El estilo del lenguaje se ha quedado anticuado. ´ de memoria es demasiado r´ıgida. ♣ La gestion

(*) Carecer de estas capacidades no tiene por que´ ser malo (en general), ´ de algunas actividades pero dificulta la realizacion ˜ sistemas que funcionen o programar ordenadores). (como calcular integrales, disenar

˜ — G RUPO DE M ETODOS ´ U NIVERSIDAD DE A C ORU NA N UM E´ RICOS EN I NGENIER´I A

BASIC (II)

´ lo adivina? (*) ♣ BASIC proviene de . . . ¿a ver quien ´ de las formulas ´ ♥ La codificacion es tan sencilla como en FORTRAN. ♣ La sintaxis es muy parecida a la del FORTRAN con algunas novedades que se deben a la nueva forma de trabajar. (**)

(*) BASIC

=⇒ Beginner’s All-purpose Symbolic Instruction Code.

(**) Cada l´ınea tiene ahora un numero. ´ Los numeros de l´ınea establecen el orden en el que deben interpretarse las instrucciones. Se pueden intercalar una ´ nueva l´ınea en cualquier parte del programa: basta con escribir la ll´ınea mediante el teclado, comenzando con un numero intermedio entre los de otras dos l´ıneas correlativas. ´

˜ — G RUPO DE M ETODOS ´ U NIVERSIDAD DE A C ORU NA N UM E´ RICOS EN I NGENIER´I A

BASIC (III) ´ de memoria es flexible, pero impredecible. (*) ♣ La gestion ♣ Las instrucciones de control son similares a las del FORTRAN. ´ Basicamente. .. ♣ GOTO incondicional ♦ IF – THEN ♥ FOR – NEXT ♠ GOSUB

´ PROGRAMA PRINCIPAL ♣ Modelo de implementacion: SUBRUTINA = parte del programa principal ♠ GOSUB equivale a un GOTO con retorno.

(*) La memoria se dimensiona sobre la marcha. Por tanto, se pueden producir detenciones por falta de recursos, “cuelgues” del sistema, etc.

˜ — G RUPO DE M ETODOS ´ U NIVERSIDAD DE A C ORU NA N UM E´ RICOS EN I NGENIER´I A

BASIC (IV) I Ejemplo: Programa BASIC para calcular factoriales

10 20 30 40 50 60 70 80 90

REM PROGRAMA PARA CALCULAR FACTORIALES READ N NFAC=1 IF (N 0; nf *= n--); printf("%d", nf); }

˜ — G RUPO DE M ETODOS ´ U NIVERSIDAD DE A C ORU NA N UM E´ RICOS EN I NGENIER´I A

Lenguaje C (VIIIb) I Ejemplo: Programa en Lenguaje C (compactado) para calcular factoriales

#include main(){ int n,nf;scanf("%d",&n);for(nf=1;n>0;nf*=n--);printf("%d",nf); }

˜ — G RUPO DE M ETODOS ´ U NIVERSIDAD DE A C ORU NA N UM E´ RICOS EN I NGENIER´I A

Tendencias actuales (I) ´ ORIENTADA A OBJETOS PROGRAMACION ´ que se basa en la utilizacion ´ de I Paradigma de programacion • objetos y de • sus interacciones.

´ I Se basa en varias tecnicas, entre las que se incluyen: • herencia, • modularidad, • polimorfismo, y • encapsulamiento.

˜ — G RUPO DE M ETODOS ´ U NIVERSIDAD DE A C ORU NA N UM E´ RICOS EN I NGENIER´I A

Tendencias actuales (II) LENGUAJE C++ I Lenguaje de NIVEL MEDIO. (*) ˜ I Disenado por Bjarne Stroustrup para Bell Laboratories hacia 1980, a partir del Lenguaje C. I En esencia es una de las extensiones del Lenguaje C (**) ´ conocida) (tal vez la mas ´ orientada a objetos. que incluye herramientas de programacion

´ combina elementos caracter´ısticos de lenguajes tanto de alto como de bajo nivel. (*) Su organizacion (**) C++ es muy habitual en entornos Linux. C++ y C# son muy habituales en entornos Windows. Objective C es muy habitual en entornos Mac OS.

˜ — G RUPO DE M ETODOS ´ U NIVERSIDAD DE A C ORU NA N UM E´ RICOS EN I NGENIER´I A

Tendencias actuales (III) JAVA I En esencia es otra de las extensiones del Lenguaje C ´ orientada a objetos que incluye herramientas de programacion y de la que se han eliminado operaciones de bajo nivel (para evitar que se cometan errores). ˜ 90. I Fue desarrollada por Sun Microsystems a principios de los anos ´ de aplicaciones y a la I Esta´ especialmente orientado a la ejecucion ´ a traves ´ de Internet. visualizacion

˜ — G RUPO DE M ETODOS ´ U NIVERSIDAD DE A C ORU NA N UM E´ RICOS EN I NGENIER´I A

Tendencias actuales (IV) Fortran 90/95/2003 ´ ... ♣ El Fortran se acomoda a las nuevas tendencias (una vez mas)

♥ El lenguaje existe como standard ANSI a partir de 1992. ´ ♥ Se incorporan conceptos propios de otros lenguajes y estilos de programacion: ´ ALLOCATABLE e instruccion ´ ALLOCATE. (*) ♦ Declaracion ´ de 80 caracteres ´ ♥ Archivos fuente tipo Free-form (mas por l´ınea).

♣ Punteros, recursividad, operaciones vectoriales, prog. orientada a objetos, etc.

♥ Se procura eliminar inconsistencias internas y causas de errores frecuentes: ♠ En Fortran 90 se declaran obsoletas algunas instrucciones, aunque se permite su uso. ´ (**) En Fortran 95 se proh´ıbe su utilizacion.

´ potente y versatil ´ que sus precedentes, pero tambien ´ ♥ El nuevo lenguaje es mas ´ dif´ıcil de aprender, ♠ menos intuitivo y mas

[=⇒ no gusta a programadores noveles]

♠ menos atractivo que otros lenguajes modernos. [=⇒ no gusta a programadores profesionales]

´ (*) Es posible dimensionar memoria adicional en tiempo de ejecucion. (**) Algunos programas antiguos no pueden ser recompilados directamente.

˜ — G RUPO DE M ETODOS ´ U NIVERSIDAD DE A C ORU NA N UM E´ RICOS EN I NGENIER´I A

Curiosidades (I) I The Hello World Collection http://www.roesler-ac.de/wolfram/hello.htm

˜ — G RUPO DE M ETODOS ´ U NIVERSIDAD DE A C ORU NA N UM E´ RICOS EN I NGENIER´I A

Curiosidades (IIa) ´ ´ los lenguajes de programacion ´ en el futuro? I ¿Como seran

Cartel de FUTURAMA (izda.) y Robot BENDER (derecha). [Matt Groening y David X. Cohen, FOX Broadcasting Company]

˜ — G RUPO DE M ETODOS ´ U NIVERSIDAD DE A C ORU NA N UM E´ RICOS EN I NGENIER´I A

Curiosidades (IIb) ´ ´ los lenguajes de programacion ´ en el futuro? I ¿Como seran

BENDER con FRY (izda.) y BENDER (derecha) bebiendo. [Matt Groening y David X. Cohen, FOX Broadcasting Company]

˜ — G RUPO DE M ETODOS ´ U NIVERSIDAD DE A C ORU NA N UM E´ RICOS EN I NGENIER´I A

Curiosidades (IIc) ´ ´ los lenguajes de programacion ´ en el futuro? I ¿Como seran

Caja (izda.) y botella (derecha) de OLDE FORTRAN. [Matt Groening y David X. Cohen, FOX Broadcasting Company]

˜ — G RUPO DE M ETODOS ´ U NIVERSIDAD DE A C ORU NA N UM E´ RICOS EN I NGENIER´I A

Get in touch

Social

© Copyright 2013 - 2024 MYDOKUMENT.COM - All rights reserved.